Ответ 1
Появляется регрессия
Это похоже на законную регрессию в Internet Explorer 10. Как указано в MSDN, поскольку пользователям Internet Explorer 7 удалось настроить таргетинг состояние зависания любого элемента, а не только a
.
Любопытно, что я попробовал псевдо-класс :active
, и, похоже, он работает так, как ожидалось. Далее, установив, что это регрессия, вы можете видеть, что, изменяя это на элемент a
, переход происходит, как ожидалось (поскольку исторически a
и :hover
идут рука об руку).
Дополнительные рабочие места
Есть только несколько решений, о которых я могу думать в этот момент (ожидая, что это будет исправлено):
- Используйте пустое исправление
p:hover {}
. - Измените свою разметку на целевой
::after
на дочерний элементp
. - Измените селектор, чтобы использовать комбинаторы.
Первый элемент - это то, что вы указали в своем вопросе, и очень привлекательно, учитывая его простоту. Фактически, вы можете использовать :hover{}
и получить те же результаты (вероятно лучшее решение).
Второй элемент также полезен, но немного менее желателен, поскольку требует модификации разметки, что не всегда возможно, и быть откровенным, немного глупым.
Последний вариант несколько интересен. Если вы измените селектор, основанный на отношениях родного брата, он волшебным образом начнет работать снова. Например, предположим, что в теле есть несколько элементов:
<h1>Hello, World</h1>
<p>This is my first paragraph. it does not animate.</p>
<p>This animates, with a pseudo-element.</p>
Теперь мы можем использовать комбинаторы для таргетинга на второй абзац:
p+p:hover::after {}
Этот селектор будет соответствовать любому абзацу, следующему абзацу, хотя это нежелательно. На этом этапе мы могли бы рассмотреть :nth-child
или :nth-of-type
, чтобы дополнительно указать, какой пункт мы хотим, даже используя общий комбинированный комбинатор:
h1~p:nth-of-type(2):hover::after {} /* Targets second <p> nearest <h1> */
Но в идеале мы бы нацелились на класс:
h1~.hoverme:hover::after {} /* Targets <p class="hoverme"> */
Решение двух Char?
Еще один шаг, возможно, вы не хотите, чтобы я был заблокирован, явно предоставляя общий тег для сестер. Вы также можете использовать универсальный селектор:
*~.hoverme:hover::after {} /* Targets <p class="hoverme"> among siblings */
Для этого требуется, чтобы тег p
имел родных братьев и сестер, которые обычно ожидаются. Очень редко документ состоит не более чем из одного абзаца абзаца.
Я понимаю, что они не идеальны, но на данный момент это средство для достижения цели. Будем надеяться, что это будет разрешено в будущих выпусках Internet Explorer.