css 預處理工具,能夠將其對應的DSL(領域特定語言)編譯爲 css
compass 將 sass 編譯爲 css
)如今可用 node-sass
來編譯 sass/scss
文件css
node-sass
時,會去GitHub 下載一個 .node
的文件而這個文件託管在牆外的服務器上,因此失敗了 node-sass安裝失敗解決方案 .sass
或 .scss
爲文件後綴名稱(如今通常都是用 scss)less.js
在瀏覽器運行時中解析 less 代碼npm install -g less &lessc styles.less styles.css
(能夠加參數控制編譯後的css排版及壓縮).less
爲文件後綴名稱npm install stylus -g & stylus src/
(能夠加參數控制編譯後的css排版及壓縮).styl
爲文件後綴安裝 編譯器、對應 loader
,而後再 module.rules 配置其具體規則
變量符 @ $ 無變量符號直接變量名
前端
less @size: 10px; .box { width: @size; } scss $red: #c00; strong { color: $red; } stylus red = #c00 strong color: red css 的變量規範 /* global scope */ :root { --red: #c00; } strong { color: var(--red); }
* 變量做用域:less 惰性加載,sass,stylus 就近加載
嵌套語法一致,用 & 引用父集
-- 嵌套不建議超過 4 層node
* less 不支持跳出嵌套 * sass `@at-root` ``` @at-root 支持參數,跳出不一樣的嵌套 without: all,表示全部 without: rule,表示常規css,rule是默認值 without: media,表示media without: support,@support如今使用還不普遍 // child1 將跳出 parent 的嵌套 .parent1{ color:#f00; @at-root .child1 { width:200px; } } } ```
插值webpack
less @prefix: ui; .@{prefix}-button { color: #333; } sass $prefix: ui .#{$prefix}-button { color: #333; } stylus prefix = ui .{prefix}-button color #333
混入(mixin):預處理器最精髓的功能,樣式層面上的抽象(至關於copy代碼片斷)c++
@mixin
,使用時 @include
if else for each while
, less 使用 mixin when 處理
PostCSS經常使用插件 (用這些插件集合其實已經能夠代替 三大 css 預處理器)git
目前 Postcss 在通常項目中的用途github
autoprefixer
插件,爲css 屬性增長前綴postcss.config.js
// webpack.config.js { test: /\.less$/, loader: ExtractTextWebpackPlugin.extract([ {loader: 'css-loader', options: { minimize: true }}, 'postcss-loader', // 要在預處理器處理完以後,在使用 postcss-loader 'less-loader', ]), } // postcss.config.js module.exports = { plugins: [ require('autoprefixer')({ 'browsers': ['> 1%', 'last 2 versions'] }) ] }