在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 ...
随机推荐
- TypeError: 'range' object does not support item assignment
TypeError: 'range' object does not support item assignment I was looking at some python 2.x code and ...
- gunicorn+flask使用与配置
gun.conf的内容 import os bind = '10.1.240.222:5000' workers = 4 backlog = 2048 worker_class = "syn ...
- dubbo作为消费者注册过程分析--????
请支持原创: http://www.cnblogs.com/donlianli/p/3847676.html 作者当前分析的版本为2.5.x.作者在分析的时候,都是带着疑问去查看代码,debug进 ...
- 瞅瞅!!免费看VIP视频的技巧
最近再逛强大的知乎,发现一个免费看VIP视频的方法(腾讯是可能有点不稳定) 以爱奇艺为例: 复制URL到www.a6a6.org 把地址输入到输入框,点击开始 然后会提示你输入提取码 输入:22336 ...
- Oracle常用sql语句(一)
# Sql的分类 # DDL (Data Definition Language):数据定义语言,用来定义数据库对象:库.表.列等: CREATE. ALTER.DROP DML(Data Manip ...
- python之抽象基类
抽象基类特点 1.不能够实例化 2.在这个基础的类中设定一些抽象的方法,所有继承这个抽象基类的类必须覆盖这个抽象基类里面的方法 思考 既然python中有鸭子类型,为什么还要使用抽象基类? 一是我们在 ...
- 神经网络,前向传播FP和反向传播BP
1 神经网络 神经网络就是将许多个单一“神经元”联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入.例如,下图就是一个简单的神经网络: 我们使用圆圈来表示神经网络的输入,标上“”的圆 ...
- NBUT1457
不知道哪里的oj..做了交不上去.. 也是莫队的模板题 #include<iostream> #include<cstring> #include<cstdio> ...
- python 全栈开发,Day12(函数的有用信息,带参数的装饰器,多个装饰器装饰一个函数)
函数的执行时,*打散.函数的定义时,*聚合. from functools import wraps def wrapper(f): # f = func1 @wraps(f) def inner(* ...
- Emmet Cheat Sheet(Sublime编辑)
快捷创建html标签 官网的Emmet Cheat Sheet :http://docs.emmet.io/cheat-sheet/ https://files.cnblogs.com/files/t ...