Vue+PostCSS——css必备

2020-07-12  本文已影响0人  前端阿峰

什么是postcss

postcss 一种对css编译的工具,类似babel对js的处理,常见的功能如:

  1. 使用下一代css语法

  2. 自动补全浏览器前缀

  3. 自动把px代为转换成rem(rem不熟悉的,点这)

  4. css 代码压缩等等

postcss 只是一个工具,本身不会对css一顿操作,它通过插件实现功能,autoprefixer 就是其一。

与 less sass 的区别

less sass 是预处理器,用来支持扩充css语法。

postcss 既不是预处理器也不是后处理器,其功能比较广泛,而且重要的一点是,postcss可以和less/sass结合使用

关于取舍,虽然可以结合less/sass使用,但是它们还是有很多重复功能,用其中一个基本就 ok 了。

如何使用

这里只说在webpack里集成使用,首先需要 loader

1. 安装

npm install postcss-loader –save-dev

2. webpack配置

一般与其他loader配合使用,下面*标部分才是postcss用到的

配合时注意loader的顺序(从下面开始加载)

rules: [
    {
        test: /\.css$/,
        exclude: /node_modules/,
        use: [
            {
                loader: 'style-loader',
            },
            {
                loader: 'css-loader',
                options: {
                    importLoaders: 1,
                }
            },
            {//*
                loader: 'postcss-loader'
            }
        ]
    }
]

3. postcss配置

项目根目录新建postcss.config.js文件,里面配置一些插件

module.exports = {
  plugins: {
    'autoprefixer': {
        browsers: '> 5%' //可以都不填,用默认配置
    }
  }
}

注:也可以在webpack中配置

常用的postcss插件

1. Autoprefixer

前缀补全,全自动的,无需多说

安装:

cnpm install Autoprefixer --save-dev

2. postcss-cssnext

使用下个版本的css语法

安装:

cnpm install postcss-cssnext --save-dev

别忘了在postcss.config.js配置:'postcss-cssnext':{}

cssnext包含了 autoprefixer ,都安装会报错,如下:

Warning: postcss-cssnext found a duplicate plugin ('autoprefixer') in your postcss plugins. This might be inefficient. You should remove 'autoprefixer' from your postcss plugin list since it's already included by postcss-cssnext.

3. postcss-pxtorem

把 px 转换成 rem
官网

安装:

cnpm install postcss-pxtorem --save-dev

配置项:

{
    rootValue: 100, // html节点设的font-size大小,由于chrome最小12px,所以基值要设置大写
    unitPrecision: 5, // 转rem精确到小数点多少位
    propList: ['font', 'font-size', 'line-height', 'letter-spacing'], // 指定转换成rem的属性,支持 * !
    selectorBlackList: [], // str或reg ,指定不转换的选择器,str时包含字段即匹配
    replace: true,
    mediaQuery: false, // 媒体查询内的px是否转换
    minPixelValue: 0 // 小于指定数值的px不转换
}

特殊技巧:不转换成rem

px检测区分大小写,也就是说Px/PX/pX不会被转换,可以用这个方式避免转换成rem

上一篇 下一篇

猜你喜欢

热点阅读