Как я моделирую парение с касанием в сенсорных браузерах?

С некоторым HTML как это:

<p>Some Text</p>

Затем некоторый CSS как это:

p {
  color:black;
}

p:hover {
  color:red;
}

Как я могу позволить долгому касанию к сенсорному устройству копировать парение? Я могу изменить разметку/использование JS и т.д., но не могу думать о простом способе сделать это.

119
задан Rich Bradshaw 17 May 2010 в 18:27
поделиться

4 ответа

Хорошо, я разобрался! Это включает в себя небольшое изменение CSS и добавление JS.

Использование jQuery для упрощения:

$(document).ready(function() {
    $('.hover').on('touchstart touchend', function(e) {
        e.preventDefault();
        $(this).toggleClass('hover_effect');
    });
});

По-английски: когда вы начинаете или завершаете касание, включайте или выключайте класс hover_effect .

Затем в вашем HTML добавьте указатель на класс ко всему, с чем вы хотите, чтобы это работало. В вашем CSS замените любой экземпляр:

element:hover {
    rule:properties;
}

на

element:hover, element.hover_effect {
    rule:properties;
}

И просто для большей полезности добавьте это также в свой CSS:

.hover {
-webkit-user-select: none;
-webkit-touch-callout: none;        
}

Чтобы браузер не просил вас скопировать / сохранить / выбрать изображение или что-то еще.

Легко!

171
ответ дан 24 November 2019 в 01:46
поделиться

Один из способов сделать это - создать эффект наведения при начале касания, а затем удалить эффект наведения при перемещении или завершении касания.

Это то, что Apple должна сказать о сенсорном управлении в целом, раз уж вы упомянули iPhone.

1
ответ дан 24 November 2019 в 01:46
поделиться

Я уверен, что без JS для конкретного устройства (а точнее, браузера) вам не повезло.

Edit: думал, что вы хотите избежать этого, пока я не перечитаю ваш вопрос. В случае Mobile Safari вы можете зарегистрироваться, чтобы получать все события касания, аналогично тому, что вы можете делать с помощью собственных UIView-ов. Не могу найти документацию прямо сейчас, но постараюсь.

1
ответ дан 24 November 2019 в 01:46
поделиться

Чтобы ответить на ваш главный вопрос: «Как имитировать наведение касанием в браузерах с сенсорным экраном?»

Просто разрешите «щелкнуть» элемент (нажав на экран), а затем активируйте hover с использованием JavaScript.

var p = document.getElementsByTagName('p')[0];
p.onclick = function() {
 // Trigger the `hover` event on the paragraph
 p.onhover.call(p);
};

Это должно работать, пока на вашем устройстве есть событие hover (даже если оно обычно не используется).

Обновление: Я только что протестировал эту технику на своем iPhone, и, похоже, она работает нормально. Попробуйте здесь: http://jsfiddle.net/mathias/YS7ft/show/light/

Если вы хотите использовать «долгое касание» для запуска наведения вместо этого, вы можете использовать приведенный выше фрагмент кода как отправная точка и получайте удовольствие от таймеров и прочего;)

25
ответ дан 24 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: