【概论】
简单理解,CSS hack的就是使CSS代码兼容不同的浏览器
CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准),以达到应用不同的CSS样式的目的,比如.kwstu{width:300px;_width:200px;},一般浏览器会先给元素使用width:300px;的样式,紧接着后面还有个_width:200px;由于下划线_width只有IE6可以识别,所以此样式在IE6中实际设置对象的宽度为200px,后面的把前面的给覆盖了,而其他浏览器不识别_width不会执行_width:200px;这句样式,所以在其他浏览器中设置对象的宽度就是300px;
【浏览器】
注意:我们通常主要考虑的浏览器有IE6、IE7、IE8、谷歌浏览器(chrome)、火狐(Mozilla Firefox)即可,至于我们常用的傲游、QQ的TT浏览器是用你计算机中装的系统自带浏览器的内核,所以只需要兼容以上浏览器即可兼容TT\傲游浏览器。
【列表】
(一)3种表现形式
(二)书写顺序
(三)浏览器识别字符标准对应表
(四)各种CSS hack情况介绍
【概论】
(一)3种表现形式
CSS Hack大致有3种表现形式:CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack
①内部Hack:CSS Hack主要针对类内部Hack,比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识等等;
②选择器Hack:比如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。等等
③HTML头部引用(if IE)Hack:针对所有IE:<!--[if IE]><!--您的代码--><![endif]-->,针对IE6及以下版本:<!--[if lt IE 7]><!--您的代码--><![endif]-->,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效
(二)书写顺序
书写顺序,一般是将识别能力强的浏览器的CSS写在后面。稍后依次介绍。
(三)浏览器识别字符标准对应表
主要几种情况:
①大部分特殊字符IE浏览器支持,其他主流浏览器firefox,chrome,opera,safari不支持 (opera可识别除外)。
②\9 :所有IE浏览器都支持
③_和- :仅IE6支持
④* :IE6、E7支持
⑤\0 :IE8、IE9支持,opera部分支持
⑥\9\0 :IE8部分支持、IE9支持
⑦\0\9 :IE8、IE9支持
(四)各种CSS hack情况介绍
1. 区别IE和非IE浏览器
#tip{ background:blue;/*非IE背景蓝色 因为所有浏览器都能解释*/ background:red\9;/*IE6、IE7、IE8、IE9背景紅色 因为\9在IE6.7.8.9中可以识别, 覆盖上面样式 IE10跟11应该不识别,IE11测试确定*/ }
2. 区别IE6,IE7,IE8,FF
【区别符号】:“\9”、“*”、“_”
#tip{ background:blue;/*Firefox背景变蓝色 所有浏览器都支持*/ background:red\9;/*IE8背景变红色 IE6、7、8、9支持覆盖上面样式*/ *background:black;/*IE7背景变黑色 IE6、7支持又一次覆盖上面样式*/ _background:orange;/*IE6背景变橘色 紧IE6支持又一次覆盖上面样式*/ }
【说明】:因为IE系列浏览器可读「\9」,而IE6和IE7可读「*」(米字号),另外IE6可辨识「_」(底线),因此可以依照顺序写下来,就会让浏览器正确的读取到自己看得懂得CSS语法,所以就可以有效区分IE各版本和非IE浏览器(像是Firefox、Opera、GoogleChrome、Safari等)
3. 区别IE6、IE7、Firefox(方法1)
【区别符号】:“*”、“_”
#tip{ background:blue;/*Firefox背景变蓝色*/ *background:black;/*IE7背景变黑色*/ _background:orange;/*IE6背景变橘色*/ }
【说明】:IE7和IE6可读「*」(米字号),IE6又可以读「_」(底线),但是IE7却无法读取「_」,至于Firefox(非IE浏览器)则完全无法辨识「*」和「_」,因此就可以透过这样的差异性来区分IE6、IE7、Firefox
4. 区别IE6、IE7、Firefox(方法2)
【区别符号】:“*”、“!important”
#tip{ background:blue;/*Firefox背景变蓝色*/ *background:green!important;/*IE7背景变绿色*/ *background:orange;/*IE6背景变橘色*/ }
【说明】:IE7可以辨识「*」和「!important」,但是IE6只可以辨识「*」,却无法辨识「!important」,至于Firefox可以读取「!important」但不能辨识「*」因此可以透过这样的差异来有效区隔IE6、IE7、Firefox。
5. IE浏览器下hack总结
element{ color:#666\9; //IE8 IE9 * color:#999; //IE7 _color:#EBEBEB; //IE6 }
可以看出,利用字符识别无法区分IE8和IE9,我们可以从伪类的识别来区分
element{ color:#666\9; //IE8 * color:#999; //IE7 _color:#EBEBEB; //IE6 } :root element{color:#666\9;}//IE9
【说明】:“:root”伪类IE系列只有IE9支持,其他主流浏览器均支持,利用这一点来区分IE8和IE9。另外考虑到opera部分支持,完全支持:root,所以不使用
.
相关推荐
在异步复位同步释放写法过程中,不能将复位同等效果放在if条件中。例如,当不是逻辑或,而是逻辑与时,则当condition1条件不满足时,是无法保证所有寄存器在复位后处于理想状态。因此,必须保证异步复位同步释放的...
使用vue打包,通过css引用图片资源。 .img { height: 500px; width: 100%; background: url(./assets/img/1.jpg) no-repeat; background-size: 100%; } 热更新开发环境的效果是这样 但打完包出来的页面却报...
家庭无线局域网组建方案详谈 家庭无线局域网组建方案详谈
机房 维护 与 管理 详谈
本文探讨了SDN(软件定义网络)如何与云平台进行对接,以实现更加高效和灵活的网络资源管理。首先,对云计算的三层服务模型进行了概述,包括IaaS、PaaS和SaaS,其中IaaS层是本文关注的重点,涉及到基础设施的共享和...
从结构上看,Unity3D想要拿数据库的数据,问Web拿就可以了,而对数据库的操作已经外包给Web了,不用你操心。是的,理论上的东西看上去就是这么简单。...但是问题是我Unity3D如何向Web拿数据?我当时就卡在了这步,好,...
HACCP基础知识详谈.pptx
PT100温度传感器是基于铂的电阻温度特性制造的,其测量精度高、适用温度范围广,并且在中温范围内具有良好的重复性和稳定性。PT100广泛用于需要高精度测量的应用中,尤其是工业测量,其温度范围可达-200℃到650℃。...
### Hibernate配置要点详谈 #### 一、配置文件与配置方式 在Hibernate中,有两种主要的配置文件形式:`hibernate.cfg.xml` 和 `hibernate.properties`。 1. **`hibernate.cfg.xml`**: - 这种配置文件通常包含...
详谈如何开展危机公关.pptx
关于一阶滤波器的种种有很多资料可查,像截止频率啊,相移啊什么的,这些在这里就不再重复了。本文主要阐述一下阿呆在学习过程中曾被困扰的地方,及本人的简要分析。 本文从无源RC低说起,以一个实例为讨论...
详谈常见的视频编码格式.docx
详谈SAP云转型之路.docx
"详谈数据报格式" 在计算机网络中,数据报格式是指数据包的结构和组成部分。IPv6和IPv4是两种常见的数据报格式,今天我们将详细介绍这两种格式的区别和特点。 IPv6数据报格式 IPv6数据包由基本首部和跟随在后面...
然而,回调函数的写法容易导致所谓的“回调地狱”,即多个异步操作嵌套导致代码难以阅读和维护。 事件监听是另一种常见的异步编程模式,它通过监听事件来执行异步操作。在Node.js中,许多模块通过事件发射器...
详谈介绍Fedora10 NFS系统内核设置