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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Я бы попытался перезаписать состояние :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%, см. Также этот вопрос .

0 голосов
/ 25 июня 2014

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

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

...