学习了precss插件包在webpack中的用法后,下面介绍postcss的另一个重要插件cssnext,步骤没有precss用法详细,主要介绍css4的语法,cssnext目前支持了部分新特性,你可以在css4-selectors.com网站上测试你的浏览器是否支持这些css4选择器。
cssnext能让未来的css语法在今天的浏览器中工作,fallbacks能让今天的css语法在以前的浏览器上工作。

一、安装postcss插件cssnext

cnpm i -D cssnext

二、cssnext支持的css4新特性

:root {
  --lh: 30px;
  --we: #fff;
  --ora: #FFA500;
  --bg-font: {
    background: #00BBFE;
    color: var(--we);
  }
}

1、变量

/* before */
.vars-1 {
  line-height: var(--lh);
  color: var(--we);
  background-color: #CA1F2D;
}

/* after */
.vars-1 {
  line-height: 30px;
  color: #fff;
  background-color: #CA1F2D;
}

2、嵌套

/* before */
.nested {
  background: #00BD00;
  & p {
    display: inline-block;
    color: white;
  }

  /* @nest rule (for complex nesting) */
  @nest span & {
    color: blue;
  } 

  /* media query automatic nesting */
  @media (min-width: 500px) {
    color: yellow;
  }
}

/* after */
.nested {
  background: #00BD00;
}
.nested p {
  display: inline-block;
  color: white;
}
.nested {
  /* @nest rule (for complex nesting) */
}
span .nested {
  color: blue;
}
.nested {
  /* media query automatic nesting */
}
@media (min-width: 500px) {
  .nested {
    color: yellow;
  }
}

3、继承

/* before */
.extended {
  @apply --bg-font;
}

/* after */
.extended {
  background: #00BBFE;
  color: #fff;
}

4、calc()函数

.tcalc{
    background-image: url(dog.png);
    background-position: calc(100% - 50px) calc(100% - 20px);
}

5、color()函数

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

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

/* after */
a {
  color: rgba(255, 0, 0, 0.9);
}

a:hover {
  color: rgb(51, 0, 0);
}

6、image-set()函数

Webkit内核"safari6"和"chrome21"支持css4的background-image新规范草案image-set。通过Webkit内核的浏览器私有属性"-webkit",image-set为Web前端人员提供了一种解决高分辨率图像的显示,用来解决苹果公司提出的Retian屏幕显示图片的技术问题。

在cssnext出来之前,可以这样做,来解决兼容性问题。

.logo-icon {
  background-image: url(dog.png);
  background: image-set(url(dog.png) 1x,url(dog.png) 2x) center;
}

不像Media Queries,image-set不需要告诉浏览器使用什么图像,而是直接提供了图像让浏览器选择。

  • 如果浏览器不支持image-set,则启用background-image;
  • 如果浏览器支持image-set,浏览器会选择image-set中的@1x背景图像;
  • 如果浏览器支持image-set,而且是在retina屏幕下,浏览器会选择image-set中的@2x背景图像。

postcss插件cssnext出来后,可以放心用image-set,cssnext会自动处理未来的新语法。

/* before */
.imgset {
    background-image: image-set(url(img/dog.png) 1x,
                url(img/tiger.png) 2x,
                url(img/lien.png) 600dpi);
}

/* after */
.imgset{
    background-image: url(img/dog.png);
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi){
    .imgset{
        background-image: url(img/tiger.png);
    }
}
@media (-webkit-min-device-pixel-ratio: 6.25), (min-resolution: 600dpi){
    .imgset{
        background-image: url(img/lien.png);
    }
}

7、一些伪类

/* before */
div:not(.not-1, .not-2) {
  text-align: center;
} 

/* after */
div:not(.not-1):not(.not-2) {
  text-align: center;
}
/* before */
.mymixin{
  background-color:blue;
}
.mymixin:matches(:hover, .helper) {
  background-color:#00BBFE;
  & a {
    color: #fff;
  }
}

/* after */
.mymixin{
  background-color:blue;
}
.mymixin:hover, .mymixin.helper {
  background-color:#00BBFE;
}
.mymixin:hover a, .mymixin.helper a {
  color: #fff;
}

8、一些选择器

/* before */
.shape {
  float: left;
  width: 300px;
  shape-outside: circle(50%);
} 

/* after */
.shape {
  float: left;
  width: 300px;
  -webkit-shape-outside: circle(50%);
          shape-outside: circle(50%);
}

shape选择器可将文字排列在非矩形对象周围,比如曲线。
三、cssnext还未支持的css4新特性
1、一些伪类

a:has( > span ) {
    border: 1px solid #000;
}
li:not(:has(p)) {
    padding-bottom: 1em;
}  

2、混合

background-blend-mode: hue | multiply;
mix-blend-mode: screen;

目前浏览器还不支持,可以先在photoshop中混合图片。
3、一些选择器

.main {
  position:relative;
}
.exclusion {
  position: absolute;
  top: 14em;
  left: 14em;
  width: 320px;
  wrap-flow: both;
}

exclusion选择器使文字环绕在定位矩形对象的四周。

在webpack中使用postcss之插件cssnext的更多相关文章

  1. 在webpack中使用postcss之插件包precss

    precss是一个预处理css的插件包,集成了很多postcss插件的功能,比如嵌套,变量,继承,混合,循环,判断.下面来介绍如何在webpack中使用precss.一.新建项目1.新建package ...

  2. webpack中插件 prerender-spa-plugin 来进行SEO优化(二十四)

    vue.react对于开发单页应用来说带来了很好的用户的体验,但是同样有缺点,比如首页加载慢,白屏或SEO等问题的产生.为什么会出现这种情况呢?我们之前开发单页应用是这样开发的,比如首页 index. ...

  3. 深入浅出的webpack构建工具---PostCss(五)

    一:PostCss是什么?  PostCss是一个样式处理工具,它通过自定义的插件和工具生态体系来重新定义css.它鼓励开发者使用规范的css原生语法编写代码,然后配置编译器转换需要兼容的浏览器版本, ...

  4. webpack中clean-webpack-plugin插件使用遇到的问题及解决方法

    webpack 会生成文件,然后将这些文件放置在 /dist 文件夹中,但是 webpack 无法追踪到哪些文件是实际在项目中用到的. 通常,在每次构建前清理 /dist 文件夹,是比较推荐的做法,因 ...

  5. [翻译]在gulp构建工具中使用PostCSS

    前言 PostCSS已经在一段时间内迅速普及,如果你还不知道PostCSS或还没有使用它,我建议你看一下之前的一篇介绍文章<PostCSS简介>,其中介绍了使用PostCSS的基本方法,包 ...

  6. PostCSS的插件 -- 关于vue rem适配布局方案

    PostCSS的插件 作用:用于自动将像素单元生成rem单位 记以下三种 postcss-plugin-px2rem postcss-pxtorem postcss-px2rem 任选一种,最近大家推 ...

  7. Webpack中hash与chunkhash的区别,以及js与css的hash指纹解耦方案

    文件的hash指纹通常作为前端静态资源实现增量更新的方案之一,Webpack是目前最流行的开源编译工具之一,其强大的功能也带来很多坑(当然,大部分麻烦其实都可以在官方文档中找到答案). 比如,在Web ...

  8. 【原】react中如何使用jquery插件

    react的思想是虚拟dom,提倡最好较少dom的操作,可是我们在写网页的时候,有些复杂的交互还是离不开jquery插件的.而且当你把jquery直接拿来用的时候,你会发觉会报错,要么是找不到那个插件 ...

  9. 在webpack里使用jquery.mCustomScrollbar插件

    malihu-custom-scrollbar-plugin是一个依赖jquery的自定义网页滚动条样式插件 网站:http://manos.malihu.gr/jquery-custom-conte ...

随机推荐

  1. 【Linux】Linux中Swap与Memory内存简单介绍

    背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...

  2. Django 查询集简述

    通过模型中的管理器构造一个查询集(QuerySet),来从数据库中获取对象.查询集表示从数据库中取出来的对象的集合.它可以含有零个.一个或者多个过滤器.过滤器基于所给的参数限制查询的结果. 从SQL ...

  3. 【转】每天一个linux命令(1):ls命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单.如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单. 通过ls命令不仅可以查看linux ...

  4. oem 重建

    OracleDBControl启动失败to local from URL=http://your-url.co     方法: emca -deconfig dbcontrol db -repos d ...

  5. VirtualBox上的Ubuntu附加功能

    主机:Windows 10家庭中文版,VirtualBox 版本 5.2.22 r126460 (Qt5.6.2),Ubuntu 18.04, 在主机上安装了VirtualBox,然后在Virtual ...

  6. oracle 进阶之model子句

    本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6692841.html 一,  mode ...

  7. jQuery .on() and .off() 命名空间

    jQuery .on() and .off() 命名空间 博客分类: 生活 前端开发   jQuery1.7开始,jQuery引入了全新的事件绑定机制,jQuery .on() 和 off() 两个函 ...

  8. redis介绍以及安装

    一.redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的values类型相对更多,包括字符串.列表.哈希散列表.集合,有序集合. 这些数据类型都支持pus ...

  9. LeetCode(41):缺失的第一个正数

    Hard! 题目描述: 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输 ...

  10. laravel 接口跨域

    最方便的方法,新建一个middleWare,把这个middleware加入到全局中间件,所有的请求,都会经过这个中间件的过滤. php artisan make:middleware CrossHtt ...