работает над преобразованием сайта нашей компании в нечто более отзывчивое, поэтому переработав css, чтобы использовать em вместо проверенного и истинного px.
Проблема, с которой я сталкиваюсь, - наследование font-size, и я ищу лучшие методы для этой проблемы.
Вот как я решаю проблему на данный момент.
jsfiddle для вашего удовольствия от просмотра
HTML
<h3>Heading with a <a href="#">Link</a></h3>
<p>this is a paragraph with a <a href="#">Link</a> inside of it</p>
<a href="#">this is a link outside the paragraph</a>
CSS
body {font:normal 100% sans-serif;}
p {font:normal 1.5em sans-serif; margin-bottom:.5em;}
h3 {font:bold 3em serif; margin-bottom:.5em; }
a:link {font-size:1.5em;}
p a, li a, h1 a, h2 a, h3 a, h4 a, h5 a,
h6 a, dl a, blockquote a, dt a, dd a, td a {
font-size:1em !important;
}
Я понимаю, что em связаны с родительским font-size. поэтому, если я устанавливаю p{font-size:1.5em;}, а также устанавливаю a:link{font-size:1.5em;}, а мой <a> находится за пределами моего <p>, тогда они будут иметь одинаковый относительный размер, отличный.
Но если я затем поместить <a> внутри <p>, размер шрифта встроенного <a> теперь больше, так как он 1.5em больше, чем <p>. Чтобы преодолеть это, я установил последний стиль со строкой p a, li a, h1 a,......{font-size:1em !important;}. Поскольку a:link имеет более высокую специфичность, чем просто p a, мне пришлось использовать !important (не фанат !important), также я не могу использовать font-size:inherit;, как мы должны поддерживать, осмелюсь сказать, ie6 (все еще есть 15% трафика, мы биотехнологии, а некоторые компании просто отказываются обновляться).
Итак, мой вопрос для вас таков. Я собираюсь сделать это правильно в борьбе с тегами внутри тегов, чтобы моя типография не распалась? Как только я написал последний стиль, я подумал про себя, это может стать кошмаром для поддержания! Я хотел бы использовать rem, но поддержка браузера не существует для части пользователей.
Как вы решаете эту проблему в своем собственном css и каким будет подход "наилучшей практики".