Подтвердить что ты не робот

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

Я пытаюсь сделать кнопку, так что, когда пользователь нажимает на нее, она меняет свой стиль, пока кнопка мыши удерживается. Я также хочу, чтобы он изменил свой стиль аналогичным образом, если он затронут в мобильном браузере. По-видимому, очевидная вещь для меня заключалась в использовании CSS: активного псевдокласса, но это не сработало. Я попытался: сосредоточиться, и это тоже не сработало. Я попробовал: наведите указатель мыши, и он, похоже, сработал, но он сохранил стиль после того, как я снял палец с кнопки. Все эти наблюдения были на iPhone 4 и Droid 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.

4b9b3361

Ответ 1

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

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

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

Вот цитата из приведенной выше ссылки

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

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

Ответ 2

Так как мобильная связь не дает обратной связи, я хочу, как пользователь, видеть мгновенную обратную связь при прослушивании ссылки. Я заметил, что -webkit-tap-highlight-color является самым быстрым для ответа (субъективным).

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

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