关闭

css定义变量_css原生变量的使用和兼容 附带还有更高性能,文件更高压缩率的好处

时间: 2018-03-16阅读: 2160标签: 兼容

在开发中,css样式有一些属性往往需要重复使用,为了避免代码冗余,降低维护成本。我们需要使用css预编译工具【Sass/Less/Stylus】,随着这些工具的流行,CSS变量也开始规范制定,目前很多浏览器都已经支持了,css变量的兼容性:



变量的定义:

CSS中原生的变量定义语法是:--*,变量使用语法是:var(--*),其中*表示我们的变量名称。

关于命名这个东西,各种语言都有些显示,例如CSS选择器不能是数字开头,js中的变量是不能直接数值的,但是,在CSS变量中,这些限制通通没有。 但不能包含$,[,^,(,%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文。

无论是变量的定义和使用只能在声明块{}里面。


变量的使用:

1、使用:root 作用域来定义全局变量:(在媒体查询下也可以使用该作用域)

:root {   
  --text-color: red;
}  
p {   
  color: var( --text-color );   /*使用*/
}
a:hover{
    color:var( --text-color );   /*在伪类中使用*/
}

2、如果只需要在特定的元素下使用变量,采用局部定义:

#myid{
   --text-color: red;//*只能在id为myid的元素下使用,其他地方使用会失效*/
}

3、可以结合CSS3 calc()一起计算:

p{
  --size: 20;   
  font-size: calc(var(--size) * 1px);//20px
}

4、css变量可以组合使用,在CSS变量定义的时候可以直接引入其他变量给自己使用,例如:

p {
  --color: red;   
  --text-color: var(--color);//值为red
}


css变量的注意点:

1、当存在多个同样名称的变量时候,变量的覆盖规则由CSS选择器的权重决定的,但并无!important这种用法。

2、CSS属性名是不可以使用变量的。例如下面写法是错误的:

body {
    --bc: background-color;    
    var(--bc): #369;
}

3、如果我们使用的变量没有定义(注意,仅限于没有定义),则使用后面的值作为元素的属性值,例如:

.box {
  --1: #369;
}
body {
  background-color: var(--1, #cd0000);/*则此时的背景色是#cd0000*/
}

4、css变量是存在缺省值,只要定义正确,里面的值不对,结果以缺省值显示:如:

body {
  --color: 20px;
  background-color: #369;
  background-color: var(--color, #cd0000);/*背景色为:transparent*/
}

5、css变量默认尾部是有空格的。例如:

p{
  --size: 20;   
  font-size: var(--size)px;//等同于font-size:20 px;这里将使用元素默认的大小。这里可以结合上面例子calc()使用。
}




站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/513

关闭

caniuse.com_判断浏览器对css3、html5的兼容性测试工具

caniuse.com 是一个工具性的网站,帮助人们了解各个浏览器以及它们的不同版本对 HTML5、CSS3 等高级特性的支持情况。直接在上面的输入框中输入想要搜索的属性。然后结果就直接出来了。

vue项目中兼容ie8以上浏览器的配置

首先需要在根目录的index.html文件加入如下代码;安装babel-polyfill 插件;在入口文件main.js文件中引入插件;需要在webpack.base.config.js配置文件中做如下修改

vue不兼容安卓6.0以下版本,导致页面白屏

最近开发发现一个问题,貌似vue是不支持安卓6.0以下版本的安卓机的:但是最近需求又碰到了,就不得不解决这个问题,经过网上一大堆没用的查询之后,并没有找到真正可行的解决方案,于是使用vconsole在白屏的手机上打印了错误信息

如何只在IE上加载CSS样式表

IE一直是特殊的一个浏览器,我们可以使用一些方法来指定样式表只在IE浏览器下被加载。IE9以及低于IE9版本 :可以使用条件注释语句来加载特定于ie的样式表。如下所示,使用外部css3样式表。

低版本IE兼容汇总

JSON未定义;IE8下jquery报错:意外地调用了方法或属性访问;IE10以下不支持placeholder属性;IE7、8 parseInt处理0开头字符串异常问题;IE报错缺少标识符、字符串或数字

原生js中6种常见的兼容问题以及解决方案

1.键盘检测兼容写方法;2.阻止冒泡事件冒泡的兼容;3.鼠标箭头事件对象的兼容;4.阻止浏览器默认事件兼容;5.获取非行间样式的兼容写法

CSS浏览器兼容性与解决方法

所谓的浏览器兼容性问题,是指不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况;而造成浏览器兼容问题的根本原因,是浏览器的内核不同导致的。认识浏览器内核

document.head.appendChild(element) 在 IE8 及以下报错

问题:在开发中会遇到动态添加 script 标签的情况。但是在 IE8 以下会报如下错误:SCRIPT5007: Unable to get value of the property appendChild: object is null or undefined,解决办法如下

IE实现css3效果兼容

Shadow阴影Color,设置阴影颜色。Direction,设置阴影的方向,角度也是从0°~315°取值(跟PS的投影效果非常的相似。)Strength,设置投影强度,数值越大越模糊。Gradient渐变

js中的兼容问题汇总

在使用js的过程中,往往会发现关于IE浏览器的兼容问题,当然微软现在自己也打算抛弃IE,推出了edge浏览器,对于前端来说是个好消息.但IE的用户占比仍然不容小觑,因此这里整理下常见的几个兼容问题附上解决方案,以免不时之需.

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!