Скажите, что у вас есть этот html:
<a href="#">
This is underlined
<span>
This isn't.
</span>
</a>
И этот css:
a:hover {
text-decoration: underline; /* I know, this is enabled by default. */
}
a:hover span {
text-decoration: none !important;
}
Почему элемент a > span все еще имеет подчеркивание. Я уверен, что вы действительно должны были отменить украшение, используя "none". Я знаю, что вы можете добиться результата, который я хочу, используя это:
<a href="#">
<span class="underlined">
This is underlined
</span>
<span>
This isn't.
</span>
</a>
плюс этот css:
a:hover {
text-decoration: none;
}
a:hover span.underlined {
text-decoration: underline;
}
Но... для меня просто не имеет смысла, почему вы не можете отменить текстовое украшение дочернего элемента. Итак, почему...?
Изменить: встроенные блоки
Согласно @amosrivera, он работает, когда вы используете встроенный блок. Я могу подтвердить это для работы в Safari и Chrome!
a:hover span{
text-decoration:none;
display:inline-block;
}
Как уже упоминалось, это работает для Safari и Chrome, но не для Firefox. Следующее решение работает для Firefox, но не для Safari и Chrome...
a:hover span{
text-decoration:none;
display:block;
}
Маленькая таблица:
CSS-Rule | Webkit | Firefox | Opera | IE
--------------------------------------------------------------------------------
display: block; | x | | ? | ?
display: inline-block; | | x | ? | ?