《CSS权威指南》--附录

来源:互联网 发布:汽车保养提醒软件 编辑:程序博客网 时间:2024/05/01 11:19

《CSS权威指南》--附录

虽然一条规则中的声明可以按照任何顺序写出来,但我背后还是有一个优先级顺序:

1. display 及相关声明;
2. position 及相关的声明;
3. margin、padding 和border 及相关声明;
4. 字体/文本相关声明;
5. 装饰相关声明。
比如:
.demo {
display:block; position:absolute;
height:100px; width:300px; left:10px; top:10px;
margin:0 5px; padding:10px;
font-size:10px; line-height:1.2;
background-color:#eee; border:1px solid; border-radius:6px;
}
这个顺序首先考虑了我认为对元素最重要的信息,即它们怎么在页面上定位,定位到哪里。随后是不那么重要的信息,包括元素的视觉装饰。有时候,我也会根据需要改变这个顺序。比如,要是margin 声明在相应规则里最重要,就把该声明写在最前头。我认为把相关性强的几条声明都写在一行是一个不错的考虑,因为把所有声明都写在一行,会导致CSS 代码难以理解,而每个声明各占一行又会让样式表过长,
有时候需要来回滚动着看。当然,这完全是个人喜好问题,“仁者见仁,智者见智”。

不过,无论如何,我都向大家强烈推荐一种组织CSS 的方法,那就是在样式表中按照接受样式的HTML 标记出现的先后顺序,依次列出相应的CSS 规则。千万不能把新样式全都扔到样式表最后去。CSS 样式表有时候一写就会非常长,如果不这样按顺序罗列,将来要想找到为某个元素应用样式的某条规则会非常麻烦。
支持旧版本浏览器
事实上,直到不久前,浏览器嗅探(browser sniffing)都是检测浏览器的一种流行方式。所谓浏览器嗅探,就是通过JavaScript 检查浏览器的用户代理字符串中包含的浏览器名字,然后再为之提供能够弥补不足的代码。然而,我们实际上关心的并非浏览器,而是浏览器到底支持什么功能。这就是为什么现在大家使用的方法都不再关心浏览器,而是直接检测功能的原因。检测到功能缺陷,再有针对性地提供后备代码或者腻子脚本,就可以弥补相应能力的不足。



后备代码
IE9 之前的浏览器都不支持多背景,因此后备代码就是在多背景
声明之前简单地再加一条单背景声明,比如:
.someElement {background-image:url(images/basic_image.jpg);}
.someElement {background-image:
url(images/cool_image1.jpg),
url(images/cool_image2.jpg),
url(images/cool_image3.jpg);
}
所有浏览器都能理解第一条规则,但只有支持多背景的浏览器才会采用第二条规则。如果某浏览器无法解析某条CSS 规则,可能是因为它不支持其中的CSS 属性或者声明中包含错误,那么它就会跳过该规则,接着读取下一条规则。因此,IE8 及更早版本的IE 浏览器会忽略第二条规则,而只呈现basic_image.jpg。


条件注释
如果你真想单独为IE 浏览器做点什么,可以使用如下所示的条件注释来添加后备代码:
<!--[if lte IE 8]> <!-- IE 条件注释 -->
<link src="ie_only.css" rel="stylesheet" />
<![endif]-->
这种特殊格式的HTML 注释会被非IE 浏览器忽略,只有IE 浏览器才会执行其中的代码。就这个例子而言,我们是在为IE8 及更低版本的IE 加载额外的样式。加载条件可以使用lte(less than or equal to,小于等于)、lt(less than,小于)、gte(greaterthan or equal to,大于等于)、gt(greater than,大于),甚至只写一个浏览器版本号如IE 6。以此为不同版本的IE 提供后备代码。有时候,浏览器可能根本不支持你需要的功能。此时,仅提供后备CSS 代码还不够,还需要使用腻子脚本。



腻子脚本
腻子脚本(polyfill)指的是一段JavaScript 代码,能够赋予浏览器未曾有过的功能。目前,几乎所有CSS3 和HTML5 功能都有各自对应的腻子脚本,包括视频回放和阴影,从而让那些老得走不动道儿的“老家伙”们也能闪现青春的光芒。
Paul Irish 维护了一个完整的腻子脚本列表,地址为:https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills。
要在页面中添加一段腻子脚本,首先要下载并将其保存在网站的一个文件夹中。我为此创建了一个helpers 文件夹。然后,在页面<head>标签中添加一个<script>标签把它加载进来。
<script type="text/javascript" src="helpers/selectivizr.js">
</script>
怎么确定是否需要某个腻子脚本呢?推荐大家使用Modernizr。Modernizr(http://modernizr.com)是一个JavaScript 文件,能够帮你检测用户浏览器对HTML5 和CSS3功能的支持情况,然后为顶级的<html>标签添加一组类,标明浏览器支持什么功能。另外,它还会设定一个JavaScript 对象modernizr 的属性,以便你通过JavaScript 来测试这些功能。Modernizr 添加的类主要是为CSS 提供便利
 html5shiv.js(http://code.google.com/p/html5shiv):让IE8 及更低版本的IE 识别section、 article、nav 等HTML5 元素。
 selectivizr(http://www.selectivizr.com):让IE(6/7/8)支持::first-child 等高级CSS 选择符。
 IE9.js(http://code.google.com/p/ie7-js):修复从IE6 到IE9 的很多bug 和缺损功能。
 CSS3Pie(http://css3pie.com):让IE6 到IE9 支持圆角、背景渐变、边框图片、盒阴影、RGBa 颜色等可视化的CSS3 功能。
 Respond.js(https://github.com/scottjehl/respond)让旧版本浏览器支持媒体查询。
 -prefix-free(http://lea.verou.me/projects)为需要厂商前缀的CSS3 声明添加前缀(参见第4 章)。
 borderBoxModel.js(https://github.com/albertogasparin/borderBoxModel):让IE6 和IE7 支持CSS3 的box-sizing 属性。
0 0
原创粉丝点击