CSS工程化

PostCSS与CSS模块化
本文详细介绍PostCSS的功能及其插件生态系统,包括autoprefixer、cssnano等,如何使用PostCSS处理CSS新特性、模块合并及代码压缩。同时,探讨了CSS模块化问题的解决方案,如Less、Sass预处理器及PostCSS插件的应用,并介绍了如何利用webpack处理CSS,实现类名冲突的解决。

1. PostCSS

  • PostCSS本身只有解析能力
  • 各种神奇的特性全靠插件
  • 目前至少有200多个插件

2. PostCSS插件

  • import 模块合并
  • autoprefixer 自动加前缀
  • cssnano 压缩代码
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
const atImport = require('postcss-import');
const cssnext = require('postcss-cssnext');
const precss = require('precss');

module.exports = {
	plugins: [
		atImport,
		cssnext,
		precss,
		autoprefixer({
			browsers: ['Firefox > 1']
		}),
		cssnano
	]
};
  • cssnext 使用css新特性
:root{
	--mainColor: red;
	--dager-theme: {
		color: white;
		background-color: red;
	};
}
a{
	color: var(--mainColor);
}
.danger{
	@apply --danger-theme;
}
  • precss 变量、mixin、循环等

3. PostCSS支持的构建工具

  • CLI命令行工具
  • webpack postcss-loader
  • Gulp gupl-postcss
  • Grunt grunt-postcss
  • Rollup rollup-postcss

4. webpack和css

  • css-loader将css变成js
  • style-loader将js样式插入head
  • ExtractTextPlugin将css从js中提取出来,无需通过js加载,可以单独加载css
  • css modules解决css命名冲突的问题
  • less-loader,sass-loader各类预处理器
  • postcss-loader,PostCSS处理

5. 如何解决css模块化问题

  • Less、Sass等CSS预处理器
  • PostCSS插件(postcss-import / precss等)
  • webpack处理CSS(css-loader + style-loader)

6. PostCSS可以做什么?

  • 取决于插件可以做什么
  • autoprefixer、cssnext、precss等,兼容性处理
  • import模块合并
  • css语法检查、兼容性检查
  • 压缩文件

7. CSS modules是做什么的,如何使用?

  • 解决类名冲突的问题
  • 使用PostCSS或者webpack等构建工具进行编译
  • 在HTML模板中使用编译过程产生的类名

8. 为什么使用JS来引用、加载CSS?

  • JS作为入口,管理资源有天然优势
  • 将组件的结构、样式、行为封装到一起,增强内聚,减少跟外部的耦合
  • 可以做更多处理(webpack)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值