精通css必须知道的"骇客"技术

    由于firefox,ie6,ie7中对css样式的兼容不同,有的时候,一个效果需要同时兼容这三者,就需要使用的hack技术。在webgis开发中,其实hack使用是非常多的,比如openlayers的渲染层,几乎所有的css都需要使用hack。

 

    例子:

  援引自:http://xinple.org/?p=208        

 

  1. #yourId/.yourClass {/*normal*/}
  2. * html #yourId/.yourClass {/*IE6 and below*/}
  3. *+html #yourId/.yourClass {/*IE7 only*/}
  4. @media all and (min-width:0px){
  5.     #yourId/.yourClass { /*opera*/ }
  6. }

     

用法:直接写CSS,用firefox作为第一浏览器看效果,然后IE6下不一样,就用* HTML重写那个ID容器或者类;如果IE 7不一样,就用*+HTML重写,如果opera下面不一样,就用@media那个,当然这写重写的需要放在原来的后面。呵呵,就这么简单。这个方法用了之后可能会上瘾,可是会有诸如增加CSS文件容量等不爽,甚至有时候还会出现直接用这个写几段不同的。所以还是建议能熟悉了解个浏览器具体是在什么属性上支持不一样(例如border宽度IE6认为是不能算在width里面的,但是firefox是认为算width一起的),先尽力写几个浏览器通用的CSS,不到必不得已不用这个hack方法。

原理:firefox认为是CSS语法错误,所以忽略。但是不同IE版本识别不同,不忽略,所以能实现hack,并且*+HTML还能通过W3C验证,呵呵,爽吧。opera那个就不多说了,也是类似原理,但是看起来比较崩溃,要说明的是,firefox下没问题的话,opera基本也没什么问题的,所以不太会用到这个hack。

 

 
区别 IE6FF
       background: orange; *background: blue;


 

区别 IE6IE7
       background: green  !important;background: blue;


 

区别 IE7FF
       background: orange*background: green;


 

区别 FFIE7IE6
       background: orange; *background: green  !important;*background: blue;


 

注:IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important,
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;



IE6IE7FF
*×
!important×



另外再补充一个,下划线"_",
IE6支持下划线,IE7和firefox均不支持下划线。

于是大家还可以这样来区分IE6IE7firefox
: background:orange;*background:green;_background:blue;

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。


转载于:https://www.cnblogs.com/lzlynn/archive/2008/07/29/1255972.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值