postcss基本使用

参考资料:13 分钟掌握 PostCSS_哔哩哔哩_bilibili(峰华前端)

postcss基本使用

postcss是个处理css相关文件的平台,可以通过插件来补全浏览器前缀、使用新特性转成旧的写法、px自动转rem、css语法规则检查等等。

搭建项目

新建文件夹 test-postcss

用vscode打开,命令里初始化项目

yarn init -y

新建index.html,内容包括

<head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="./style.css" />
    <title>test-postcss</title>
</head>
<body>
    <main>
        <div class="boxs">
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
        </div>
    </main>
</body>

新建style.css,内容有

main {
    
    
    margin-bottom: 24px;
    letter-spacing: 1px;
    font-size: 24px;
    height: 100vh;
    background-color: black;
}

.boxs {
    
    
    padding-bottom: 18px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    height: 100%;
    align-content: space-around;
}

.box {
    
    
    width: 100px;
    height: 100px;
    background: linear-gradient(45deg, blue, orange);
}

使用postcss

安装

yarn add postcss postcss-cli -D

运行

npx postcss style.css -o dist.css

这时可以看到根目录下的dist.css,内容和style.css一样,因为还没有配置任何插件。

把浏览器里的引用地址改为dist.css

 <link rel="stylesheet" href="./dist.css" />

使用autoprefixer插件

安装

yarn add autoprefixer -D

运行指令,通过参数使用这个插件

npx postcss style.css -o dist.css -u autoprefixer

此时打包后的代码仍无变化,可以用 npx autoprefixer --info 查看加前缀的属性。

修改支持的浏览器列表,让兼容Chrome 69以上的版本,在package.json中增加

  "browserslist": [
    "cover 99%",
    "Chrome >= 69"
  ],

运行指令(同上),可以看到生成的dist.css里面一些属性和值加了浏览器前缀

-webkit-align-content: space-around;
        -ms-flex-line-pack: distribute;
            align-content: space-around;
……
    background: -webkit-linear-gradient(45deg, blue, orange);
    background: -moz-linear-gradient(45deg, blue, orange);
    background: -o-linear-gradient(45deg, blue, orange);
    background: linear-gradient(45deg, blue, orange);

命令行带参不方便,可使用配置文件。根目录下新建postcss.config.js,内容为

module.exports = {
    
    
    plugins: [
        require("autoprefixer")
    ]
}

删除dist.css后运行不带参数的指令

npx postcss style.css -o dist.css

发现配置生效了。

使用postcss-preset-env

这个插件功能涵盖了autoprefixer,而且还有将高版本css转成低版本的能力,即css界的babel。

安装

yarn add postcss-preset-env -D

测试babel,需要把css的stage属性提高,使用比较新的属性测试,比如& 选择器

修改 postcss.config.js ,增加如下配置

const postcssPresetEnv = require('postcss-preset-env')

module.exports = {
    
    
    plugins: [
        postcssPresetEnv({
    
    
            stage: 0
        }),
    ]
}

然后在css中使用&嵌套选择器,以及使用比较新的属性padding-inline

.boxs {
    
    
    padding-inline: 12px;
}
.box {
    
    
    &:hover {
    
    
        background: linear-gradient(45deg, orange, blue);
    }
}

运行指令编译css,发现输出的css中 & 内的内容被提出来了,padding-inline 也变成了padding-leftpadding-right。鼠标滑过浏览器上的色块,也有变化。

使用stylelint

stylelint可以检查css写法是否规范

安装

yarn add stylelint stylelint-config-standard -D

根目录新建.stylelintrc.json文件,内容为

{
    
    
    "extends":"stylelint-config-standard"
}

在postcss.config.js里面配置

plugins: [
    require("stylelint")
]

再运行编译,发现控制台弹出黄色的警告,内容是哪些css写法不符合规范。如果没看到弹出警告,那尝试将某个属性名字或值修改成一个错误的写法,再编译,警告就出来了。

使用postcss-pxtorem

可以在打包时自动把px单位转换成rem

安装

yarn add postcss-pxtorem -D

在postcss.config.js中配置,其中propList为‘*’是将所有属性转换,而默认的只有字号字间距等几个属性。

	plugins: [
        require("postcss-pxtorem")({
    
    
            propList: ['*'],
        })
    ]

运行编译指令,发现输出的css中的px已经变成了rem。

指令简写

运行一长串指令不方便,可以添加到package.json中的scripts里

  "scripts": {
    
    
    "build":"postcss style.css -o dist.css"
  }

现在在命令行直接运行 yarn build 即可

在CRA中使用

先提交完代码,再暴露配置项

yarn eject

在config下的webpack.config.js中查找postcss,把postcss-preset-env中的stage改为0。注意有两处,分别是判断是否使用useTailwind。

然后再package.json中把postcss相关的依赖重新手动安装为最新版。重启项目,发现css新写法已经被转换了。

查找ident: ‘postcss’,在后面同级的plugins数组内最后添加pxtorem模块即可,当然先要手动安装依赖。

require('postcss-pxtorem')({
    
    
    propWhiteList: ['*'],
})

重启项目,px已经变成rem了。

猜你喜欢

转载自blog.csdn.net/daoke_li/article/details/130964160