Поведение стилей ссылок в IE6 - PullRequest
2 голосов
/ 20 февраля 2012

Я сталкивался с этой проблемой при тестировании таблицы стилей в разных браузерах, включая IE6 (да, я знаю ..)

<head>
<style>
  a:link, a:visited, a:hover, a:active { font-weight: bold; color: #000; text-decoration: underline }
  .myclass a { color: red; text-decoration: none; }
</style>
</head>
<body>
<p>This is a <a href="1">test</a></p>
<div class="myclass">
<p>This is a <a href="2">test</a></p>
</div>
</body>

Результаты:

  • В IE6Правило .myclass a применяется только к состоянию невидимой ссылки
  • В других браузерах (FF, Chrome) правило .myclass a применяется ко всем состояниям ссылки

Я считаю, что IE6неправильно и что .myclass a, без указания псевдоклассов, должно применяться ко всем состояниям ссылок.Однако я столкнулся с этим SO вопросом , где говорится, что a эквивалентно a:link.Это будет соответствовать поведению в IE6.Однако я не могу найти официальную ссылку, подтверждающую это.

Какой из них правильный?

Обновление:

Как отмечено в комментариях, принятый ответна вопрос, упомянутый выше, был с тех пор обновлен.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Другие браузеры правы; IE6 не так.

Селектор a должен соответствовать любым элементам <a>, тогда как a:link соответствует только <a> элементам, которые являются невидимыми гиперссылками (тип документа HTML 4 определяет гиперссылки как <a> элементов с href атрибут). В спецификации нигде не указано, что a должен автоматически переводиться в a:link или наоборот.

Поскольку такого перевода не происходит, ваши два правила CSS имеют одинаково специфичные селекторы (ваш селектор классов имеет одинаковую специфичность с каждым ваших псевдоклассов). Итак, ваше второе правило должно переопределять первое правило для любых элементов <a> в пределах div.myclass, независимо от их состояния ссылки, что делает его всегда красным и без оформления текста.

Кстати, IE7 также не может применить стиль font-weight: bold, когда вы тестируете с элементом <a> в div.myclass, который не является ссылкой, даже если предполагается, что нет переопределения font-weight стиль в вашем втором правиле:

<div class="myclass">
<p>This is a <a href="2">test</a></p>
<p>This is a <a>test</a></p> <!-- does not bold on hover in IE7! -->
</div>
0 голосов
/ 20 февраля 2012

IE6 прав.Не указывать псевдокласс на a - это то же самое, что и :link.Поэтому вы должны указать стили для :link и :visited, если вы хотите что-то конкретное - :hover и :active являются необязательными.

...