CSS Hack

  1.由于不同厂商的浏览器,比如Internet Explorer,Safari,Chrome,Mozila Firefox等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 CSS hack的目的就是使你的CSS代码兼容不同的浏览器。

  2.CSS Hack大致有3种表现形式,CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack.

  (1)CSS Hack主要针对类内部Hack:比如 IE6能识别下划线"_"和星号" * ",

                    IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。

  (2)选择器Hack:比如 IE6能识别*html selector{property:value},

          IE7能识别*+html selector{property:value}或者*:first-child+html selector{property:value}。

  (3)HTML头部引用(if IE)Hack:针对所有IE:<!--[if IE]><!--自己的代码--><![endif]-->,

                 针对IE6及以下版本:<!--[if lt IE 7]><!--自己的代码--><![endif]-->,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。

  书写顺序,一般是将识别能力强的浏览器的CSS写在后面。

  3.常用的hack方式

  (1)条件注释

    只在IE6下生效
    <!--[if IE 6]>这段文字只在IE6浏览器显示<![endif]-->
    只在IE6以上版本生效
    <!--[if gte IE 6]>这段文字只在IE6以上(包括)版本IE浏览器显示<![endif]-->
    只在IE下生效
    <!--[if IE]>这段文字只在IE浏览器显示<![endif]-->
    只在IE8上不生效

    <!--[if ! IE 8]>这段文字在非IE8浏览器显示<![endif]-->
    非IE浏览器生效
    <!--[if !IE]>这段文字只在非IE浏览器显示<![endif]-->
  (2) 类内属性前缀
    
      ①“-″减号是IE6专有的hack
      ②“\9″ IE6/IE7/IE8/IE9/IE10都生效
      ③“\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack
      ④“\9\0″ 只对IE9/IE10生效,是IE9/10的hack
    (3)选择器前缀
      ①*html *前缀只对IE6生效
      ②*+html *+前缀只对IE7生效
      ③@media screen\9{...}只对IE6/7生效
      ④@media \0screen {body { background: red; }}只对IE8有效
      ⑤@media \0screen\,screen\9{body { background: blue; }}只对IE6/7/8有效
      ⑥@media screen\0 {body { background: green; }} 只对IE8/9/10有效
      ⑦@media screen and (min-width:0\0) {body { background: gray; }} 只对IE9/10有效
      ⑧@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效
      ⑨@media screen and (-webkit-min-device-pixel-ratio:0){ #test {background-color:gray;} }最后这个是浏览器新贵chrome和safari的
      ⑩@media all and (min-width:0px){ #test {background-color:black\0;} } 这个是老是跟ie抢着认\0的神奇的opera,必须加个\0,不然firefox,chrome,safari也都认识
      ⑾@-moz-document url-prefix(){.bb{background-color:#00ff00;}}/*仅firefox 识别*/ 
    (4)

      IE6能识别*;不能识别 !important;
      IE7能识别*,能识别!important;
      FF不能识别*,但能识别!important;
    (5)浏览器优先级别:FF<IE7<IE6,CSS hack书写顺序一般为FF IE7 IE6
    (6)CSS内部属性级Hack

      语法:selector{<hack>?property:value<hack>?;}
      取值:
      _: 选择IE6及以下。连接线(中划线)(-)亦可使用,为了避免与某些带中划线的属性混淆,所以使用下划线(_)更为合适。
      *:选择IE7及以下。诸如:(+)与(#)之类的均可使用,不过业界对(*)的认知度更高。
      \9:选择IE6+。
      \0:选择IE8+和Opera。
      [;property:value;]; 选择webkit核心浏览器(Chrome,Safari)。IE7及以下也能识别。中括号内外的3个分号必须保留,第一个分号前可以是任意规则或任意多个规则。 [;color:#f00;]; 与 [color:#f00;color:#f00;]; 与 [margin:0;padding:0;color:#f00;]; 是等价的。生效的始终是中括号内的最后一条规则,所以通常选用第一种写法最为简洁。
 
      http://www.duitang.com/static/csshack.html
      

CSS Hack相关知识的更多相关文章

  1. CSS的相关知识——背景,超链接,列表,表格,奇偶选择器

    接着上一篇总结一些css的相关知识 ㈠背景 背景属性 1.background-color 背景颜色   rgb函数设置 2.background-image   背景图片  url(“logo.jp ...

  2. 介绍CSS的相关知识

    以下是我跟大家分享的有关CSS的相关知识点: ①什么是CSS? css(Cascading Style Sheets)是层叠样式表 ②css的三种样式使用方法: 1,内联样式表:直接在html标签属性 ...

  3. CSS属性相关知识

    Css选择器 选择器的权重 在css中,哪个选择器的权重高,就走谁的样式. 标签选择器的权重是 1 Class选择器的权重是10 Id选择器的权重是100 行间样式的权重是1000 带有关键字 !im ...

  4. 常见浏览器兼容问题、盒模型2种模式以及css hack知识讲解

    什么是浏览器兼容问题?所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们 ...

  5. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  6. 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结

    史上最全的CSS hack方式一览 2013年09月28日 15:57:08 阅读数:175473 做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我 ...

  7. 移动WEB像素相关知识

    了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...

  8. css3复杂选择器+内容生成+Css Hack

    1.复杂选择器2.内容生成3.多列4.CSS Hack(浏览器兼容性)=======================================1.复杂选择器 1.兄弟选择器 1.特点: 1.通过 ...

  9. CSS hack方式一览【转】

    做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道 ...

随机推荐

  1. Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore

    此篇博客最后更新时间写自2016.5.18.当下高德地图jar版本为3.3.1. 使用高德地图碰到此问题,纠结许久(接近4个多小时). 记录在此,希望遇到相同问题的读者可以有所借鉴. 错误截图: 导致 ...

  2. SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    SQLServer2005+ 附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 我们在用Sql SQLServer2005+附加数据库文件时弹出错误信息如下图的处理办法: 方案一: ...

  3. mysql apache php install

    设置LINUX自动匹配环境变量 1.$su #su进入root #vi /etc/profile 在文件末尾加上下列语句: PATH=$PATH:/sbin #在PATH变量后追加/sbin目录 ex ...

  4. 大型网站演化(转载 http://homeway.me/2014/12/10/think-about-distributed-clusters/)

    0x01.大型网站演化 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 集群主要分为:高可用集群(High Availability Clu ...

  5. AJAX-----01远古时期的ajax

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 机器学习实战-K-nearest neighbors 算法的优缺点

    K临近算法是基于实例的学习,使用算法的时候我们必须要有接近分类结果的实例训练样本数据. 优点:精度高,对异常值不敏感 缺点: 时间复杂度和空间复杂度比较大.(如果训练样本数据集比较大,需要大量的空间来 ...

  7. vs2013-tfs-疑问之版本控制器路径有双引号解决办法

    问题描述: 最近项目:“****”展示交易平台 ,所以版本控制器路径为: 导致生成解决方案提示:路径有问题 解决办法: 1.直接在版本控制器重命名是不支持的,需要安装:  Visual Studio ...

  8. android之电话拨号器

    在android入门的案例中,除了HelloWorld这个经典案例,还有一个电话拨号器需要掌握,现在我就来个电话拨号器的示范,毕竟大牛也是从菜鸟进化而来的. 首先你应该知道自己要设置怎样的UI,然后创 ...

  9. 【SSO单点系列】(3):CAS4.0 登录页验证码的添加

    2016.08.23 更新 注意:这个教程只适合4.0版本的,4.1以及以上的版本的已经不试用了, 后面几篇有人提到过 源码网盘链接更新了下 : 链接: http://pan.baidu.com/s/ ...

  10. Codeforces Round #374 (div.2)遗憾题合集

    C.Journey 读错题目了...不是无向图,结果建错图了(喵第4样例是变成无向就会有环的那种图) 并且这题因为要求路径点尽可能多 其实可以规约为限定路径长的拓扑排序,不一定要用最短路做 #prag ...