Less 是一門 CSS 預處理語言,它擴展了 CSS 語言,增長了變量、Mixin、函數等特性,使 CSS 更易維護和擴展。
less,是方便咱們快速編寫CSS的工具,它加強了CSS代碼的擴展性和複用性。
Less 能夠運行在 Node 或瀏覽器端。javascript
下邊讓咱們來看一段咱們常常寫的代碼css
/** 咱們常常寫瀏覽器的兼容,假設咱們寫icon **/ nav a.home.active i { background: url('images/nav-home-on.png') no-repeat center; background-size: contain; -webkit-background-size: contain; -moz-background-size: contain; -o-background-size: contain; } nav a.home i { background: url('images/nav-home-off.png') no-repeat center; background-size: contain; -webkit-background-size: contain; -moz-background-size: contain; -o-background-size: contain; } nav a.topics.active i { background: url('images/nav-circle-on.png') no-repeat center; background-size: contain; -webkit-background-size: contain; -moz-background-size: contain; -o-background-size: contain; } nav a.topics i { background: url('images/nav-circle-off.png') no-repeat center; background-size: contain; -webkit-background-size: contain; -moz-background-size: contain; -o-background-size: contain; }
改瘋了有木有java
讓咱們看看less會怎麼作
//至關於新建一個函數 Mixins(混入) .border-radius(@radius:10px){ border-radius:@radius; -webkit-border-radius:@radius; -moz-border-radius:@radius; -o-border-radius:@radius; } .background-size(@type){ background-size: @type; -webkit-background-size: @type; -moz-background-size: @type; -o-background-size: @type; } //用法 .orderList{ background-color:#E36264; width:100px; height:200px; .border-radius(15px);//利用函數能夠省去不少的重複兼容代碼 .border-radius;//利用函數能夠省去不少的重複兼容代碼 .background-size(contain); } //這麼寫整個世界都美好了 nav a.topics i { background: url('images/nav-circle-off.png') no-repeat center; .background-size(contain); }
@arguments 在 Mixins 中具是一個很特別的參數,當 Mixins 引用這個參數時,
該參數表示全部的變量,不少狀況下,這個參數能夠省去你不少代碼。web
.boxShadow(@x:0,@y:0,@blur:1px,@color:#000){ -moz-box-shadow: @arguments; -webkit-box-shadow: @arguments; box-shadow: @arguments; } #header { .boxShadow(2px,2px,3px,#f36); }
less代碼
/** 你們都遇到過這樣的問題 咱們作換膚功能的時候都有一個主色調, 咱們寫完了代碼設計師說我想更換個主色調, 這時候你就會發現,我有100個地方用了主色調, 而後只能苦逼的改100次 太難受了!!有木有??有一個變量直接提出來多好? **/ //定義一個變量 @colorFff:#fff; //用法 footer{ background-color: @colorFff } nav{ color: @colorFff; } header{ border-right:1px solid @colorFff; }
最終生成的代碼
footer { background-color: #ffffff; } nav { color: #ffffff; } header { border-right: 1px solid #ffffff; }
less代碼
//又是重複代碼,less告訴你能夠這麼寫 有沒有以爲本身很會過日子,原來能夠這麼省 //定義一個公共樣式 .icon20{ width: 20px; height: 20px; display: inline-block; } //用起來 .icon-my{ .icon20; background: url('images/nav-my-off.png') no-repeat center; .background-size(contain); } .icon-car{ .icon20; background: url('images/nav-car-off.png') no-repeat center; .background-size(contain); }
對應生成的css
又是重複代碼,less告訴你能夠這麼寫 有沒有以爲本身很會過日子,原來能夠這麼省
.icon-my{ width: 20px; height: 20px; display: inline-block; background: url('images/nav-my-off.png') no-repeat center; } .icon-car{ width: 20px; height: 20px; display: inline-block; background: url('images/nav-car-off.png') no-repeat center; }
寫法
/* LESS Document */ //引入一個公共的less文件 @import "base.less";
//這樣的css代碼你該不陌生 .shopcar-item { font-size: 1.5rem; background-color: #ffffff; position: relative; padding: 10px 10px 10px 70px; border-bottom: 1px solid #ededed; } .shopcar-item img { width: 100%; } //我要選img必須加上前邊的那個,好吧 這樣還能夠接受,那麼這樣呢? .shopcar-item .item-con .add-btn, .shopcar-item .item-con .mul-btn { display: inline-block; padding: 5px 10px; background-color: #ff4354; color: #ffffff; border-radius: 5px; margin: 0 5px; }
咱們來看看less怎麼寫
//看看 嵌套關係清晰明瞭 告別冗長的選擇器 .shopcar-item { font-size: 1.5rem; background-color: #ffffff; position: relative; padding: 10px 10px 10px 70px; border-bottom: 1px solid #ededed; img { width: 100%; } .item-con{ position: relative; .add-btn,.mul-btn{ display: inline-block; padding: 5px 10px; background-color: #ff4354; color: #ffffff; border-radius: 5px; margin: 0 5px; } } }
用less以前咱們這麼寫
.nav { background-color: #ededed; } .nav.focus { background-color: #cccccc; } .nav:after { content: ""; display: block; width: 100px; height: 100px; }
less告訴你,咱們能夠這麼寫,一個元素的各類狀態一目瞭然
.nav{ background-color: #ededed; &.focus{ background-color: #cccccc; } &:after{ content: ""; display: block; width: 100px; height: 100px; } }
//運算及函數 @init: #111111; @transition: @init*2; .switchColor { color: @transition; }
最終生成的樣式
.switchColor { color: #222222; }
其實簡單的講,就是對數值型的 value(數字、顏色、變量等)
進行加減乘除四則運算瀏覽器
用less告別手動計算服務器
.px2rem(@name, @px){ @{name}: @px / 75 * 1rem; } .orderList{ .px2rem(font-size,32); background-color:#E36264; width:100px; height:200px; } //最終生成的css .orderList { font-size: 0.42666667rem; background-color: #E36264; width: 100px; height: 200px; }
<link rel="stylesheet/less" type="text/css" href="index.less" /> <script type="text/javascript" src="js/less.2.5.3.js"></script> //注: 一、順序不能錯 二、設置屬性 rel="stylesheet/less" 三、代碼須要服務器環境運行
我推薦使用Koala.exe 下載地址
多語言支持 支持Less、Sass、CoffeeScript 和 Compass Framework。
實時編譯 監聽文件,當文件改變時自動執行編譯,這一切都在後臺運行,無需人工操做。
編譯選項 能夠設置各個語言的編譯選項。
項目配置 支持爲項目建立一個全局配置,爲文件設置統一編譯選項。
錯誤提示 在編譯時若是遇到語法的錯誤,koala將在右下角彈出錯誤信息,方便開發者定位代碼錯誤位置。
跨平臺 Windows、Linux、Mac都能完美運行。app
手動運行 【執行編譯】或者點擊文件勾選自動編譯,它會自動檢測文件更改並從新編譯less