CSS常见兼容性问题总结

浏览器的兼容性问题通常是因为不同的浏览器对不同的代码有不同的解析造成页面显示不统一的情况,这里的浏览器通常指IE 6,7,8,9... Google Firefox Opera Safari,但更多的情况还是需要处理IE 6,7,8 Firefox的兼容问题。

CSS Hack

为了让浏览器达到统一的显示效果,需要针对不同浏览器或者版本写出对应的可解析的CSS样式,所以把这个过程叫做CSS Hack

CSS Hack 主要分为三种:IE条件注释、CSS属性前缀、选择器前缀

(1)IE条件注释法,即在正常代码之外添加判定IE浏览器或对应版本的条件注释,符合条件的浏览器或者版本号才会执行里边的代码。

<!--  lt是小于 gt是大于 lte是小于等于 gte是不小于 !是不等于 -->

<!-- [if IE]>
你想要执行的代码
<![endif]--> <!-- [if lt IE 8]>
你想要执行的代码
<![endif]--> <!-- [if ! IE 8]>
你想要执行的代码
<![endif]-->

(1)IE条件注释法,即在正常代码之外添加判定IE浏览器或对应版本的条件注释,符合条件的浏览器或者版本号才会执行里边的代码。

/* 可以先使用“\9"标记,将IE分离出来,再用”*"分离出IE6/IE7,最后可以用“_”分离出IE6 */
/* 所以可以按着优先级就能给特定的版本捎上特定颜色 */
.type{
color: #111; /* all */
color: #222\9; /* IE */
*color: #333; /* IE6/IE7 */
_color: #444; /* IE6 */
}

以下情况IE6可以识别,当属性一起写在{}里头时,前者肯定会被后者覆盖。要使!important有效,就应置于多个{}间。

h1{color: #f00 !important; }
h1{color: #000;}
h2{color: #f00 !important; color: #000;} <h1>test1</h1>
<h2>test2</h2>

在标准模式中:

  1. “-″减号是IE6专有的hack
  2. “\9″ IE6/IE7/IE8/IE9/IE10都生效
  3. “\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack
  4. “\9\0″ 只对IE9/IE10生效,是IE9/10的hack

(3)选择器前缀法,顾名思义,就是给选择器加上前缀。

  • IE6可识别 *div{color:red;}
  • IE7可识别 *+div{color:red;}
  • @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有效 等等

CSS 兼容问题的更多相关文章

  1. CSS兼容各浏览器的hack

    CSS兼容各浏览器的hack:建议:尽可能的手写代码,可以有效的提高学习效率和深度.浏览器的种类多,麻烦自然也多,主要是各种浏览器对某些属性的渲染效果并不相同,所以有时候需要专门针对特定浏览器或者特定 ...

  2. 主流浏览器css兼容问题的总结

    最近又搞了一波网站的兼容,由于要求ie浏览器还是要兼容到ie8,所以调起来还是各种蛋疼. 现在就post一些做兼容的总结,可能不够全面,但是可以告诉大家如何避过一些坑.主要测试了chrome,fire ...

  3. CSS兼容问题实用建议

    CSS兼容问题,是美工最头痛的问题.做测试时,用谷哥和360浏览器(最新)都没有什么问题,用 IE6/IE8测试,问题就冒出来了.微软现在出IE10,我电脑上已经无法用IE6准确测试,IE-TESTE ...

  4. css兼容问题集合

    css兼容问题 兼容问题 1.文字本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白 ...

  5. css兼容各个浏览器的三角形图标

    css兼容各个浏览器的三角形图标 在当前流行的的网站上,我们经常会看到一些小三角形的下拉提示(微博顶部的下拉菜单),简单的方式可以使用一张图片代替,但是随着前端技术的发展,以及开发者对于前端性能的“吹 ...

  6. CSS兼容常用技巧

    请尽量用xhtml格式写代码,而且DOCTYPE影响 CSS 处理,作为W3C标准,一定要加DOCTYPE声明. 1.div的垂直居中问题 vertical-align:middle; 将行距增加到和 ...

  7. ie6 7 8 9 firefox的css兼容问题

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. css兼容问题与实践归纳总结

    css兼容问题与实践归纳总结 一.IE6/7 原生块元素与display:inline-block; <div style="display:inline-block;"&g ...

  9. 浏览器 CSS 兼容写法的测试总结

    做前端最讨厌的就是 IE6,7,8,虽然被淘汰的浏览器,但是在中国用户仍然很多,不可能像国外网站一样直接就不管它了,这样会流失很多流量啊. 现在有了IE9,IE10还好些,几乎和 Chrome,Fir ...

  10. Normalize.css源码注释翻译&浏览器css兼容问题的理解

    版本v5.0.0源码地址: https://necolas.github.io/normalize.css/5.0.0/normalize.css 翻译版: /*! normalize.css v5. ...

随机推荐

  1. Hbuilder的使用技巧

    /*注:本教程针对HBuilder5.0.0,制作日期2014-12-31*/创建HTML结构: h 8 (敲h激活代码块列表,按8选择第8个项目,即HTML代码块,或者敲h t Enter)中途换行 ...

  2. phpcms分类信息地区识别跳转

    <script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></scri ...

  3. VelocityTracker监控速度!!!

    用来追踪触摸事件(flinging事件和其他手势事件)的速率.用obtain()函数来获得类的实例,用addMovement(MotionEvent)函数将motion event加入到Velocit ...

  4. Java练习 SDUT-1217_蟠桃记

    蟠桃记 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第 ...

  5. 云原生生态周报 Vol. 8 | Gartner 发布云原生趋势

    业界要闻 Gartner 发布云原生基础设施未来的八大趋势:权威分析机构 Gartner 在对 2020 年技术趋势的展望当中指出:“预计2020年所有领先的容器管理软件均内置服务融合技术,到2022 ...

  6. Linux系统服务及软件包的管理

     要点回顾 free命令查看内存 整理buffer与cache的作用 1.buffer(缓冲) 是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的. 2.cache(缓存) 从CPU ...

  7. redis 清除缓存

  8. H3C IP及其相关协议

  9. 有什么类方法或是函数可以查看某个项目的Laravel版本的?

    查看composer.json文件: "require": { "php": ">=7.0.0", "fideloper/p ...

  10. jQuery 文档操作 - remove() 方法

    移除所有 <p> 元素: 定义和用法 remove() 方法移除被选元素,包括所有文本和子节点. 该方法不会把匹配的元素从 jQuery 对象中删除,因而可以在将来再使用这些匹配的元素. ...