css的var()函数

2020-03-16 16:03:20

参考地址 css的var()函数

  随着sass,less预编译的流行,css也随即推出了变量定义var函数。var()函数,就如同sass和less等预编译软件一样,可以定义变量并且进行对应的使用。

  兼容性

  css,以及浏览器的更新迭代下,浏览器过于新的或者过于旧的版本都是存在兼容的情况的。

  使用方法

  通过--  + 字段名:值(这个值可以是任何我们在css输入的值)进行定义类似的js的定义,调用时候通过var()函数进行对应的调用,如下面代码一样var(--字段名)进行调用

body {
    --size: 20px;
    font-size: var(--size);    // 20px
    padding:var(--size);       // 20px
}

  如上面代码一样通过定义--size为20px,然后font-size和padding同时通过var()函数进行复用,同时将font-size和padding设置为20px。当然如果不一定是20px,也是可以通过计算进行对应的如calc(var(--size) * 2),这样的话就相当于变成40px。但是这样写也是会有一点不好的就是,类似js的块级元素,在body{}里定义的的--size是无法在其他样式类名中进行调用的

.test{
    --size: 20px;
    font-size: var(--size);           // 20px
    padding:calc(var(--size) * 2)      // 40rpx
}

.test2{
    font-size: var(--size);         // 无法识别
}

  但是也是有些需要注的地方,例如

// 错误写法.test{--size: 20;font-size: var(--size)px;      // 这里的写法是错误,这样会读取成font-size:20 px,值的中间会多了一个空格,导致读取失败}// 正确写法.test2{--size: 20px;--size2: 20;font-size: var(--size);font-size: calc(var(--size2) * 1px);}

  我们在使用var的时候会发现,在样式中定义的字段只能在某个样式中使用,类似es6的{},在里面定义的只能在里面进行使用,为了更加便捷的使用,var()还是有公用定义字段的方法的。

  通过在:root定义的字段,就相当于css中的全局变量,可以在css中任意的样式中进行使用

:root{--size:20px;}.test{font-size: var(--size);  // 20px}.test2{font-size: var(--size);  // 20px}

  最后,如果你问我用sass和less去对比var()的话,我还是会用sass或者less,无论是可变性还是测试上都会比较方便,因为在使用var()定义的字段,在审查元素中的样式也只会显示--字段名,如果你是全局的话,就基本上去微调样式的时候,就会牵一发而动全身,这样无论是测试修改上,还是编写的时候,都会造成不必要的麻烦。当然最重要的还是浏览器的兼容性,都是预编译上的使用更加的合理。


  • 2019-12-20 13:27:16

    腾讯地图谷歌和高德地图等自定义地图区别

    腾讯、百度、Google的地图投影均采用Web Mercator 投影坐标系;腾讯与Google的地图瓦片分辨率及切片范围是完全相同的,仅仅是命名规则稍有不同,这就使得同一位置和缩放级别的地图瓦片是完全可以重叠的;而百度地图每个缩放级别分辨率与前两者均不相同,而且地图瓦片的坐标原点做了一定的偏移,导致百度地图与前两者的瓦片是无法重叠的,这是因为百度在GCJ-02的基础上又进行了加密处理,形成了百度独有的BD-09坐标系。

  • 2019-12-22 08:06:48

    如何快速撤销上一次的commit

    在平时工作中使用git难免会提交一些错误的文件到git库里,这时候,撤销吧,怕把正确的文件删除了,不撤销重新改又很麻烦,下面,我就从提交的三个阶段,来讲解如何撤销错误的操作。

  • 2019-12-23 14:54:03

    RPC, REST ,GraphQL区别比较优劣

    其实在使用和学习的过程中,有很多文章都对比过它们的异同,但是大部分文章并没有从一个相对客观的角度来对比,更多是为了突显一个的优点而刻意指出另外一个的缺点。这让我想到一句话,脱离业务情景谈技术就是耍流氓。

  • 2019-12-23 23:38:59

    vue-apollo的多客户端的用法

    vue-apollo的多客户端的用法以及apollo.js的配置 关于如何安装和如何使用,这篇文章就先暂时不介绍了,如果不清楚就看我另一篇关于vue-apollo的用法 在做项目中,有时候后端的接口是按模块功能去划分的,那么请求的地址就会不同,关于vue-apollo的多客户端配置如下

  • 2019-12-27 08:40:55

    align-self和align-items的区别

    align-items在伸缩容器上使用它,伸缩容器内部所有的元素都一致地受制于align-items的值。 但是有些时候,我们希望伸缩容器内部某个元素在侧轴上的排列方式有所差异。此时就不能使用 align-items,因为align-items作用于整体。我们希望作用于部分。这就是align-self的发挥场地。