2012-08-02 92 views
1

我目前的项目完全基于ems。CSS:以ems计算:font-size内的字体大小?

HTML

<div class="tiny"> 
    This is some tiny text which is tiny. 
</div> 

<div class="small"> 
    This is some small text which is small. 
    <div class="tiny"> 
     And this is some tiny text inside small text which should be as tiny as the other tiny one. 
    </div> 
</div> 

CSS

.tiny { 
    font-size:0.7em; 
    line-height:1.7; 
} 

.small { 
    font-size:0.8em; 
    line-height:1.3em; 
} 

在这种情况下,文本small内的tiny文本比正常tiny文本小。

首先,为什么?其次,我怎样才能解决这个问题,或使它的大小相同?

http://jsfiddle.net/DFKtF/

预先感谢您!

+2

由于您标记了您的问题[css3],因此您可以使用'rem',因此它始终相对于根元素的字体大小,而不是父元素。当然,浏览器的支持并不是那么好,所有... – BoltClock 2012-08-02 17:07:16

+0

'rem'完成了这项工作!真棒! – matt 2012-08-02 17:40:36

回答

3

em单位主要表示元素本身的字体大小,但在值为font-size(这是没有意义的),它表示父元素的字体大小。因此,在您的示例中,数量0.7em表示封装元素的字体大小的0.7倍,该元素已经具有减小的字体大小。

要处理这个问题,只需选择相应的编号即可。如果您想要的文本是复制文本字体大小的0.7倍,并且封装元素的字体大小是复印文本大小的0.8倍,则需要编号为0.7/0.8,即.small应具有font-size:0.875em

0

请勿使用em,请使用px。或仔细计算。当用于指定字体大小时,em单位指的是父元素的字体大小。

+0

downvoting的原因是? – 2012-08-02 17:16:51

+0

推荐'px'作为解决方案,当有人正在做正确的事情时,使用'em',并需要关于*的帮助*。 – 2012-08-02 17:21:31

+0

我说“或仔细计算”,因为用像素做事比用计算更简单。 – 2012-08-02 17:31:35

0

.em是相对测量值,不是绝对值。