Как заставить ссылки в IE наследовать цвет
Опубликовано: 6 февраля, 2009 | Рубрика: Кодинг | Тэги: css inheritance, баги, вёрстка, советы новичкам | 1 Комментарий »Сегодня коллега, обратившись ко мне с просьбой помочь, невольно напомнил ещё об одном «закидоне» MS IE. Суть проблемы: по замыслу дизайнера ссылка должна быть того же цвета, что и цвет текста родительского элемента. Обычно это решается просто:
1 2 3 4 5 6 7 8 9 10 | ...... <style type="text/css"> .block, .block a {color:red} </style> ...... <div class="block"> Блок текста <a href="#">наша ссылка</a></div> ...... |
Однако, в данном случае ссылка добавляется в блок динамически, причём на чужой сайт, а значит нет возможности не только как-то явно указать, но даже узнать цвет шрифта.
Простейшее решение, которое сработает во всех нормальных браузерах — указать ссылкам наследовать цвет родительского элемента.
1 2 3 4 5 6 7 8 9 | ...... <style type="text/css"> .block {color:red} </style> ...... <div class="block">Блок текста на чужом сайте <a style="color: inherit">наша ссылка</a></div> ...... |
Однако именно в IE, причём обоих версий (насчёт 8-ой не знаю, не тестировал), такой способ не сработает. И единственное решение, известное мне, это использование «выражений» (expression), для определения цвета родительского блока.
1 2 3 | <style type="text/css"> a { color: expression(this.parentNode.currentStyle.color);} </style> |
На мой взгляд, это верх идиотизма использовать javascript для таких целей, но иначе проблему не решить. Ещё раз «спасибо» разработчикам Internet Explorer.

Огромное спасибо за полезную статью!