Ответ 1
Итак, проблема, с которой вы столкнулись, заключается в следующем: " :active
псевдокласс совпадает с тем, когда пользователь активирует элемент". Отдельный элемент <div>
не может быть активирован пользователем и поэтому не будет соответствовать псевдо-классу :active
.
Если вы посмотрите совместимость браузера в статье :active
MDN, вы увидите, что:
[1] По умолчанию Safari Mobile не использует активное состояние: если не существует обработчик события
touchstart
соответствующего элемента или<body>
.
MDN имеет список псевдо классов, который можно использовать, и вы можете найти тот, который лучше подходит для вашей ситуации или добавляет touchstart
событие должно сделать трюк в Safari.
Мне удалось заставить ваш plnkr работать очень быстро, изменив элемент <div class="hover-block"></div>
на <button class="hover-block"></button>
и изменив .hover-block:active {
на .hover-block:focus {
. Я также добавил display: block; border: 0;
в .hover-block
.
Вы по понятным причинам не захотите изменить свой <div>
на <button>
, чтобы заставить ваш эффект работать, но используя элемент, который можно активировать, используя другой псевдокласс или добавив событие который позволяет активировать ваш целевой браузер, вы должны иметь возможность добиться эффекта, который вы ищете на мобильных устройствах.
Надеюсь, что это поможет!