如果每个平台以不同的大小呈现文本,我如何在不同的平台上获得精确的大小?最近发布的Firefox 4加剧了这个问题。此版本支持使用DirectWrite对文本进行硬件渲染。使用 DirectWrite 编写的文本的大小比没有使用硬件加速编写的文本要大得多。请注意以下示例。如果您需要查看 CSS,这是一个实时示例。
- Windows 7 64 位家庭版
- ATI Radeon HD 4670
- DirectWrite 已关闭,因为我的驱动程序未更新。
- 620×283
- Windows Vista 64 位商业版
- 英伟达 GeForce 8800GT
- DirectWrite 已打开,因为我刚刚更新了我的驱动程序。
- 620 x 293
HTML
<ul>
<li><a>Nav</a></li>
<li><a>Nav</a></li>
<li><a>Nav</a></li>
</ul>
<div>
Content
</div>
CSS
ul {
float: left;
width: 10em;
}
div {
margin: 0 0 0 12.7em;
min-height: 26.1em;
}
您是否看到 DirectWrite 关闭时导航与内容对齐,但 DirectWrite 开启时导航比内容高?我知道有一些 hacky 解决方案。font-size, width, height
一种是在 px中指定所有内容 ( )。这并不理想,因为组件不会是模块化的——也就是说,它不能在缩放到另一个大小的另一个设置中重复使用。它还破坏了 IE6 的字体大小选项。另一种解决方案是使用 JavaScript 读取导航的物理高度,并使内容高度相同。这并不理想,因为样式是 CSS 的角色。有没有任何CSS解决方案?
这只是众多例子之一。另一个是 Ubuntu 9 上的 Firefox 3 具有更宽的文本,因此并非所有链接都适合我的主导航。我被迫切断了最后一个导航链接max-width: 37em; overflow: hidden
。