css hack惯用手法



什么是css hack?它是如何实现浏览器兼容处理的?

通俗的说,所谓css hack 指的是:为了解决不同浏览器对css解析的不同而采取的措施。
换句话说,也就是指:对不同浏览器机器不同版本对css解析后出现页面内容的兼容性差异处理。


这其中,大多数针对的是下面的几个常用浏览器的兼容问题:

  1. 解决IE6中浮动元素的margin双边距问题;
  2. 识别不同浏览器、ie浏览器不同版本的方法
  3. 透明图片与透明背景的设置方法
  4. css3滤镜、蒙版、模糊效果的实现

因为现在浏览器类型、同一浏览器版本众多,浏览器对应的默认样式也不尽相同。不同的浏览器,不同版本的浏览器,导致css的选择器默认的一些数值也不可能相同。因此,本文章着重总结一下css hack的常用重置手法,并辅以代码示下,抛砖引玉,望对于初级开发者有所助益。

说明:

本文只是本人阅历不同书籍和个人开发,今天经验性总结一下CSS Hack惯用伎俩,可作为所有项目的使用的共性存在,抛砖引玉,点到为止,不做更多展示,而不同的项目也可有其个性,开发者可根据项目特性化需求自己定制。还有一些共性,不属于样式重置部分,但是同等重要!由此,可引申为CSS框架,只不过框架考虑的更多。

然而,为了让浏览器显示的都一致,可以通过重新定义标签样式的方法,以此覆盖浏览器的css默认属性。

而为了便于重复使用,经常需要把这部分勇于覆盖路蓝旗默认样式的css代码抽离出来,如此,便形成了css reset文件,可称为“重置文件”,命名:“reset.css”

目前比较流行的重置样式有: Eric MeryerYui,另外Condensed Meyer Reset简化Eric Meryer 的样式。

1. Eric Meryerreset.css样式表,代码如下:

/*浏览器重置*/
/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

参考上述代码,在YUI的reset中,重置了背景色为白色,而文字颜色为黑色。
一般不建议这么重置背景色!
以防止破坏用户的浏览器自定义的网页默认的背景色。

针对不同浏览器对具有内、外边距元素的设置不同,有一种极为简单通俗的办法,通过定义:

*{margin: 0; padding: 0;}

让所有元素的padding和margin都清空归零。

而在YUI 的reset中,却只把有内、外边距的元素样式清空归零,而且其他元素不动这样避免给一些无关元素带上不必要的样式,导致元素过多时的性能下降。
######代码如下:

body,div,dl,dt,dd,ul,ol,li,
h1,h2,h3,h4,h5,h6,pre,code,
form,fieldset,legend,input,button,
textarea,p,blockquote,th,td {
	margin: 0;
	padding: 0;
}

同理,

2. 对于具有边框的元素的重置,处理代码如下:

fieldset,img {
	border: 0;
}
abbr,acronym {
	border: 0;
	font-variant: normal;
}

3. 对于列表样式的重置,Eric和YUI的hack方式分别是:

ol,ul{                      |         li{
	list-style: none;       |            list-style:none;
}                           |         }

前者比后者多了3个字节。但还是建议使用前者!
建议使用前者比较稳妥。波及元素更少,性能会更高一点!

4. 对于上标、下标、baseline 的重置

sup,sub{
	font-size: 100%;
	vertical-align: baseline;
}

5. 对于表格的样式重置

需要在html中设置cellspacing=0达到table重置效果,且设置caption、th不要居中。

table{
	border-collapse: collapse;
	border-spacing: 0;
}
caption,th{
	text-align: left;
}

6. 对于a链接

YUI中没有采取样式重置,这里建议把链接的下划线重置归纳进来,对整体项目有统一的链接样式。对于个别的链接元素,可以在后续的个性开发中设计。

a{
	text-decoration: none;
}
:link, :visited{
	text-decoration: none;
}

另外,在某些浏览器中, q 或 blockquote前后会出现引号,严重影响页面美感和用户体验,可以重置为:

blockquote{
	quotes: none;
}
blockquote:before, blockquote:after, q:before, q:after{
	content: "";
	content: none;
}

7. 除了重置样式之外,清除浮动也很重要!

目前主要推荐放入.cleatfix,虽然不属于重置,可放在布局中:

.clearfix:after{
	content: "";
	display: block;
	height: 0;
	clear: both;
	visibility: hidden;
}
.clearfix{
	display: block;
}
/* Hides from IE-Mac */
*html .clearfix{
	height: 1%;
}
.clearfix{
	display: block;
}
/* End hide from IE-Mac */


8. 附件:常见浏览器、厂商标识

序号浏览器名称匹配内核或私有属性
1Chrome-webkit-
2safari-webkit-
3Opera-o-
4IE-ms-
5Firefox-moz-

如有问题,欢迎留言建议和更正。


以上就是关于“ css hack的常用重置手法 ”的全部内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值