前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

后台工程师还是有必要了解CSS3浏览器内核及其前缀的秘密

一、浏览器内核及其前缀

CSS标准中各个属性都要经历从草案到推荐的过程,css3中的属性进展都不一样,浏览器厂商在标准尚未明确情况下提前支持会有风险,浏览器厂商对新属性的支持情况也不同,所以会加前缀加以区分,如果某个属性已经从草案变为了或接近推荐方案,并且厂商已经完全实现了推荐属性,那就不用加厂商前缀,例如:border-radius已经很成熟了,就不用加前缀,如果有些属性浏览器还未支持,就必须要带上对应浏览器内核的前缀


1、根据不同的浏览器内核,css前缀会有不同,最基本的浏览器内核有如下四种,其他的内核都是基于此四种进行再研发的;

① Gecko内核 前缀为-moz- 火狐浏览器

② Webkit内核 前缀为-webkit- 也叫谷歌内核,chrome浏览器最先开发使用,safari浏览器也使用该内核,国内很多浏览器也使用了webkit内核,如360极速、世界之窗、猎豹等;

③ Trident内核 前缀为-ms- 也称IE内核;

④ Presto内核 前缀为-o- 目前只有opera采用


举个例子:text-stroke 属性在谷歌浏览器里面还未支持,所以当你直接这样子写的时候,他并没有效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>浏览器私有前缀</title>
    <style>
        div {
            font-size: 100px;
            text-stroke: 1px #f00;
        }
    </style>
</head>

<body>
    <div>
        浏览器私有前缀
    </div>

</body>
</html>

效果图如下:

所以,想要让谷歌浏览器支持该样式属性,就必须带上谷歌浏览器内核的前缀,如下所示

<style>
        div {
            font-size: 100px;
            -webkit-text-stroke: 1px #f00;
        }
    </style>

效果图如下:

如果想要其他浏览器也支持这个属性,那就要分别写上其他浏览器该属性的内核的前缀,一般如果普通浏览器支持不带前缀的属性,也要跟上,例如:

 <style>
        div {
            font-size: 100px;
            text-stroke: 1px #f00;
            -webkit-text-stroke: 1px #f00;
            -moz-text-stroke: 1px #f00;
            -ms-text-stroke: 1px #f00;
            -o-text-stroke: 1px #f00;
        }
    </style>

2、绝对定位,绝对定位是不会占着原先的位置,它会漂浮元素的上面,例如:

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>浏览器私有前缀</title>
    <style>
        div {
            font-size: 100px;
            -webkit-text-stroke: 1px #f00;
            -moz-text-stroke: 1px #f00;
            -ms-text-stroke: 1px #f00;
            -o-text-stroke: 1px #f00;
            color: transparent;
            position: absolute
        }
    </style>
</head>

<body>
    <div>
        浏览器私有前缀
    </div>
    <img src="./image/1.jpg">

</body>

</html>

因为 【浏览器私有前缀】的字体用了绝对定位,所以它会漂浮在图片的上面,它不会占中原先的位置,也就是相当于该【浏览器私有前缀】好像不存在一样,效果如下:

如果没有用绝对定位的话,原先的元素还会占着原先的位置,图片会跟在原先元素的后面,那效果如下

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言