我们正在努力将公司网站转换为更具有响应性的东西,因此正在重新设计 css
以使用 em
而不是经过尝试和验证的 px
。
我遇到的问题是 font-size
的继承问题,我正在寻找解决这个问题的最佳实践。
目前,这是我解决问题的方式。
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
:CSS,层叠样式表(Cascading Style Sheets)的缩写,是一种用于定义HTML、XML等文档展示方式的语言。它可以控制网页中元素的外观和布局,如字体、颜色、大小、间距、背景图像等。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>
的字体大小现在比<p>
大了1.5个em
。为了克服这个问题,我使用了最后一个样式:p a、li a、h1 a......{font-size:1em !important;}
。由于a:link
具有比单独的p a
更高的特异性,所以我必须使用!important
(不喜欢!important
),而且我不能使用font-size:inherit;
,因为我们必须支持,我敢说,ie6
(仍然有15%的流量,我们是生物技术公司,一些公司拒绝升级)。
所以我的问题是,我处理标签内的标签以避免我的排版出现问题这样做对吗?当我写完最后一个样式时,我想到了自己,这可能会变成维护的噩梦!我想使用rem
,但某些用户的浏览器不支持。
你如何解决CSS中的这个问题,有什么“最佳实践”方法。