兼容IE6/IE7/IE8/FF的CSS HACK写法
Firefox为程序员而生,IE6为前端工程师而死,Chrome服务高端人群,Maxthon、Opera、TT、IE8流浪在民间,360自动安装并设为默认,这就是浏览器领域,五花八忙,各有各的生存方式与存在的空间。
兼容问题不容忽视,Chrome、IE8开始趋于规范了,与Firefox解析原理差不多,以下介绍几种常用解决方案:
第一种方法:
还好,微软提供了这样一个代码:
<meta http-equiv="x-ua-compatible" content="ie=7" />
把这段代码放到<head>里面,在ie8里面的页面解析起来就跟ie7一模一样的了,所以,基本上可以无视ie8,剩下的代码只需要这样写就可以了
background:#ffc; /* 对firefox有效*/ *background:#ccc; /* 对ie7有效 */ _background:#000; /* 只对ie6有效 */
解释一下吧:
firefox能解析第一段,后面的两个因为前面加了特殊符号“*”和“_”,firefox认不了,所以只认background:#ffc,看到的是黄色;
ie7前两短都能认,以最后的为准,所以最后解析是background:#ccc,看到的是灰色;
ie6三段都能认,而且“_”这个只有ie6能认,所以最后解析是_background:#000,看到的是黑色
如果你发现按我这样写还是有问题的话,请查看一下你的html头,看看<head>之前的内容是不是这样的标准写法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
这个是现在比较规范的写法,如果你是用dreamweaver做页面的话,默认也是这种规范的,切记,非这种规范写法的,兼容性不能保证
第二种方法:
要求苛刻的朋友是不愿意在页面头部增加<meta http-equiv="x-ua-compatible" content="ie=7" />这样一句代码的,因为这样的结果是每个页面都得加。那么要想兼容这几个浏览器还真得想别的办法了。早些天本站发布了一篇《完美兼容ie6,ie7,ie8以及firefox的css透明滤镜》,可能当时测试的疏忽,IE8的兼容性没有解决好,好多朋友回复说用不了。今天抽出些时间,查阅大量资料,终于解决了这个问题了。
以下是兼容IE6/IE7/IE8/FF的写法,注意下面的顺序不可颠倒
margin-bottom:40px; /*ff的属性*/ margin-bottom:140px\9; /* IE6/7/8的属性 */ color:red\0; /* IE8支持 */ *margin-bottom:450px; /*IE6/7的属性*/
下面以一个实例的形式表现,大家可以运行代码查看一下效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>2010最新全面兼容ie6,ie7,ie8,ff的CSS HACK写法——www.0491.com</title> <style type="text/css"> #abc { border:2px solid #00f; /*ff的属性*/ border:2px solid #090\9; /* IE6/7/8的属性 */ border:2px solid #F90\0; /* IE8支持 */ _border:2px solid #f00; /*IE6的属性*/ } /*上下顺序不可以写错*/ </style> </head> <body> <div id="abc"> <ul> <li>FF下蓝边</li> <li>IE6下红边</li> <li>IE7下绿边</li> <li>IE8下黄边</li> <li>转载请注明来源标准之路<a href="http://521-wf.com">WiFeng的博客</a></li> </ul> </div> </body> </html>