在CSS中设置字体大小时,为什么不将<body>设置为6.25%,以便px和em单位相同?

Kar*_*rim 3 css fonts

我现在正在阅读将字体设置<body>为62.5%的好习惯,以便稍后您可以使用像素单位的10分频转换.

但我想知道:为什么不设置<body>为6.25%?假设默认浏览器字体大小为16像素,则可以使用与像素单位相同的em单位尺寸.

例如

body {
    font-size: 6.25%; /* 1px */
}

p {
    font-size: 12em; /* 12px */
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*ite 5

两个问题.

  1. 我似乎记得如果你使用像ems这样的相对单位设置你的初始字体大小很小,如果用户调整文本Internet Explorer的大小,字体大小将在设置之间发生很大的变化.

    这是一个奇怪的现象,我不确定它是否仍然出现在IE中,也不是你担心IE中用户改变字体大小.

  2. 每次嵌套元素时,您都可能会谴责自己重新设置字体大小.

    我写给另一个问题的答案尽力解释这一点,但简而言之,如果你在ems中做你的字体大小,你最好font-size尽可能少地使用它,而不是让它变得如此简单font-size当你这样做时使用.

    例如:假设您希望<li>网站上的所有内容都使用12像素的字体大小.

    li {
        font-size: 12em;/* 12px */
    }
    
    Run Code Online (Sandbox Code Playgroud)

    如果您然后使用以下HTML:

    <ul>
        <li>
            <ul>
                <li>
                ...
    
    Run Code Online (Sandbox Code Playgroud)

    然后你需要这样做:

    li li {
        font-size: .083em;/* 12px */
    }
    
    Run Code Online (Sandbox Code Playgroud)

    否则内部<li>s将是12像素*12像素= 144像素!

    Ems不是像素.Ems是指最近祖先的字体大小的百分比,而像素是指实际像素.在我看来,试图将ems变成像素比其他选择更令人困惑.您最好设置<body>为网站上最常用的字体大小,只需在需要时更改,并在基于em的声明后将预期大小(以像素为单位)放在注释中.(那样,如果你出错了就更容易告诉以后.)

    (当然,我们避免像素的唯一原因是因为当用户在浏览器中更改字体大小时,IE不会更改以像素为单位的文本大小.如果您不担心,那么只需使用像素.)