css 预编译期

基本原理

编写css的时候,受限于css语言本身,常常有一写难以处理的问题:

  • 重复的样式值 : 例如常用颜色,常用尺寸
  • 重复的代码片段: 例如,绝对定位,清除浮动
  • 重复的嵌套书写

由于从官方迟迟不对css语言本身做出改进,一些第三方的机构开始想办法解决这些问题

其中一种方案,就是预编译器

预编译器的原理很简单,即使用一种更加优雅的方式来书写代码,通过一个编译器,将其转换为浏览器可以识别的传统的css代码

2020-02-03-11-48-45.png
目前,最流行的预编译器就是LESS和SASS,由于两者特别相似,因此学习一种即可(这里介绍LESS)

2020-02-03-11-50-05.png

less官网:http://lesscss.org/
less中文文档1(非官方):http://lesscss.cn/
less中文文档2(非官方):https://less.bootcss.com/
sass官网:https://sass-lang.com/
sass中文文档1(非官方):https://www.sass.hk/
sass中文文档2(非官方):https://sass.bootcss.com/

LESS的安装和使用

从原理可知,要使用LESS,必须要安装LESS编译器

LESS编译器是基于node开发的,可以通过npm下载安装

  1. npm i -D less

安装好了less之后,它提供了一个CLI工具lessc,通过该工具即可完成编译

  1. lessc less代码文件 编译后的文件

试一试:

新建一个index.less文件,编写内容如下:

  1. // less代码
  2. @red: #f40;
  3. .redcolor {
  4. color: @red;
  5. }

运行命令:

  1. lessc index.less index.css

可以看到编译之后的代码:

  1. .redcolor {
  2. color: #f40;
  3. }

LESS的基本使用

具体的使用见文档:https://less.bootcss.com/

  • 变量
  • 混合
  • 嵌套
  • 运算
  • 函数
  • 作用域
  • 注释
  • 导入

webpack中使用less

  1. const HtmlWebpackPlugin = require('html-webpack-plugin')
  2. module.exports = {
  3. mode: "development",
  4. devServer: {
  5. open: true
  6. },
  7. module: {
  8. rules: [
  9. { test: /\.css$/, use: ["style-loader", "css-loader"] },
  10. { test: /\.less$/, use: ["style-loader", "css-loader?modules", "less-loader"] },
  11. ]
  12. },
  13. plugins: [
  14. new HtmlWebpackPlugin({
  15. template: "./public/index.html"
  16. })
  17. ]
  18. }