关于CSS中字号控制的兼容性研究(2)
来源:西米CC 发布时间:2010-01-23 12:48:00
用PX设置行高 – iteration 4
最近一些关于Web文档打印的文章,如Setting Type on the Web to a Baseline Grid,强调了一个良好的印刷格式在垂直方向上也应该体现栅格特质,其中最重要的因素就是行高,它应该不受字号设置的影响。
举个例子,一种比较恰当的行高设置是18px,我们可以在body标签中进行定义:
body {
font-size:100%;
line-height:18px;
}
.bodytext p {
font-size:0.875em;
}
.sidenote {
font-size:0.75em;
}
结果示例中可以看到,无论是主体还是侧边,所有的文本都继承了18px的行高。当然这是在为行高值定义了单位的情况下。如果我们采用比例因子之类省略单位的行高设置,行高就会随着字号的变化而变化,当然某些情况下这也可能是我们需要的结果。
不幸的是在IE6和7下18px的行高不会随文本的缩放而变化,这就意味这文本足够大的时候可能会产生重叠的现象。
用EM设置行高 – iteration 5
既然px不适合,我们接着来尝试一下em单位,设定如下CSS规则:
body {
font-size:100%;
line-height:1.125em; /* 16×1.125=18 */
}
.bodytext p {
font-size:0.875em;
}
.sidenote {
font-size:0.75em;
}
所得到的结果在各方面都正如我们期待的一样,近乎完美。
Safari 中等距字体的问题 – iteration 6
细心的人可能会发现,在Safari浏览器下主体文本中等距字体文本在渲染上存在一些细微的差别:当字号以px为单位时,等距文本的宽度与其它文本没有很大的区别,但是当字号以em为单位时,等距文本的宽度就要小多了。这个问题的根源在于Safari缺省设置中,普通字体的字号为16px,而等距字体的字号则是13px。
英文有那么多字体, 但都隶属于serif, sans-serif和monospace三种字组. 由于英文本身的特点, 不同于方块字(汉字), 英文字母的宽度是不相等的, 这就给出版业如报纸的排版工作增加了难度, 于是发明了等距字体(monospace).
也许有些人会觉得这个问题无关紧要,但大部分人不会放弃对这些细节的追求。那么下面就是一个可行的解决方案,注意其中的[if !IE]语法,它表示IE6和7将忽略表示其后的规则:
<style type="text/css">
body {
font-size:100%;
line-height:1.125em;
}
.bodytext p {
font-size:0.875em;
}
.sidenote {
font-size:0.75em;
}
</style>
<!--[if !IE]>-->
<style type="text/css">
body {
font-size:16px;
}
</style>
<!--<[endif]-->
上面的规则把px字号应用到了除IE6和7的其它浏览器上,结果示例中可以看到现在所有的浏览器下行高与字号之间都有了很好的缩放协调,包括Safari中的等距文本。
对于这种类似于Hack的方法存在很多争议,但个人认为在这里运用它没有什么不妥当,毕竟我们只是利用浏览器特性来矫正其元素渲染的处理方式而已。另外本例中的CSS都是内联式的,最好的方式当然是外联样式。


猜你喜欢
- 一、rsa库(推荐)1、公钥加密、私钥解密# -*- coding: utf-8 -*-import rsa# rsa加密def rsaEn
- Mysql 二进制安装方法下载mysqlhttps://dev.mysql.com/downloads/mysql/1.解压包tar xf
- 1.如果有ID字段,就是具有唯一性的字段 代码如下:delect table where id not in ( select max(id
- 本文实例讲述了python妹子图简单爬虫实现方法。分享给大家供大家参考。具体如下:#!/usr/bin/env python#coding:
- 简介在之前的编程中,我们的信息打印,数据的展示都是在控制台(命令行)直接输出的,信息都是一次性的没有办法复用和保存以便下次查看,今天我们将学
- 对图片进行resize、裁剪、旋转、翻转图片处理时常用的手段有resize、裁剪、旋转、翻转,简单介绍一下python中怎么利用PIL库和t
- 这阵子没有精力完整翻译和发到译言( 现下正渐入状态,预计写博客量会逐步提升回来),简短做一个概要翻译,为近期工作需要做一个参考。
- 本文实例为大家分享了python实现批量格式转换的具体代码,供大家参考,具体内容如下深度学习过程中总是绕不开数据集的制作,有时候实际图片格式
- MySQL查询不使用索引汇总众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性
- 1、生成配置文件''' 生成配置文件'''import configparse
- 这样的问题是因为 数据库字符集,表字符集,字段字符集都设为:gbk_chinese_ci 注意数据库连接串里面的 Stmt=Set Name
- 前言在用python处理表格数据中,这其中的工作重点就是对表格类型的数据进行梳理、计算和展示,本文重点介绍展示这个方面的工作。首先我们看一个
- 前言metrics用于判断模型性能。度量函数类似于损失函数,只是度量的结果不用于训练模型。可以使用任何损失函数作为度量(如logloss等)
- 要想更好的理解 css, 尤其是 IE 下对 css 的渲染,haslayout 是一个非常有必要彻底弄清除的概念。大多IE下的显示错误,就
- 本文实例讲述了redis数据库及与python交互用法。分享给大家供大家参考,具体如下:redis数据操作1.string类型:主要存储字符
- Microsoft SQL Server 2000 能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到 SQL Se
- 本文实例讲述了Python编程之多态用法。分享给大家供大家参考。具体分析如下:什么是多态?顾名思义,多态就是多种表现形态的意思。它是一种机制
- 本文实例为大家分享了python3通过qq邮箱发送邮件以及附件的具体代码,供大家参考,具体内容如下开启qq邮箱的smtp服务代码:impor
- 空间关系变化始于相遇,所以交点是一切的核心。相交判定首先考察一束光线能否打在某个平面镜上。光线被抽象成了一个列表[a,b,c],平面镜则被抽
- 一、报错信息:【file】【Default Settint】---Project Interpreter 点击+搜索suds安装模块报错解决