HTML-элемент сенсорного устройства: состояние при наведении

Есть кнопка HTML с 3 фонами - каждый для нормального состояния, при наведении и клике. Конечно, он отлично работает с не сенсорным устройством. Если кнопка нажата на сенсорном устройстве, состояние:hover также срабатывает и остается до касания другого элемента.

Можно ли программно удалить состояние hover из элемента после его нажатия или запретить его активацию на сенсорных устройствах?

Извините, но предложения по обнаружению событий mouseover и mouseout и добавления искусственных классов не принимаются.

Одним из возможных решений является добавление класса "без прикосновения" к элементу html заранее и удаление его, если обнаружено только сенсорное устройство. В этом случае селектор CSS "html.no-touch button:hover" не будет соответствовать сенсорному устройству.

Знаете ли вы более элегантные решения, которые вы можете предложить?

2 ответа

Я бы попробовал переписать :hover укажите в дополнительной таблице стилей для портативных устройств, таких как:

<link rel="stylesheet" type="text/css" href="handheld.css" media="handheld">

И в handheld.css положить что-то вроде:

#some_selector:hover {
    background: none;    /* if you are setting a background in the main css file for example */
}

Тем не менее, я не уверен, если handheld и сенсорный экран абсолютно одинаковы, могут быть устройства, которые имеют сенсорный экран и не считаются карманными.

Изменить: Кажется, вы не можете обнаружить устройства с сенсорным экраном 100% надежно, также см. Этот вопрос.

Кажется, что эту проблему можно решить, переписав состояние:hover для данного элемента в медиа-запросе - посмотрите этот вопрос:

CSS-наведение не игнорируется на устройствах с сенсорным экраном

Другие вопросы по тегам