我正在尝试在父div
内指定div
的字体大小,与父div
外的div
相同。
我有
HTML
<div id='parent' >
<div class='testclass'><b>title</b><br> contents here</div>
</div>
<div class='testclass'><b>title2</b><br> contents here</div>
<div class='testclass'><b>title3</b><br> contents here</div>
<div class='testclass'><b>title4</b><br> contents here</div>
我的css
parent{
font-size:.8em;font-weight:bold;
}
.testclass{
font-size:1.1em
}
父div
外的div
字体大小正确(1.1em
),但父div
内的字体大小小于div
外的字体大小。但是,如果我在testclass
中指定15px而不是em。一切正常。
有什么办法解决这个问题?非常感谢。
答案 0 :(得分:3)
我假设您父母的CSS规则实际上是:
#parent {
font-size:.8em;font-weight:bold;
}
在这种情况下,这是有道理的。你有两种简单的方法可以使.testclass
覆盖`#parent#'的选择器:
为testclass
#parent .testclass, .testclass {...}
制作另一个更具体的选择器,如.testclass
使用!important 标记覆盖.testclass{ font-size:1.1em !important;}
覆盖的字体大小声明:{{1}}
答案 1 :(得分:0)
+1开始了。但是在IE7 / FF3.6中你也可以使用>
来指定第一级孩子。所以以下内容也将针对正确的div
#parent > div {
font-size:.8em;font-weight:bold;
}
甚至
#parent > .testclass {
font-size:.8em;font-weight:bold;
}
答案 2 :(得分:0)
em
是相对的。
我的意思是它们堆叠,有点像百分比。
如果你说:
body { font-size : 20px; }
#parent { font-size : 2em; }
#child { font-size : 3em; }
你实际在做的是说(注意,ems并不完全意味着px--它们意味着M测量,但是出于所有意图和目的,它在这里实际上是相同的):
Body = 20px;
Parent = Body * 2; //200% of the M-measurement of Body's font-size.
Child = Parent * 3; // 300% of the M-measurement of Parent's font-size,
// which would be 600% of Body at this point
相反,您可能正在寻找的是:
Body = 20px;
Parent = Body * X;
Child = Parent * 1/X;
例如:
Body = 20px;
Parent = 2em; // 40px, effectively
Child = 0.5em; // This 0.5 is referring to half of Parent's em
// As the parent was 2x body, this sets Child to body's height
Body = 15px;
Parent = 0.8em; // 15 * 0.8 = 12
Child = 1.25em; // 12 * 1.25 = 15
CSS3解决方案是使用rem
s。不是乐队。
rem
相对于根 始终 。
所以如果你设置:
Child = 1rem;
它将等于文档基本大小的100%,无论其父(或祖父母)的设置是什么(然后您可以使用em
相对大小的子元素。)
请注意,这是CSS3,因此虽然FireFox和Chrome广泛支持rem
,但它只是IE9 +。
这就是为什么我也建议使用数学入门书。