Я нашел ошибку в IE9, но поиск в Google еще не помог найти решение.
Следующее работает отлично в FF 3 + 4, Chrome, Opera и даже IE8, но не в IE9.
HTML:
<div class="outer">
<p class="inner">Lorem ipsum dolor</p>
</div>
CSS:
div p {
font-size: 1.2em;
}
div p:after {
content: " sit amet";
}
div p:after {
font-size: 1.3em;
}
div.outer p:after,
div p.inner:after {
font-size: 3em;
}
"Сит-амет" в IE9 огромный , как кажетсяумножать размер шрифта снова и снова.Невозможно перезаписать его с помощью «! Important» или других средств повышения специфичности (как, например, «div.outer» уже должен это делать).Даже кажется, что он умножается на в том же объявлении , то есть div.outer p:after, div p.inner:after
будет умножаться не на 3, а на 9!
(Обратите внимание, что "внутренний" и "внешний"«классы здесь не нужны. То же самое происходит, объявляя div p {}
снова и снова. Но это имеет смысл только с классами в качестве реального примера.)
Вот тестовая страница: http://dl.dropbox.com/u/4667354/temp/ie9-bug.html
Есть ли какое-нибудь решение?
Редактировать:
Чтобы уточнить два недопонимания:
- Ошибка не обычное поведение, когда дочерние элементы умножают размер шрифта своего родителя при использовании
em
.Ошибка в том, что размеры шрифта в сгенерированном контенте не могут быть перезаписаны и будут все равно увеличиваться при попытке.Т.е. установка размера шрифта в div p:after
когда-то работает, но установка его снова умножает вместо того, чтобы перезаписывать . - Чтобы лучше понять, в чем проблема (если у вас нетIE9 под рукой), вот два скриншота тестовой страницы: в IE8 и любом другом современном браузере и в IE9 .