: сенсорный CSS псевдо-класс или что-то подобное?


Я пытаюсь создать кнопку, так, что когда пользователь нажимает на нее, она меняет свой стиль, пока кнопка мыши удерживается. Я также хочу, чтобы он изменил свой стиль аналогичным образом, если он коснулся в мобильном браузере. Казалось бы, очевидной вещью для меня было использовать CSS :активный псевдокласс, но это не сработало. Я попробовал: сосредоточься, и это тоже не сработало. Я попробовал :парить, и это, казалось, работало, но он сохранил стиль после того, как я снял палец с кнопки. Все эти наблюдения были на iPhone 4 и дроиде 2.

есть ли способ повторить эффект на мобильных браузерах (iPhone, iPad, Android и, надеюсь, другие)? Сейчас я делаю что-то вроде этого:

<style type="text/css">
    #testButton {
        background: #dddddd;
    }
    #testButton:active, #testButton.active {
        background: #aaaaaa;
    }
</style>

...

<button type="button" id="testButton">test</button>

...

<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.1.min.js'></script>
<script type='text/javascript'>
    $("*").live("touchstart", function() {
      $(this).addClass("active");
    }).live("touchend", function() {
      $(this).removeClass("active");
    });
</script>

: активный псевдокласс предназначен для настольных браузеров, а активный класс-для сенсорных браузеров.

Мне интересно, есть ли более простой способ сделать это, не привлекая Javascript.

2 72

2 ответа:

нет такого понятия как :touch в спецификациях W3C,http://www.w3.org/TR/CSS2/selector.html#pseudo-class-selectors

:active должно работать, я думаю.

заказ на :active/:hover псевдо класс важен для его правильной работы.

вот цитата из этой ссылки выше

интерактивные агенты пользователей иногда изменяют визуализацию в ответ на действия пользователя. CSS предоставляет три псевдо-класса для обычных случаев:

  • псевдокласс :hover применяется, когда пользователь обозначает элемент (с манипулятором), но не не активировать его. Например, визуальный агент пользователя может применить это псевдо-класс при наведении курсора (мыши указатель) нависает над сгенерированным полем по стихии. Агенты пользователей нет поддержка интерактивных медиа не придется поддерживать этот псевдокласс. Некоторые соответствующие агенты пользователей поддерживают интерактивные носители могут не быть способен поддержите этот псевдо-класс (например, ручка устройство.)
  • : активный псевдокласс применяется, когда элемент активируется пользователь. Например, между раз пользователь нажимает кнопку мыши кнопка и отпускает ее.
  • псевдокласс :focus применяется, когда элемент имеет фокус (принимает события от клавиатуры или другие формы ввода текста).

-webkit-tap-highlight-color Это самый быстрый ответ (субъективный).

добавьте следующее в свое тело, и ваши ссылки будут иметь эффект нажатия.

body {
    -webkit-tap-highlight-color: #ccc;
}