🌟 PostCSS 入门教程

阿轩的BUG
文章191
评论56
标签101
站点日志
作者总数:1位
置顶文章:0篇
标签总数:101条
文章总数:196篇
评论总数:56条
微语总数:201条
运行天数:2317天
最近更新:2026-07-28
文章标签
最新评论
Sherlock
2025-08-21
不是应该打包成apk文件吗,怎么突然就运行编译了,下一步呢
老金er
2025-05-25
人生设计非常必要,在信息化发达的今天,周围大部分人依然只能过着人生工程模式生活,长时间生活洗礼后,尽管“人生工程”已经不再适合很多人,他们也无法做出任何改变,人生设计给我们提供了新的思路,值得尝试
赏帮赚
2025-05-25
职场太多的尔虞我诈
三笑
2024-08-16
emlog6.0.1可以升级支持吗?
pony
2024-07-08
这篇文章提供了一种新的人生规划方法——"人生设计",它借鉴了产品设计的理念,鼓励人们以创造性和探索性的方式思考和规划自己的生活。以下是对这篇文章的几个评价维度: 创新性:将产品设计的理念应用于人生规划是一个新颖的视角,为人们提供了一种跳出传统生活轨迹,探索个性化生活路径的方法。 实用性:文章不仅提出了理念,还详细介绍了具体的实施步骤,包括自我评估、制定计划、原型设计和实践选择等,具有很强的操作性。 启发性:通过强调好奇心、不断尝试、重新定义问题等心态,文章鼓励人们打破常规,勇于探索未知,这对于激发个人潜能和创造力具有积极作用。 适应性:"人生设计"理念适用于不同人生阶段和不同背景的人,无论是希望从头开始的人,还是已经取得一定成就但希望探索新方向的人,都可以从中获得启发。 情感共鸣:文章对许多人对传统生活轨迹的不满和对改变的渴望进行了深刻的洞察,能够引起读者的共鸣。 可持续性:人生设计强调的是一个持续迭代和试错的过程,这与现实生活的发展规律相吻合,有助于人们在不断变化的环境中做出适应性调整。 教育意义:作为一种人生规划方法,"人生设计"可以作为教育的一部分,帮助年轻人更早地学会自我探索和规划,为未来的生活和职业发展打下基础。 局限性:尽管"人生设计"提供了一种新的思考框架,但它可能需要个人具备一定的自我认知和反思能力,对于一些缺乏自我探索经验的人来说,可能需要额外的指导和支持。 总体来说,这篇文章提供了一种有价值的人生规划方法,对于那些渴望改变、寻求个性化生活的人来说,是一种有益的参考和指导。
首页实用干货 🌋

PostCSS 是什么?

PostCSS 是专门用于处理 CSS 代码的工具,通过一系列的插件来修改最终样式,这样不仅可以让我们使用最新的 CSS 特性,提高开发效率,还可以转义 CSS,实现兼容大多数浏览器。它相当于 CSS 界的 Babel

为什么使用 PostCSS

例如,我们可以利用 autofixer 插件,把一些新的 CSS 特性加上浏览器特有的前缀,来兼容不同的浏览器:

box-sizing: border-box;

-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;

或者利用 postcss-preset-env 插件,来使用最新的 CSS 特性,并转义为主流浏览器支持的版本:

.box {
  background: #000000;

  &:hover {
    background: #000000;
  }
}

.box:hover {
  background: #000000;
}

PostCSS 通过插件也支持 CSS 预处理工具的特性,这样可以单独使用它,不过也可以结合像 SASS 之类的库一起使用。

接下来我们看一下 PostCSS 的使用流程和常见插件的例子。需要注意的是,大多数构建工具内置了 PostCSS,例如 vite,可以直接配置,我们这里直接使用命令行的形式,方便演示。

初始化项目

mkdir boxes
cd boxes
yarn init -y

index.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="style.css" />
    <title>Document</title>
  </head>
  <body>
    <main>
      <div class="boxes">
        <div class="box"></div>
        <div class="box"></div>
        <div class="box"></div>
      </div>
    </main>
  </body>
</html>

style.css

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: sans-serif;
}

main {
  width: 100vw;
  max-width: 100%;
  height: 100vh;
  background: hsl(220deg, 10%, 5%);
}

.boxes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  height: 100%;
  align-items: center;
  justify-items: center;
}

.box {
  width: 100px;
  height: 100px;
  background: linear-gradient(
    156deg,
    rgba(0, 13, 168, 1) 0%,
    rgba(255, 0, 239, 1) 100%
  );
  border-radius: 8px;
  box-shadow: 0 0 48px rgba(255, 0, 239, 0.2);
}

live server 预览

安装并运行 PostCSS

安装安装

yarn add --dev postcss postcss-cli

运行

npx postcss style.css -o dist.css

index.html 替换

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

Autoprefixer

自动加前缀,兼容浏览器 安装:

yarn add --dev autoprefixer

运行:

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

没变化,因为这些属性在大部分浏览器都是可以使用的。看一下需要加前缀的属性,以及 autoprefixer 现在匹配的目标浏览器:

npx autoprefixer --info

修改支持的浏览器列表

  "browserslist": [
    "cover 99.5%"
  ]

再运行:

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

可以看到很多都加上了前缀 配置文件使用方式(后面使用这种):postcss 支持配置文件:(根目录)postcss.config.js

添加 autoprefixer

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

再运行,不用 -u 了:

npx postcss style.css -o dist.css

PostCSS Preset Env

使用最新的 css 特性,并编译为就浏览器兼容的语法,类似于 babel preset env 安装:

yarn add --dev postcss-preset-env

配置:

stage0:要使用 css 最新的嵌套语法

const postcssPresetEnv = require("postcss-preset-env");
module.exports = {
  plugins: [
    require("autoprefixer"),
    postcssPresetEnv({
      stage: 0, // 要使用 css 最新的嵌套语法
    }),
  ],
};

改动 style.css:

.box 使用嵌套方式设置 hover,交换渐变色
.box {
  width: 100px;
  height: 100px;
  background: linear-gradient(156deg, rgba(0,13,168,1) 0%, rgba(255,0,239,1) 100%);
  border-radius: 8px;
  box-shadow: 0 0 48px rgba(255,0,239,0.2);

  &:hover {
    background: linear-gradient(156deg, rgba(255,0,239,1) 0%, rgba(0,13,168,1) 100%);
  }
}

运行:

npx postcss style.css -o dist.css

StyleLint

检查 CSS 语法 安装:

yarn add --dev stylelint stylelint-config-standard

添加配置文件:

标准检查

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

配置 postcss.config.js

const postcssPresetEnv = require("postcss-preset-env");
module.exports = {
  plugins: [
    require("stylelint"),
    require("autoprefixer"),
    postcssPresetEnv({
      stage: 0,
    }),
  ],
};

运行:

npx postcss style.css -o dist.css

PostCSS pxtorem

转换 px 为 rem 安装:

yarn add --dev postcss-pxtorem

配置:

const postcssPresetEnv = require("postcss-preset-env");
module.exports = {
  plugins: [
    require("stylelint"),
    require("autoprefixer"),
    postcssPresetEnv({
      stage: 0,
    }),
    require("postcss-pxtorem"),
  ],
};

修改 style.css

main 添加 font-size: 24px;

main {
  width: 100vw;
  max-width: 100%;
  height: 100vh;
  background: hsl(220deg, 10%, 5%);
  font-size: 24px;
}

运行:

npx postcss style.css -o dist.css

npm script

build

"scripts": {
    "build": "postcss style.css -o dist.css"
}
上一篇
🏝 面试官:生产环境构建时为什么要提取css文件?
下一篇
🌌 PHP的trait时,引入多个trait时同名方法冲突,该如何处理方法?