У меня есть некоторые меню CSS на моем сайте, которые расширяются с :hover
(без js)
Это работает полуповрежденным способом над продуктами компании Apple, например, касание активируется :hover
управляйте и разверните меню, но затем касающийся в другом месте не удаляет :hover
. Также, если существует ссылка в элементе, который является :hover
'редактор, необходимо коснуться дважды для активации, ссылка (сначала касаются триггеров :hover
, второе касание инициировало ссылку).
Я смог заставить вещи работать приятно над iPhone путем привязки touchstart
событие.
Проблема состоит в том, что иногда мобильное сафари все еще принимает решение инициировать :hover
правило из CSS вместо моего touchstart
события!
Я знаю, что это - проблема потому что, когда я отключаю весь :hover
правила вручную в CSS, мобильное сафари работает отлично (но регулярные браузеры, очевидно, больше не делают).
Есть ли способ динамично "отменить" :hover
правила для определенных элементов, когда пользователь находится на мобильном сафари?
Посмотрите и сравните поведение iOS здесь: Примечание к http://jsfiddle.net/74s35/3/: то, что только некоторые свойства CSS инициировали два поведения по щелчку, например, display:none;, но не фон: красный; или текстовое художественное оформление: подчеркивание;
вот код, в который вы захотите поместить его
// a function to parse the user agent string; useful for
// detecting lots of browsers, not just the iPad.
function checkUserAgent(vs) {
var pattern = new RegExp(vs, 'i');
return !!pattern.test(navigator.userAgent);
}
if ( checkUserAgent('iPad') ) {
// iPad specific stuff here
}