В iOS Safari (я не думаю, что имеет значение, какая версия iOS, но я тестирую на iOS (Safari) 11), если у меня есть <div>
, расположенный над элементом, который имеет эффект :hover
, а <div>
имеет событие, которое заставляет его исчезать при нажатии, тогда моя ссылка "внизу" получает эффект зависания, применяемый после удаления элемента из DOM.
См. ниже для анимированного GIF того, что я говорю:
Я дал кнопке прозрачный фон, чтобы вы могли видеть ссылку позади нее. Когда я нажимаю кнопку на месте, где находится ссылка не, ссылка (т.е. Some link
) остается синей и не меняется на ее кратковременное состояние.
Однако, когда я нажимаю div
в месте, которое происходит непосредственно по ссылке, после удаления div
из DOM, ссылка получает свое зависающее состояние.
Щелчок по ссылке после каждого из них правильно запускает событие on.click
(окно предупреждения).
Я не вижу эту проблему в android в Chrome (см. пример ниже):
Ниже вы также найдете образец HTML/CSS/JS, который я использовал; настройка довольно проста.
Я бы хотел, чтобы iOS действовал так же, как Android Chrome: щелчок по элементу, который сразу же удаляется из DOM, не должен запускать состояние :hover
для элемента сразу за ним.
document.addEventListener("DOMContentLoaded", function ready() {
var button = document.querySelector(".button");
button.addEventListener("click", function() {
button.parentNode.removeChild(button);
});
document.querySelector('a').addEventListener("click", function() {
window.alert('clicked!');
});
});
a:link { color: blue }
a:visited { color: blue }
a:hover { color: red }
a:active { color: green }
.button {
background: rgba(100, 0, 0, .4);
position: absolute;
top: 2px;
left: 2px;
z-index: 1;
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
border-radius: 5px;
}
.button:hover {
background: rgba(0, 100, 0, .4);
cursor: pointer;
}
<a href="#">Some link</a>
<div class="button">Click me!</div>