本文主要是記錄本身平常工做中用到過的一些less小技巧javascript
通常組件庫的樣式編寫都會爲使用者設計一些主題樣式更換方案,我這裏根據本身對主流組件庫antd和iview的研究,總結出這兩類:css
@import '~iview/src/styles/index.less'; // Here are the variables to cover, such as: @primary-color: #1B88EE;
rules: [{ test: /\.less$/, use: [{ loader: 'style-loader', }, { loader: 'css-loader', // translates CSS into CommonJS }, { loader: 'less-loader', // compiles Less to CSS options: { modifyVars: { 'primary-color': '#1B88EE', }, javascriptEnabled: true, }, }], //注意 less-loader 的處理範圍不要過濾掉 node_modules 下的 antd 包。
因此在給公司定製組件庫的時候咱們可使用這兩種方法來給使用者定製主題,固然了,咱們設計的時候最好和主流框架的變量名保持一致,使得使用者更好上手。java
@primary-color: #1B88EE; // 全局主色 @link-color: #1B88EE; // 連接色 @success-color: #4FC7AF; // 成功色 @warning-color: #F8AC59; // 警告色 @error-color: #F95355; // 錯誤色 @font-size: 28px; // 主字號 @text-color: rgba(0, 0, 0, .65); // 主文本色 @text-color-secondary : rgba(0, 0, 0, .45); // 次文本色 @disabled-color : rgba(0, 0, 0, .25); // 失效色 @border-radius: 4px; // 組件/浮層圓角 @border-color: #d9d9d9; // 邊框色 @box-shadow-base: 0 2px 8px rgba(0, 0, 0, .15); // 浮層陰影
不知道你們在實際開發中有沒有遇到過爲了一個padding或margin或fontsize而經常須要多寫一層class的狀況。node
.loop(20); .loop(@n, @i: 0) when (@i =< @n) { @size: @i*2; .pt-@{size} { padding-top: unit(@size, px) !important; } .pr-@{size} { padding-right: unit(@size, px) !important; } .pb-@{size} { padding-bottom: unit(@size, px) !important; } .pl-@{size} { padding-left: unit(@size, px) !important; } .mt-@{size} { margin-top: unit(@size, px) !important; } .mr-@{size} { margin-right: unit(@size, px) !important; } .mb-@{size} { margin-bottom: unit(@size, px) !important; } .ml-@{size} { margin-left: unit(@size, px) !important; } .fs-@{size} { font-size: unit(@size, px) !important; } .loop(@n, (@i + 1)); } // e.g. pt-2 pt-16 pt-40 fs-16 fs-24等等
把以上這段加到通用less裏後,若是有一些特殊的邊距或字體就能夠直接寫class="mb-20"這樣了,能夠省去一些功夫多寫個沒必要要的class,固然經常使用的width或height之類的均可以經過when循環解決,須要注意的less沒有if-else判斷,全部的判斷也都是經過when關鍵字來解決。antd