浏览器的兼容性

34 阅读2分钟

浏览器的兼容性

产生原因

  1. 由于官方标准制定速度泰安,各个厂商自行制定标准,导致了属性与元素之间的差异。
  2. 由于官方标准的变化,浏览器需要去发布新的版本去支持新的标准。

厂商前缀

比如:box-sizing,谷歌旧版本浏览器中使用 -webkit-box-sizing

标准正在讨论中,浏览器厂商希望先支持。

常见的厂商前缀:

  • IE: -ms-
  • chrome,safari: -webkit-
  • opera:-o-
  • firfox:-moz-

谷歌浏览器的滚动条样式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            overflow: auto;
        }

        /* 滚动条的整体样式 */
        div::-webkit-scrollbar {
            width: 10px;
            background-color: lightblue;
        }

        /* 滚动条的滑块样式 */
        div::-webkit-scrollbar-thumb {
            background-color: #999;
        }

    </style>
</head>

<body>
    <div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Temporibus provident modi, maiores excepturi aliquid
        voluptatibus ex? Maxime eos, voluptas, ratione quidem ducimus facere accusamus eius itaque molestiae voluptate,
        blanditiis veritatis!</div>
</body>

</html>

多个背景图中选一个作为背景

div{
    background-image:-webkit-imamge-set(url(1.jpg) 1x,url(2.jpg) 2x)
}

css hack

根据不同的浏览器(主要针对IE),设置不同的样式和元素。

  1. 样式

IE中css的特殊前缀:

  • *属性,兼容IE5,6,7
  • _属性,兼容IE5,6
  • 属性:值/9,兼容IE5~IE11
  • 属性:值/0,兼容IE8~IE11
  • 属性:值/9/0,兼容IE9~IE10

IE5~7 浮动元素外边距bug,外边距会加倍。

  1. 条件判断

主要也是兼容IE浏览器

其他浏览器不能识别,ie浏览器可以识别
<!--[if IE]>

<p>这是ie浏览器</p>

<!--[endif]>

<p>其他浏览器</p>

渐近增强和优雅降级

两种解决兼容性问题的思路,会影响代码书写的风格。

  1. 渐近增强:先适应大部分浏览器,然后针对新版本浏览器,加入新的样式。书写代码时先避免书写有兼容性问题代码,完成功能后,在去逐步加入新的标准。

  2. 优雅降级:先制作完整的功能,然后针对低版本浏览器进行特殊处理。书写代码时先不用在意兼容性,完成功能后,再去针对低版本浏览器进行处理。

caniuse

查找css兼容性的网站。

caniuse.com/