IE7 CSS наследование не работает - PullRequest
34 голосов
/ 04 февраля 2009

Я установил некоторый стиль для тегов h2 (цвет, размер шрифта и т. Д.), Но когда я помещаю внутрь тег «A», стиль становится ссылкой. Мой HTML:

<h2>
  <a class="no-decor" href="http://localhost/xxx/">Link</a>
</h2>

Итак, как видите, я создал класс "без декора". Он должен наследовать стиль h2 для тега "a".

a.no-decor {
  color:inherit;
  font-family:inherit;
  font-size:inherit;
  font-weight:inherit;
  text-decoration:inherit;
}

В Firefox все в порядке, но IE по-прежнему показывает стиль тега «a» (подчеркивание текстового оформления и синий цвет). Я знаю, я могу установить какой-то стиль для "h2 a", но, может быть, каким-то образом можно заставить работать CSS наследуемые значения в IE7?

P.S. На IE6 тоже не поддерживает.

P.P.S. Вот такой же пример: http://www.brunildo.org/test/inherit.html

Ответы [ 4 ]

55 голосов
/ 04 февраля 2009

Нет, IE никогда не поддерживал inherit для каких-либо свойств - извините. Это было исправлено в> = IE8.

Хотя вы можете использовать исправление JavaScript для копирования свойств из h2 в a, вероятно, проще всего применить одно и то же правило стиля к обоим элементам:

h2, h2 a {
    font: something;
    color: black;
    text-decoration: none;
}

В любом случае вам не нужно устанавливать inherit для украшения текста, потому что украшение не наследуется от родителя к ребенку: эффект подчеркивания действует на родителя и распространяется от до потомка ; ребенок не может удалить его (по модулю IE ошибки). 'text-decor: none' на ребенке - правильная вещь, если только вы не хотите, чтобы потенциально два подчеркивали ...

16 голосов
/ 06 апреля 2011

1001 * попробовать *

a.no-decor{
  color:inherit;
  //color:expression(this.parentNode.currentStyle['color']);
  text-decoration:none;
}

Это избавит вас от вашего синего цвета и подчеркивания. Вы можете использовать подобное выражение для подчеркивания, но вам лучше использовать текстовое оформление: ни одно, поскольку это все унаследованное текстовое оформление, которое вам все равно дадут, и нет необходимости использовать выражения, когда это не является абсолютно необходимым (вы ' При использовании выражений произойдет снижение производительности.

4 голосов
/ 04 февраля 2009

Ошибка - это ошибка, и вы ничего не можете сделать, если не считать обходных путей.

Здесь есть тест для поддержки наследования здесь .

Вы также можете попробовать использовать скрипт типа ie7-js , который "- это библиотека JavaScript, чтобы заставить Microsoft Internet Explorer вести себя как браузер, совместимый со стандартами"

1 голос
/ 19 ноября 2013

Internet Explorer <= 7 версий не поддерживают значение <code>inherit для любых свойств, кроме direction и visibility.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...