关于CSS中字号控制的兼容性研究
来源:西米CC 发布时间:2010-01-23 12:48:00
过去一段时间人们似乎又非常热衷于探讨网络文档的印刷格式,涌现了很多与之相关的技术与理论资料,其中相当重要的一个领域就是关于印刷中字号和行高的精确控制。但问题是:网络是一个相当特殊的媒介,浏览者一设计者一样拥有几乎同等的控制权限,以文本为例,虽然其呈现方式很大程度上取决于设计者的意愿,但还是会在不同的浏览器或平台上存在或多或少的差异。
在本文中,我们将探讨在设计者意愿与用户需求之间,如何让文本的呈现方式取得一种平衡。为了达到这个目的,我们需要对传统的处理方法进行研究,反思其中的实践经验和不足。我在Owen Briggs的pioneering work基础上,总结分析了六大条目,配之以大约160张截图,希望能增进大家的理解和实践。
测试样本
用于测试的对象是两列Arial字体的文本,左侧我们视之为主内容,右侧为边栏。我们测试的平台和浏览器主要是MAC下的Safari 2, Firefox 2,Opera 9.5,以及开启ClearType效果的Windows XP下的IE6和IE7.每种平台或浏览器都以默认设置为运行环境,我们的测试主要是看看各个浏览器如何渲染其中的小、中、大、特大文本,以及在90%, 100%, 110%, 以及120%的缩放比例下具体效果如何。
首先很有必要来验证一下用于测试的浏览器在初始的情况下有着一致的标准,在基础例子中大家可以看到,各款浏览器中默认的文本字号都是16px,若对字号进行改变,文本的缩放也遵循着一致的标准。
PX单位字号文本 – iteration 1
虽然我们可以直接从基础示例中默认的字号着手讲解,但对于大多数人来说,16px的正文字号显得有点太大了。所以在我们的例子中,我们把正文字号重置为14px,侧边栏文本则是12px,CSS规则如下:
.bodytext p {
font-size:14px;
}
.sidenote {
font-size:12px;
}
在结果示例中可以看到,在Safari 和 Firefox中,文本会随着larger、largest的声明缩放其字号,但IE6和7则无动于衷。
EM单位字号文本 – iteration 2
虽然现今浏览器的市场份额在不断变化,但毋庸置疑的是很多的用户都还在使用IE6,所以px字号设置会将这些用户拒之于文本大小调整的门外。那么接下来我们尝试一下em字号,事实上em也是W3C推荐的印刷单位。如果要在默认的设置下利用em达到等同于14px和12px字号的文本大小,需要进行如下CSS声明:
.bodytext p {
font-size:0.875em; /* 16x.875=14 */
}
.sidenote {
font-size:0.75em; /* 16x0.75=12 */
}
在结果示例中可以看到以em为字号单位的文本在各款浏览器中都能进行文本缩放,但是在IE6和7中缩放的幅度似乎有点夸张了。
BODY中的百分比字号– iteration 3
对于在第二个测试中IE6和7所出现的问题,我们可以通过设置body标签的百分比字号来解决,当然对于其它元素的文本还是沿用em单位字号:
body {
font-size:100%;
}
.bodytext p {
font-size:0.875em;
}
.sidenote {
font-size:0.75em;
}
示例中可以看到,我们已经基本达成了文本缩放一致的目的。


猜你喜欢
- 除了使用pycharm外,还可使用vscode来操作pyqt,方法如下:1. 在vscode中配置相关的pyqt的相关根据自己实际情况修改第
- 本文实例讲述了PHP获取当前相对于域名目录的方法。分享给大家供大家参考。具体如下:http://127.0.0.1/dev/classd/i
- sqlalchemy 对于行级锁有两种实现方式,with_lockmode(self, mode): 和 with_for_update(s
- 自动化测试执行的用例有很多,python额测试用例文件,都是以“test”开头的。TestLoader(defaultTestLoader)
- 在项目开发的过程中可能需要开放自己的数据库给别人,但是为了安全不能自己服务器里其他数据库同时开放。那么可以新建一个用户,给该用户开放特定数据
- 今天帮助同事解决一个问题,问题是她做的一套页面在FF下显示正常,在IE6下样式却没有效果,也就是没有应用样式。最终发现是编码不匹配的问题,c
- 本文实例讲述了php获取文章内容第一张图片的方法。分享给大家供大家参考,具体如下:<?php$temp=mt_rand(1,4);$p
- 1.关闭浏览器全部标签页driver.quit()2.关闭当前标签页(从标签页A打开新的标签页B,关闭标签页A)driver.close()
- 这些年来,我发现许多开发者对于何时使用数据操纵语言(DML)触发器与何时使用约束感到迷惑。许多时候,如果没有正确应用这两个对象,就会造成问题
- 本文实例讲述了Python 多线程,threading模块,创建子线程的两种方式。分享给大家供大家参考,具体如下:GIL(全局解释器锁)是C
- 在windows 2003下,在运行web应用程序的时候出现一下错误: 服务器无法处理请求,-->对路径“C:/temp/mytest.tx
- 写一个类似linux head的小工具,在window下用。head.py # -*- coding: UTF-8 -*-#!/u
- 一、MySQL进阶查询首先先创建两张表mysql -u root -pXXX #登陆数据库,XXX为密码crea
- 想查找mac下python的site-packages目录,如果用网上搜的安装目录之类的去找,进去每一层很多都是软链接形式存在,比较浪费时间
- 本文实例讲述了Python排序搜索基本算法之插入排序。分享给大家供大家参考,具体如下:插入排序生活中非常常见,打扑克的时候人的本能就在用插入
- 前言夏天是用来告别的季节,因为毕业总在七月。那么七月之前的季节是用来干嘛的呢?当然是用来做毕业设计的啦今天还是写一些从简单到难的毕业设计或者
- oracle命令行删除用户: connect / as sysdba; shutdown abort; startup; drop user
- Python字符串处理学习中,有一道简单但很经典的题目,按照单词对字符串进行反转,并对原始空格进行保留: 如:‘ I love China!
- 前面章节我们学些了文件对象的创建、写入与读取,并且针对 .py 文件 与 .txt 文件进行了有针对性的小练习。 通过前面的学习我们知道,文
- 安装完 Oracle11g 之后,想打开自带的 SQL Plus 来学习,然后按照提示用 sys 用户来连接数据库,可输了好几次都提示一个错