cssnext 语法说明

支持书写CSS未来语法的插件,文章整理了支持PostCSS的常用语法

  • 自定义属性 & var()
  • 自定义属性集 & @apply
  • calc() & var()
  • 媒体查询 & @custom-media
  • 自定义选择器 & @custom-selector
  • 嵌套 & &
  • color()

自定义属性 & var()

:root{} 中定义常用属性,使用--前缀命名变量
使用 var() 调用

:root{
    --mainColor: red;
}

a{
    color: var(--mainColor);
}

编译后样式

a{
    color: red;
}

自定义属性集 & @apply

:root{} 中定义属性集,使用 -- 前缀命名属性集变量名
使用 @apply 进行调用
http://cssnext.io/playground/ 在线测试有效

:root {
  --centered: {
    display: flex;
    align-items: center;
    justify-content: center;
  };
}

.centered {
  @apply --centered;
}

编译后样式

.centered {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}

calc() & var()

使自定义属性支持 calc()

:root{
    --fontSize: 1rem;
}
h1{
    font-size: calc(var(--fontSize)*2);
}

编译后样式

h1{
    font-size: calc(1rem*2);
}

媒体查询 & @custom-media

支持使用<=,>=;代码在css最后
注意:变量名和括号之间保留空格

@custom-media --small-viewport (max-width: 30em);
@media (--small-viewport){
    body { font-size: 10rem;}
}

编译后样式

@media (max-width: 30em){
    body{
        font-size: 10rem;
    }
}

@custom-media --viewport-medium (width <= 50rem);
@media (--viewport-medium) {
body { font-size: calc(var(--fontSize) * 1.2); }
}

编译后样式

@media (max-width: 50rem){
    body{
        font-size: calc(1rem * 1.2);
    }
}

@media (width >= 500px) and (width <= 1200px){
    body{
        width: 100%;
    }
}

编译后结果

@media (min-width: 500px) and (max-width: 1200px){
    body{
        width: 100%;
    }
}

自定义选择器 & @custom-selector

@custom-selector :--button button, .button;
@custom-selector :--enter :hover, :focus;
@custom-selector :--heading h1, h2, h3, h4, h5, h6;

:--button{
    box-shadow: 0 0 1px black;
}

a:--enter{
    color: black;
}

:--heading { 
    margin-top: 0;
}

编译后样式

button, .button{
    box-shadow: 0 0 1px black;
}

a:hover, a:focus{
    color: black;
}

h1, h2, h3, h4, h5, h6 { 
    margin-top: 0;
}

嵌套 & &

@nest selector & 外层嵌套
支持嵌套媒体查询

a{
    & span{
        color: white;
    }
    
    @nest span &{
        color: blue;
    }
    /*嵌套@media*/
    @media (min-width: 30rem){
        color: yellow;
    }
}

编译后样式

a{
}

a span{
    color: white;
}

span a{
    color: blue;
}

@media (min-width: 30em) {
    a{
        color: yellow
    }
}

color()

更多颜色修饰:https://github.com/postcss/postcss-color-function#list-of-color-adjuster

a{
    color: color(red alpha(-10%));
}

a:hover{
    color: color(red blackness(80%));
}

编译后样式

a{
    color: #ff0000;
    color: rgba(255, 0, 0, 0.9);
}
a:hover{
    color: rgb(51, 0, 0);
}

更多语法规则:http://cssnext.io/
文章源码下载:https://github.com/NalvyBoo/PostCSS-Comn/tree/master/cssnext

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359

推荐阅读更多精彩内容

  • 原文地址:It’s Time To Start Using CSS Custom Properties 作者:Se...
    穆如清风化雨阅读 1,610评论 0 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,693评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,262评论 25 707
  • 基础 声明变量 普通变量 默认变量 变量覆盖:只需要在默认变量之前重新声明下变量即可 变量的调用 局部变量和全局变...
    Jill1231阅读 1,284评论 0 1
  • 一个有思想的人,无论走到哪里,发生什么事情,都会引起其深思。而后透其现象观其本质慨其感想。在我们这快节奏的生活中不...
    时过境迁99阅读 168评论 0 0