在CSS中设置字体大小时,为什么不设置<;车身>;到6.25%,以便px和em单位相同?
我正在阅读关于如何将在CSS中设置字体大小时,为什么不设置<;车身>;到6.25%,以便px和em单位相同?,css,fonts,Css,Fonts,我正在阅读关于如何将上的字体设置为62.5%是一个很好的实践,以便以后可以使用像素单位的除以10转换 但我想知道:为什么不将设置为6.25%?然后,您可以使用与像素单位相同的em单位尺寸,假设默认浏览器字体大小为16像素 例如 如果要执行此操作,则必须确保调整页面上每个字体的大小。如果您遗漏了任何内容,默认情况下它将非常小(1px) 调整每种字体的大小可能比你想象的更令人畏惧,因为当你使用相对字体大小时,你必须非常具体。两个问题 我似乎记得,如果您使用相对单位(如ems)将初始字体大小设置得很小
上的字体设置为62.5%是一个很好的实践,以便以后可以使用像素单位的除以10转换
但我想知道:为什么不将
设置为6.25%?然后,您可以使用与像素单位相同的em单位尺寸,假设默认浏览器字体大小为16像素
例如
如果要执行此操作,则必须确保调整页面上每个字体的大小。如果您遗漏了任何内容,默认情况下它将非常小(1px) 调整每种字体的大小可能比你想象的更令人畏惧,因为当你使用相对字体大小时,你必须非常具体。两个问题
font-size
,而不是在使用font-size
时使其更易于使用
例如:假设您希望站点上的所有
都使用12像素的字体大小
li {
font-size: 12em;/* 12px */
}
如果您随后使用以下HTML:
<ul>
<li>
<ul>
<li>
...
否则,内部
s将为12像素*12像素=144像素
Ems不是像素。Ems表示最近祖先字体大小的百分比,而像素表示实际像素。在我看来,尝试将ems转换为像素比其他方法更令人困惑。您最好将
设置为网站上最常用的字体大小,仅在需要时更改,并在基于em的声明后的注释中以像素为单位添加预期大小。(这样,以后如果你出了什么问题就更容易知道了。)
(当然,我们避免使用像素的唯一原因是,当用户在浏览器中更改字体大小时,IE不会更改以像素为单位的文本大小。如果你不担心,那么就使用像素。)px
设置字体大小。如果需要更大的字体,请使用更多的px
长答案:设置基本字体的想法是让人们清楚地知道
em
s和ex
s有多大。如果您的基本字体大小是10px
,那么1.0em
就是10px
,1.2em
就是12px
,诸如此类。这似乎很简单。一旦容器改变了底部的字体大小,这个想法就失败了。如果您在div
中,字体大小设置为20px
,那么1em
会突然变大一倍
情况变得更糟了。人们开始建议使用62.5%
而不是10px
(请注意,
16*0.625=10
)。这是因为指定字体大小的百分比是解决旧版本Internet Explorer问题的一种解决方法。除非使用百分比,否则最终用户无法“放大”
但是,%
(作为默认字体应用时)是一个绝对单位。它看起来像是一个相对的单位,但在这里,它是用户代理默认字体大小的一个百分比,字体大小以点为单位指定。这引入了一个关于用户代理的微妙且不正确的假设,即屏幕分辨率为96 dpi。这种假设通常会产生如下文本:
嘿,看看我,我太小了,看不懂
总而言之:不要对旧版本的IE使用hacks(4年是保持向后兼容性的充足时间;IE7本月已经有4年了) 不要假设用户代理的分辨率,也不要将主体字体大小设置为百分比
如果您需要更精确的排版控制,请使用CSS框架,如。未经验证,我会说CSS不能接受超过1个逗号后面的数字,以百分比表示,但我不确定,因此我将其作为注释:因为它打破了关于“em”含义的任何约定…@calmh:这没有问题,我会知道em是什么意思:)如果这能让我的生活更轻松,那它就值得了:)非常奇怪,因为我读到我应该使用ems作为一个单元,而不是px,主要是为了在Internet explorer中更改字体大小。我回答的主要内容应该是“不要为IE做特殊的事情,它不再需要它们。”以标准为目标,一切都会好起来。IE是否还需要这个还有争议。如果使用
px
调整文本大小,从版本8开始,IE用户仍然无法调整文本大小。它们可以进行缩放,但缩放与增加文本大小不同。这对你是否重要取决于你的听众。这很可能不值得迎合IE上那些想要调整文本大小的人,但我认为你不能明智地对此制定一个全面的规则。@Paul,你是对的,但这样做会损害其他浏览器的体验(对于网页设计师来说,要正确实现这一点要困难得多)。如果用户想要做的只是将其变大(一个可访问性问题),他们可以制作自定义样式表,在Windows中使用大字体,甚至降低屏幕分辨率。我想Ctrl+
是一个更可能的动作。@Seth:哦,整个6.25%
的事情肯定有问题。但我不认为一般使用ems会导致其他浏览器出现问题。
<ul>
<li>
<ul>
<li>
...
li li {
font-size: .083em;/* 12px */
}