在webpack中使用postcss之插件cssnext
学习了precss插件包在webpack中的用法后,下面介绍postcss的另一个重要插件cssnext,步骤没有precss用法详细,主要介绍css4的语法,cssnext目前支持了部分新特性,你可以在css4-selectors.com网站上测试你的浏览器是否支持这些css4选择器。
cssnext能让未来的css语法在今天的浏览器中工作,fallbacks能让今天的css语法在以前的浏览器上工作。
一、安装postcss插件cssnext
cnpm i -D cssnext
: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); }
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的更多相关文章
- 在webpack中使用postcss之插件包precss
precss是一个预处理css的插件包,集成了很多postcss插件的功能,比如嵌套,变量,继承,混合,循环,判断.下面来介绍如何在webpack中使用precss.一.新建项目1.新建package ...
- webpack中插件 prerender-spa-plugin 来进行SEO优化(二十四)
vue.react对于开发单页应用来说带来了很好的用户的体验,但是同样有缺点,比如首页加载慢,白屏或SEO等问题的产生.为什么会出现这种情况呢?我们之前开发单页应用是这样开发的,比如首页 index. ...
- 深入浅出的webpack构建工具---PostCss(五)
一:PostCss是什么? PostCss是一个样式处理工具,它通过自定义的插件和工具生态体系来重新定义css.它鼓励开发者使用规范的css原生语法编写代码,然后配置编译器转换需要兼容的浏览器版本, ...
- webpack中clean-webpack-plugin插件使用遇到的问题及解决方法
webpack 会生成文件,然后将这些文件放置在 /dist 文件夹中,但是 webpack 无法追踪到哪些文件是实际在项目中用到的. 通常,在每次构建前清理 /dist 文件夹,是比较推荐的做法,因 ...
- [翻译]在gulp构建工具中使用PostCSS
前言 PostCSS已经在一段时间内迅速普及,如果你还不知道PostCSS或还没有使用它,我建议你看一下之前的一篇介绍文章<PostCSS简介>,其中介绍了使用PostCSS的基本方法,包 ...
- PostCSS的插件 -- 关于vue rem适配布局方案
PostCSS的插件 作用:用于自动将像素单元生成rem单位 记以下三种 postcss-plugin-px2rem postcss-pxtorem postcss-px2rem 任选一种,最近大家推 ...
- Webpack中hash与chunkhash的区别,以及js与css的hash指纹解耦方案
文件的hash指纹通常作为前端静态资源实现增量更新的方案之一,Webpack是目前最流行的开源编译工具之一,其强大的功能也带来很多坑(当然,大部分麻烦其实都可以在官方文档中找到答案). 比如,在Web ...
- 【原】react中如何使用jquery插件
react的思想是虚拟dom,提倡最好较少dom的操作,可是我们在写网页的时候,有些复杂的交互还是离不开jquery插件的.而且当你把jquery直接拿来用的时候,你会发觉会报错,要么是找不到那个插件 ...
- 在webpack里使用jquery.mCustomScrollbar插件
malihu-custom-scrollbar-plugin是一个依赖jquery的自定义网页滚动条样式插件 网站:http://manos.malihu.gr/jquery-custom-conte ...
随机推荐
- Bootstrap模态框(一个页面显示多个)的使用
在一个页面显示多个模态框时要讲每个模态框用div包裹起来,否咋会产生格式错误. <html> <head> <meta charset="utf-8" ...
- Django开发笔记三
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...
- 为caffe添加最简单的全通层AllPassLayer
参考赵永科的博客,这里我们实现一个新 Layer,名称为 AllPassLayer,顾名思义就是全通 Layer,“全通”借鉴于信号处理中的全通滤波器,将信号无失真地从输入转到输出. 虽然这个 Lay ...
- Linux系统打开core dump的配置【转】
什么是core dump core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.core du ...
- Lucas卢卡斯定理
当$p$为素数时 $$C_n^m\equiv C_{n/p}^{m/p}*C_{n\%p}^{m\%p}(mod\ p)$$ 设$n=s*p+q,m\equiv t*p+r(q,r<=p)$ 我 ...
- linux命令 dirname
功能: 获取给定路径的目录部分 利用man 查看dirname的说明如下: DESCRIPTION Output each NAME with its last non-slash co ...
- windows下设置计划任务自动执行PHP脚本
背景: 环境部署在linux下或者windows中,可以使用windows的自动任务设置自动执行脚本执行一些日常运维任务 图形界面设置相对比较简单 准备工作: wamp(集成的PHP执行环境) 已经写 ...
- 转载:configure执行流程(1.5.2)《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19619.html 我们看到configure命令支持非常多的参数,读者可能会好奇它在执行时到底做了哪些事情,本节将通过解析confi ...
- vue系列之生命周期
代码: <body> <div id="app"> {{message}} </div> <script type="text/ ...
- mysql命令行怎么清屏
例如: 怎么清屏? 哈哈 我也百度了半天,之后发现,这是个坑啊,dos(面向磁盘的操作命令)下面我们都是 cls 清屏,所以习惯性的用cls结果报错,打脸了吧.. mysql 命令行窗口不想看到那一堆 ...