揭开web前端的面纱

CSS变量

2017-03-02  本文已影响8人  ferrint

关键词:变量

不仅sass,less等可以使用变量,原生的css也是支持变量的,不知道大家有没有用过

语法:var( <自定义属性名> ,[<默认值 ]? ) 默认值可省略

   :root {
    --cl: #eee;
   }

   body {
     background-color: var(--cl,  #00BCD4);
   }

此时 #00BCD4不生效;

   .box{
    --in: #ccc;
   }
   body {
     background-color: var(--in,  #00BCD4);
   }

此时 #00BCD4生效,因为变量没有定义

CSS变量不合法的缺省特性

body {
  --color: 20px;
  background-color: #369;
  background-color: var(--color, #300);  // 不合法,背景变透明
}

会被这样解析
* background-color: transparent;
CSS变量的空格尾随特性

body {
  --size: 20;   
  font-size: var(--size)px;  // 不合法,无效
}

会被这样解析
* font-size:20 px; //多了一个空格
但是我们可以这样写

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

小demo

.box {
    --columns: 4;
    --margins: calc(24px / var(--columns));
    --space: calc(4px * var(--columns));
    --fontSize: calc(20px - 4 / var(--columns));
}
@media screen and (max-width: 1200px) {
    .box {
        --columns: 3;
    }
}
@media screen and (max-width: 900px) {
    .box {
        --columns: 2;
    }
}
@media screen and (max-width: 600px) {
    .box {
        --columns: 1;
    }
}

通过变量,我们就完成了响应式布局,是不是超级方便啊!!!
希望css能引进更多sass,less的语法,这样就不用每次都去找命令行编译啦哈哈♪(*)

上一篇 下一篇

猜你喜欢

热点阅读