css 中的预处理器

100 阅读1分钟

css 预处理器,在原本 css 语法的基础上扩展了 CSS 的基本功能。css 预处理器让使用 css 的方式变得更加灵活,不需要考虑浏览器的兼容性问题,并且它支持更加复杂的逻辑语法,比如变量、函数、混合、代码嵌套、继承、CSS 文件模块化(提升复用率)等等

css 有哪些预处理器

常见的 css 预处理器有:

无论使用哪种 css 预处理器,最终都会被编译成相同的 css。在预处理器中使用变量,就可以在颜色值、图片路径等通用的数据变化时来控制取值。

scss(Syntactically Awesome Style Sheets)

以 vue 项目为例,需要搭配 sass-loader、node-sass 来使用。

  • sass-loader:将 sass 编译成 css
  • node-sass:在 nodejs 环境中将 sass 转为 css

安装:

npm install sass-loader --save-dev
npm install node-sass --sava-dev

注:如果由于安装的版本过高报错时,需要指定一个版本再安装,比如:

npm install sass-loader@7.3.1 --save-dev

Node 版本过高,就需要进行降级,版本对应关系参照如下:

image.png

vue.config.js 中添加 scss 的配置:

image.png

scss 声明变量时,使用 $ 符号

$mainColor: green;
$fontSize: 24px;
div {
  color: $mainColor;
  font-size: $fontSize;
}

Less(Leaner Stylesheet)

Less 既可以在客户端上运行,也可以在服务端运行(Node.js)。

less 声明变量时,使用 @ 符号:

@mainColor: green;
@fontSize: 24px;
div {
  color: @mainColor;
  font-size: @fontSize;
}

stylus

扩展名为.styl,除了标准的 CSS 语法,stylus 也可以不带花括号和分号。

less 声明变量时,可以使用 $ 符号 或不使用符号,但不能使用 @ 符号:

mainColor = green
$fontSize = 24px
body
  color mainColor
  font-size fontSize

其它

除了变量之外,嵌套也是非常常用的,三种 css 预处理器的的写法相同:

.a {
  margin: 10px;
  .b {
    height: 100px;
    .c {
      color: red;
      &:hover {
        color:green;
      }
    }
  }
}

其它属性的使用,可以参照官方文档。