【发布时间】:2010-10-05 23:26:37
【问题描述】:
- 跨浏览器调整文本大小的最佳方法是什么?
- 以像素/em 为单位定义字体大小有哪些优点和缺点?
【问题讨论】:
【问题讨论】:
使用相对大小将使您的页面在 iPhone 等移动设备上看起来更好,特别是因为它们在更大的视口上呈现页面,然后将其缩小以适应所需的空间。
【讨论】:
我更喜欢相对值,因为 Internet Explorer (
【讨论】:
我个人在body 上设置了一个绝对字体大小,并从那里将所有内容设置为相对于该大小。例如:
body {
font-size: 10px; /* or pt if you want */
}
h1 {
font-size: 200%;
}
尽量避免组合复合相对大小:
body {
font-size: 10px;
}
p {
font-size: 80%; /* 8px, right? */
}
div {
font-size: 150%;
}
/* what size is a "div > p" ? */
如今,所有现代浏览器都具有整页缩放功能,这意味着即使以像素为单位调整字体大小也可以。
这种方法的好处是您可以通过更改一个定义轻松地放大或缩小所有文本。
缺点是如果你想改变默认字体大小,而不是标题(例如),那么会有很多声明需要改变。
【讨论】:
我见过人们使用的一件事是在正文 CSS 中定义基本字体大小(例如,12pt),然后所有其他字体大小都是其百分比(例如,标题为 140%,小字体为 80%,等)。
如果您使用 pt,那么您将根据用户设置的 DPI 在显示上有所不同,但它可能会在用户的控制之下。
如果您使用 px,那么在非常高 DPI 的设备上会出现问题。
Em 和 pt 非常适合用于打印的 CSS。
有很多事情要做,看看字体和 CSS 会发生什么。
【讨论】:
我将字体大小保持为用户选择的默认值,然后使用相对大小:
body {
font-size: 100%;
}
p {
font-size: 1em;
}
h1 {
font-size: 1.8em;
}
此方法尊重用户在浏览器中选择的字体大小,通常设置为 16px。
【讨论】:
如果您使用绝对尺寸,那么任何有视力障碍的读者都可能会觉得难以阅读。如果您使用相对大小,那么您只是指定哪些文本比页面上的其他文本更大/更小,所有这些都与用户的默认文本大小相关,可能大(如果受损)或小(如果有点奇怪)。
相对大小的文本的一个缺点是当您希望您的网站是固定大小时,但如果可能的话,您确实应该采用更流畅的设计,以便页面调整大小以适应其内容。
【讨论】:
像素是固定大小的。这意味着当在任何屏幕和分辨率上查看时,文本将始终保持相同大小。
Em 具有可扩展性,这意味着使用不同屏幕尺寸和分辨率的人通常可以获得更好的体验。
某些浏览器在更改固定字体大小类型(px 和 pt)的大小时存在问题,因此对于网络字体来说往往不是很好,因为某些用户可能需要使用屏幕放大镜来增加字体大小,或者只是鼠标滚轮。
相对字体大小习惯于激怒无知的设计师,他们会因为网站与他们的设计不完全对应而感到恼火。
在我看来,安抚应该更了解的设计师并不足以成为在 Web 开发中使用固定字体的理由。
【讨论】:
使用 EM 缩放对字体更加通用。它也更易于访问。
如果您以前没有使用过这个工具,Em Calculator 这样的工具对于了解标签/模型的工作原理非常有用。
【讨论】:
A List Apart 做了一个extensive write up 关于字体大小在各种浏览器中的工作方式。事实证明它比你想象的要复杂,就像 CSS 中的其他一切一样。共识似乎倾向于使用 em,因为这让用户可以更好地控制在浏览器中调整字体大小。
【讨论】:
我的大部分编程背景都是桌面应用程序,但我最近阅读了大量有关 Web 开发的书籍,而且我遇到的书籍建议使用关键字字体大小规范(小、中等)然后缩放按百分比或 em 向上或向下。
如果您的字体大小以 px 为单位指定,旧版本 IE 的用户将无法覆盖文本的大小,即他们将无法根据自己的喜好将其放大或缩小。
但是,IE5 也有一个问题,当你用关键字指定字体大小时:相对于其他浏览器,IE5 显示的文本大约要大一倍。
【讨论】:
使用哪个?
两者兼而有之。相对于用户需要大量阅读的主体文本(因此他们希望能够舒适地阅读);对于必须调整大小以匹配页面上以像素为单位大小的其他元素(例如图像)的文本的绝对值。
对于相对而言,“%”和“em”同样好。
对于绝对值,请始终使用“px”。永远不要在屏幕上使用“pt”,它只对打印样式表有意义。遗憾的是,'pt' 被认为是字体处理的默认单位,因为在网络上它是最糟糕的选择。
(ETA:请注意,自从这个答案以来,CSS3 有 redefined '物理单位',因此 px 和 pt 总是成比例的。所以这个问题不再重要,除非你担心非常旧的浏览器。 )
有些人不喜欢相对字体大小的“复合”效果。实际上,诀窍是尽可能少地使用字体大小更改,以避免过多的嵌套。 应该可以通过使用字体大小关键字 'small'/'medium'/'xx-large'/etc 来获得相对于用户的首选大小行为而无需复合行为.,但不幸的是,这样您并没有得到太多的粒度,而且即使在今天,浏览器处理它们的方式仍然存在差异。
【讨论】:
如果您可以放弃对 IE8 的支持,那么我建议使用 rem 单位。它们是像 em 这样的相对单位,但它们不会级联到子元素,这使得它们更易于使用
em 很复杂
p {
font-size: 2.5em;
span {
font-size: 1.5 em;
/* font size comes out to 3.75 root em*/
}
}
rem 更简单
p {
font-size: 2.5rem;
span {
font-size: 1.5 rem;
/* font size comes out to 1.5 root em*/
}
}
【讨论】: