美文网首页
CSS兼容问题

CSS兼容问题

作者: 彼得朱 | 来源:发表于2019-07-16 13:59 被阅读0次

[TOC]

1、起因

浏览器兼容性问题,通常是因为不同的浏览器对同一段代码有不同的解析,造成页面显示不统一的情况。

这里谈到的浏览器,主要指IE6/IE7/IE.....FireFox、chrome、Opera、Safari。但更多的兼容还是考虑IE6/IE7/IE8/IE....之间的斗争

2、CSS Hack

  • 我们为了让页面形成统一的效果,要针对不同的浏览器/版本而写css的过程就叫做CSS hack

(1)IE条件注释法

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

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

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

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

<!--[if ! IE 8]>
    你想要执行的代码
<![endif]-->
<!--示例1-->
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="base.css"/>
<![endif]-->
1.png
2.png

(2)CSS属性前缀法

即给css的属性添加前缀,比如*可以被IE6/IE7识别,但_只能被IE6识别,IE6-IE10都可以识别"\9",IE6不能识别!important ,Firefox不能识别 * _ \9

说明:

在标准模式中

"-" 减号是IE6专有的hack

"\9" IE6-IE10 都生效

"\0" IE8-IE10 都生效,是IE8-IE10的hack

"\9\0" 只对IE9-IE10 生效

<!--示例2-->
        <style>
            h1{
                color: #FF0000;     /* all */
                color: #222\9;   /* IE */
                *color: #333;    /* IE6/IE7 */
                _color:#444;     /* IE6 */
            }
        </style>
3.png
4.png
5.png
6.png
IEtester:http://www.ietester.cn/ 测试兼容的

(3)选择器前缀法

IE6 可识别 *div{color:red}

IE7 可识别 *+{color:red}

@media screen \9{...} 只对IE6/IE7生效

@media \0screen {body {background:blue}} 只对IE6/7/8有效

。。。。。

<!--示例3-->
        <style>
            *h2{
                color:orange;
            }
        </style>

3、浏览器私有属性

  • -moz 代表Firefox浏览器私有属性
  • -ms 代表IE浏览器私有属性
  • -webkit 代表chrome、Safari私有属性
  • -o 代表Opera私有属性

注意:对于私有属性,要把标准写法放到最后,兼容性写法放到前面

我们经常会在某个CSS的属性前添加一些前缀,比如:-webkit-,-moz-,-ms-,这些就是浏览器的私有属性。

为什么会出现私有属性呢?这是因为制定HTML和CSS标准的组织w3c动作是很慢的

  • 通常,有W3C组织成员提出一个新属性,比如说圆角border-radius,大家都觉得很好,但w3c制定标准,要走很复杂的程序、审查等,而浏览器市场推广时间紧,如果一个属性已经够成熟了,就会在浏览器中加入支持。
  • 但是为避免日后w3c公布标准时有所变更,会加入一个私有前缀,比如 -webkit- border-radius,通过这种方式来提前支持新属性,等到日后w3c公布了标准,border-radius的标准写法确立之后,再让新版的浏览器支持border-radius这种写法。
<!--示例4-->
.box{
                width: 300px;
                height: 300px;
                -webkit-border-radius: 150px;
                -moz-border-radius: 150px;
                -ms-border-radius:150px;
                -o-border-radius: 150px;
                border-radius: 150px;
                background-color: royalblue;
            }

4、浏览器CSS样式初始化

针对不同浏览器渲染效果的不同,可以进行浏览器css样式初始化,也就是加一个reset.css文件

/*淘宝的reset.css*/
blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,th,ul {margin:0;padding:0}
body,button,input,select,textarea { font:12px/1.5 tahoma,arial,'Hiragino Sans GB',\5b8b\4f53,sans-serif}
h1,h2,h3,h4,h5,h6 {font-size:100%}
address,cite,dfn,em,var {font-style:normal}
code,kbd,pre,samp {font-family:courier new,courier,monospace}
small {font-size:12px}
ol,ul {list-style:none}
a {text-decoration:none}
a:hover {text-decoration:underline}
sup {vertical-align:text-top}
sub {vertical-align:text-bottom}
legend {color:#000}
fieldset,img {border:0}
button,input,select,textarea {font-size:100%}
table {border-collapse:collapse;border-spacing:0}

5、具体CSS问题

相关文章

  • 兼容性问题

    CSS兼容性问题PC页面布局兼容JS兼容问题移动页面兼容问题 CSS兼容问题.header {_width:100...

  • ie8兼容问题

    ie8中遇到的兼容问题以及解决方案 一.CSS3 1.可以通过在css中引入pie.htc,处理兼容问题(可处理的...

  • 移动端兼容性问题

    input 兼容问题-webkit-appearance:none !important;上面不行的话 直接css...

  • CSS和CANVAS动画

    兼容问题 css兼容:IE10+、FF、oprea(animation);safari、chrome(-webki...

  • css的ie6兼容问题

    title: css的ie6兼容问题date: 2017-06-13 13:45:13tags: css笔记 pn...

  • css3属性background-size的学习总结及兼容解决

    目录 定义 css语法 DOM原生语法 jQuery语法 兼容问题移动端4.4- Android手机不支持css3...

  • 兼容的相关知识点

    一、 CSS hack 是什么? CSS hack 是处理兼容问题的一种方式,即针对不同的浏览器编写不同的代码,...

  • CSS 兼容问题

    背景 在看到一些css源码的时候,发现有些属性前面带有-moz,-webkit等前缀。 -moz- 代表firef...

  • CSS兼容问题

    一、ie8的css兼容 1、ie8支持:first-child,但不支持:last-child。因为前者是css2...

  • CSS兼容问题

    [TOC] 1、起因 浏览器兼容性问题,通常是因为不同的浏览器对同一段代码有不同的解析,造成页面显示不统一的情况。...

网友评论

      本文标题:CSS兼容问题

      本文链接:https://www.haomeiwen.com/subject/rkazkctx.html