成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

CSS預(yù)編譯語(yǔ)言Less的用法總結(jié)

vboy1010 / 2138人閱讀

摘要:例如解析現(xiàn)在流行的預(yù)編譯語(yǔ)言和的優(yōu)點(diǎn)簡(jiǎn)單,易于維護(hù),管理更加容易高效的進(jìn)行開(kāi)發(fā)使用實(shí)現(xiàn)配色將變得非常容易。變量避免編譯,有時(shí)候需要輸出一些不正確的語(yǔ)法或者使用一些不認(rèn)識(shí)的專有語(yǔ)法,在前面加入。對(duì)于剛接觸的預(yù)編譯的前端,我推薦用。

1、什么是Less?

? less官網(wǎng):Less is More , Than CSS -少即是多,比CSS

? 官網(wǎng)gitHub:https://github.com/less/less.js

1.1 Less介紹

Less是一門css預(yù)處理語(yǔ)言,或是一種動(dòng)態(tài)樣式語(yǔ)言。擴(kuò)展了css語(yǔ)言,增加了變量、繼承、嵌套、運(yùn)算、函數(shù)等特性,使css更易維護(hù)和擴(kuò)展。(類似jquery)

Less既可以在瀏覽器端上運(yùn)行(支持IE7+、chrome、ff等主流瀏覽器,不支持iPad 待測(cè)試),也可以在Node服務(wù)器端運(yùn)行。

例如:

@base: #f938ab;
@width:200px;
.box-shadow(@style, @c) when (iscolor(@c)) {
    width:@width;
    height:@width;
    margin-top:20px;
  -webkit-box-shadow: @style @c;
  box-shadow:         @style @c;
}
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
  .box-shadow(@style, rgba(0, 0, 0, @alpha));
}
.box {
  color: saturate(@base, 5%);
  border-color: lighten(@base, 30%);
  .div1 { .box-shadow(0 0 5px, 30%) }
  .div2{
      .box-shadow(5px 5px 5px 5px,@base);
  }
}

解析:

.box {
  color: #fe33ac;
  border-color: #fdcdea;
}
.box .div1 {
  width: 200px;
  height: 200px;
  background-color: red;
  color: #fff;
  margin-top: 20px;
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.box .div2 {
  width: 200px;
  height: 200px;
  background-color: red;
  color: #fff;
  margin-top: 20px;
  -webkit-box-shadow: 5px 5px 5px 5px #f938ab;
  box-shadow: 5px 5px 5px 5px #f938ab;
}

現(xiàn)在流行的css預(yù)編譯語(yǔ)言:Less和Sass

1.2 Less的優(yōu)點(diǎn)

簡(jiǎn)單,易于維護(hù),CSS管理更加容易

高效的進(jìn)行開(kāi)發(fā)

使用Less實(shí)現(xiàn)配色將變得非常容易。

與CSS能夠很好地融合使用。

同時(shí)兼容CSS3

2、如何調(diào)用less 2.1 Less調(diào)用方法

運(yùn)用GUI工具運(yùn)用工具koala或者SimpLess是來(lái)自動(dòng)解析成.css文件(已給大家講過(guò),這里不在重復(fù))

引用less.js進(jìn)行解析,在頁(yè)面引入less.js對(duì).less文件進(jìn)行解析。

less官網(wǎng)在線解析:http://less2css.org

運(yùn)用node來(lái)解析成css

利用gulp等自動(dòng)化工具進(jìn)行解析研究中

2.2 GUI工具Koala

Source Map:編譯過(guò)程中生成 css 對(duì)應(yīng)的 map 文件。調(diào)試時(shí)使用,有了source map,瀏覽器里直接顯示less,非常方便

Line Comments:保留注釋,勾選后編譯中在注釋上一行添加一條空行。

Autoprefix:自動(dòng)給 CSS3 元素加上瀏覽器前綴。

參考:知乎

2.3 服務(wù)器端解析: less.js解析

第一步,引入styls.less,注意 rel=“stylesheet/less”

1、內(nèi)聯(lián)樣式:

? 2、外聯(lián)樣式

  

第二步,參數(shù)配置(可省略)具體意思待研究


參數(shù) 類型 默認(rèn)值 參數(shù) 說(shuō)明
evn String 取決于頁(yè)面的URL 可以在development或是production環(huán)境下運(yùn)行。
logLevel Number 2 2 - 提示信息(Information)和錯(cuò)誤(errors)1 - 錯(cuò)誤(Errors)0 - 空(Nothing) javascript控制臺(tái)日志量(錯(cuò)誤等級(jí))。注意:在production環(huán)境下,獲取不到日志。
async Boolean false false、true 是否異步導(dǎo)入文件
fileAsync Boolean false false 使用文件協(xié)議訪問(wèn)頁(yè)面時(shí)異步加載導(dǎo)入的文件。
poll Integer 1000 在監(jiān)視模式下,每?jī)纱握?qǐng)求之間的時(shí)間間隔(ms)。
functions Object 在functions這個(gè)對(duì)象中,key作為函數(shù)的名字。
dumpLineNumbers String comment、mediaQuery、all 當(dāng)設(shè)置dumpLineNumbers直接輸出源行信息到編譯好的CSSS的文件中時(shí),有利于你調(diào)試指定行。
relativeUrls Boolean false 是否調(diào)整相對(duì)路徑。如果為false,則url已經(jīng)是相對(duì)于入口的LESS文件。
rootpath String false 添加到每個(gè)URL開(kāi)始處的路徑

第三步,引入less.js,在此前加入.less文件。

第二步和第三步一起


注意:

如果加載多個(gè).less樣式表文件,每個(gè)多帶帶編譯,一個(gè)文件中定義的任何變量都無(wú)法再其他文件中訪問(wèn)。不會(huì)存在變量重復(fù)問(wèn)題。

在服務(wù)器環(huán)境下使用,本地直接打開(kāi)可能會(huì)報(bào)錯(cuò)!

Less兼容IE7+,如需兼容則需要先引入es5-shim.js即可。

其中還有一些高級(jí)配置,也可通過(guò)瀏覽器直接調(diào)試,具體見(jiàn)參考文檔。

不建議使用,增加服務(wù)器壓力,不利于調(diào)試。

2.4 Node解析

先按照node.js

下載less的管理工具包

$ sudo npm install -g less

執(zhí)行方法解析成css文件

$ lesssc styles.less styles.css

解析成min.css文件,安裝clean-css

$ npm install clean-css
$ lessc --clean-css styles.less styles.min.css

less命令行用法

node上安裝即時(shí)編譯的插件

$ (sudo) npm install -g less-watch-compiler
$ less-watch-compiler path_input path_out
$ less-watch-compiler path_input path_out fileName.less

添加廠商前綴

$(sudo) npm install -g less-plugin-autoprefix
$ less inputFile.less outFile.less —autoprefix=“browsers”
$ lessc test.less test.css --autoprefix="ie >= 8, last 3 versions, > 2%"

2.5 IDE 對(duì)應(yīng)的插件

SublimeText:Less-sublime、Sublime-Less-to-CSS、Less-build-sublime、SublimeOnSaveBuild

Dreamweaver:DMXzone Less CSS Compiler

Notepad++ 6.x:less.js語(yǔ)法高亮

Brackets:內(nèi)置支持 語(yǔ)法高亮,還有一些擴(kuò)展BracketLESS

3、Less語(yǔ)法詳解 3.1 注釋

/** 可解析 **/

//不可解析

3.2 變量

變量@來(lái)定義,允許多帶帶定義一系列通用的樣式,然后在需要的時(shí)候進(jìn)行調(diào)用。

//less                          
@cGray:#ccc; 
@cRed:red;
@width:80px;
@height:120px;
.div1{
  color:@cGray;
  border:1px solid @cGray;
  width:@width;
  height:@height;
}
.div2{
  color:@cRed;
  background:@cGray;
  width:@height;
  height:@width;
}
 /*生成的css*/
.div1 {
  color: #cccccc;
  border: 1px solid #cccccc;
  width: 80px;
  height: 120px;
}
.div2 {
  color: #ff0000;
  background: #cccccc;
  width: 120px;
  height: 80px;
}
3.3 嵌套

在一個(gè)選擇其中嵌套另一個(gè)選擇器來(lái)實(shí)現(xiàn)繼承,減少代碼量,代碼更清晰。代碼優(yōu)化考慮,最多嵌套三層。

&時(shí)解析的是同一個(gè)元素或此元素的偽類,沒(méi)有&解析是后代元素

// LESS
#demo2 {
  h2 {
    font-size: 18px;
    font-weight: bold;
  }
  p { 
    font-size: 12px;
    color:#90bd39;
    a { text-decoration: none;
      &:hover { text-decoration: underline; }
    }
  }
}
/* 生成的 CSS */
#demo2 h2 {
  font-size: 18px;
  font-weight: bold;
}
#demo2 p {
  font-size: 12px;
  color:#90bd39;
}
#demo2 p a {
  text-decoration: none;
}
#demo2 p a:hover {
  text-decoration: underline;
}
3.4 運(yùn)算

運(yùn)算提供了加減乘除操作,可以對(duì)任何數(shù)字、顏色、變量進(jìn)行運(yùn)算,可以實(shí)現(xiàn)屬性值之間的復(fù)雜關(guān)系。和Javascript代碼一樣。

//less
@basewidth: 100px;
@baseColor: #111;
@blue: #09c;
.div1 {
  color: @baseColor * 3;
  height: @basewidth;
  width: @basewidth * 2;
}
.div2 { 
  color: @baseColor + #003300;
  background-color: desaturate(@blue, 10%);
}
/* 生成的 CSS */
.div1 {
  color: #333333;
  height: 100px;
  width: 200px;
}
.div2 { 
  color: #114411;
  background-color: #0a94c2;
}

運(yùn)算有順序,和平時(shí)的四則運(yùn)算一樣

@var: 20px;
.div3 {
  width: @var + 5 * 2;
  height: (@var + 5 ) * 2;
}
.div3 {
  width: 30px;
  height: 50px;
}
3.5 顏色函數(shù)

色輪,spin(param1,param2)函數(shù)

互補(bǔ)色,互補(bǔ)的顏色正好在色輪相反的位置

@colorBase:#3bafdA;
@colorComplement:spin(@colorBase,180);//得到#dc6939

三元色。我們可以進(jìn)一步探討顏色模型并且創(chuàng)建一個(gè)三元色結(jié)構(gòu)?!叭保櫭剂x,是由三種顏色組成。因此,我們將色輪分成三部分,并且用函數(shù)spin()來(lái)設(shè)置旋轉(zhuǎn)的度數(shù):

@triadicSecondary:spin(@colorBase,-(360/3));//第二種顏色#b1d926
@triadicTertiary:spin(@colorBase, 360/3);//第三種顏色#db43b2

混合色,mix(param1,param2),對(duì)兩個(gè)顏色進(jìn)行混合

#div1{color:mix(red,yello)}//#ff800

明暗度,lighten(param1,param2)淺一點(diǎn),darken(param1,param2)深一點(diǎn)

@ahover:lighten(@colorBase,10%);
@afocus:darken(@colorBase,10%);

飽和度,saturate(param1,param2)和desaturate(param1,param2)。飽和度定義了一種顏色的深度。飽和度越大,顏色越亮麗,最低飽和度則會(huì)使顏色趨于灰色。

@btnHover:saturate(@colorBase,10%);
@btnFocus:desaturate(@colorBase,10%);
@btnDisable:lightness(desaturate(@colorBase,100%),30%;

智能色彩輸出。LESS讓我們的樣式變得更智能。舉例來(lái)說(shuō),我們能讓我們的樣式自己“思考”并決定什么顏色在什么條件下適用。假設(shè)我們正在創(chuàng)建一個(gè)網(wǎng)站模板,這是按鈕的
基本樣式,你打算用不同的顏色和風(fēng)格來(lái)擴(kuò)展它。但是我們?cè)鯓涌刂祁伾妮敵瞿兀课覀儺?dāng)然不希望深色的文字在深色的背景上,反之亦然。我們需要確保文本保留對(duì)比,以便于閱讀,這樣,contrast()函數(shù)就派上用場(chǎng)了。

@bColor:#000;
div{
  background-color:@bColor;
  color:contrast(@bColor);//#ff
}

3.6 繼承

混合可以將一個(gè)定義好的class A輕松引入到另個(gè)class B里面,從而簡(jiǎn)單實(shí)現(xiàn)class B繼承class A中的所有屬性。還可以帶參數(shù)調(diào)用,和函數(shù)一樣。

有默認(rèn)值,也可以不加默認(rèn)值,或者是不加參數(shù)、多個(gè)參數(shù)都可行。

需要帶括號(hào),如果是沒(méi)有變量的時(shí)候可不帶括號(hào)。

例如:

//less
.rounded-corners (@radius: 5px) {
  width:100px;
  height:30px;
  margin-bottom:10px;
  background-color: #ccc;
  color:#333;
  border-radius: @radius;
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
}
.div1{
  .rounded-corners();//.rounded-corners;
}
.div2{
  .rounded-corners(10px);
} 
/* 生成的 CSS */
.div1 {
  width: 100px;
  height: 30px;
  margin-bottom: 10px;
  background-color: #ccc;
  color: #333;
  border-radius: 5px;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
}
.div2 {
  width: 100px;
  height: 30px;
  margin-bottom: 10px;
  background-color: #ccc;
  color: #333;
  border-radius: 10px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
}
3.7 匹配模式

匹配模式,即使同一個(gè)函數(shù)用不同的參數(shù)時(shí)調(diào)用不同的方法。例如寫(xiě)一個(gè)三角:

.triangleBase{
  width:0;
  height:0;
  overflow:hidden;
}
.triangle(top,@w:5px,@c:#ccc){
  .triangleBase;
  border-width:@w;
  border-color:@c transparent transparent transparent;
  border-style:solid dashed dashed dashed;
}
.triangle(bottom,@w:5px,@c:#ccc){
  .triangleBase;
  border-width:@w;
  border-color:transparent transparent @c transparent;
  border-style: dashed dashed solid dashed;
}
.div1{
  .triangle(top);
}
.div2{
  .triangle(bottom);
} 

另一種寫(xiě)法,@_ 所有方法都調(diào)用:

.triangle(@_){
  width:0;
  height:0;
  overflow:hidden;
}
.triangle(top,@w:5px,@c:#ccc){
  border-width:@w;
  border-color:@c transparent transparent transparent;
  border-style:solid dashed dashed dashed;
}
.triangle(bottom,@w:5px,@c:#ccc){
  border-width:@w;
  border-color:transparent transparent @c transparent;
  border-style: dashed dashed solid dashed;
}
.div1{
  .triangle(top);
}
.div2{
  .triangle(bottom);
} 

生成的css:

.div1 {
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 5px;
  border-color: #cccccc transparent transparent transparent;
  border-style: solid dashed dashed dashed;
}
.div2 {
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 5px;
  border-color: transparent transparent #cccccc transparent;
  border-style: dashed dashed solid dashed;
}
3.8 其他

@arguments變量包含所有傳遞進(jìn)來(lái)的參數(shù)。

//@argumentts變量
.border(@w:30px,@c:red,@s:solid){
  border:@arguments;
}
.test_arguments{
  border();
}

避免編譯,有時(shí)候需要輸出一些不正確的css語(yǔ)法或者使用一些Less不認(rèn)識(shí)的專有語(yǔ)法,在前面加入~ 。

.test{
  filter: ~"progid:DXImageTransform.Microsoft.Alpha(opacity=20)";
}
.test{
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=20); 
}

!important關(guān)鍵字,會(huì)為所有混合所帶來(lái)的樣式,添加上!important

.test{
  .border()!important;
}

JavaScript 賦值,在樣式表中使用Javascript——相當(dāng)精彩。你可以使用表達(dá)式,也可以參考環(huán)境方向來(lái)使用反單引號(hào)。

@string: `"hello".toUpperCase()`; /* @string 變成 "HELLO" */ 
   
/* 你也可以使用前面提到的插值: */ 
@string: "HELLO";  
@var: ~`"@{string}".topUpperCase()`; /* 變?yōu)?"HELLO" */ 
   
/* 獲取文檔的信息 */ 
@height = `document.body.clientHeight`;

@import,用@import導(dǎo)入css或者less文件,減少服務(wù)器資源請(qǐng)求

less文件可以省略后綴名,同時(shí)可以在文件任意地方引入

css文件需要加入后綴名

用@import時(shí),Koala編譯會(huì)讓軟件崩潰,用node吧!

3.9 總結(jié)

注釋,可解析注釋和不可解析的注釋

變量用@定義,通過(guò)改變一個(gè)值改變多處樣式

嵌套,符合dom結(jié)構(gòu)

運(yùn)算,加減乘除四則運(yùn)算規(guī)律

繼承,和js函數(shù)一樣

匹配模式,類似函數(shù)參數(shù)

@arguments 變量包含所有傳遞進(jìn)來(lái)的參數(shù)、避免編譯~、!important為所有樣式加上!important

color函數(shù):lighten(@color,10%)darken(@color,10%)

導(dǎo)入:@import:"style" less文件擴(kuò)展名可選,@import:"style.css" 。減少服務(wù)器資源請(qǐng)求

字符串插入,字符串也可以用于變量中,然后通過(guò)@{name} 來(lái)調(diào)用

@base_url : "http://www.t1.chei.com.cn/common";  
background-image: url("@{base_url}/images/background.png"); 
4、Less和Sass的對(duì)比 相同點(diǎn)

兩者都是css預(yù)編譯

很多語(yǔ)法類似,思想一樣

不同點(diǎn)

Less環(huán)境以及使用方面比Sass簡(jiǎn)單

條件語(yǔ)句與控制,less不支持。Sass可以使用if { } else { } 條件語(yǔ)句,以及for { }循環(huán)。它甚至支持 and、 or和 not,以及 <、 >、 <=、 >= 和 == 等操作符。

koala輸出格式,LESS:normal(正常)、compress(壓縮)。而Sass提供4中輸出選項(xiàng):nested(正??s進(jìn))、expanded(括號(hào)不多帶帶占一行)、 compact(一個(gè)類一行顯示)和compressed (壓縮為一行)。

less基于純JavaScript,通過(guò)服務(wù)器端來(lái)處理的;Sass是基于Ruby的,在服務(wù)器端處理。

總結(jié)

? 如果你是Ruby或HAML的粉絲,那么Sass會(huì)是你的好助手。對(duì)我來(lái)說(shuō),一個(gè)前端開(kāi)發(fā)人員,我傾向于LESS,因?yàn)樗阌谝牒湍軌蚴褂肑avaScript的表達(dá)式以及文檔屬性。對(duì)于新手來(lái)說(shuō)更簡(jiǎn)單可用。

? 對(duì)于剛接觸的css預(yù)編譯的前端,我推薦用Less。

5、參考文檔

http://www.lesscss.net

http://lesscss.cn/usage/

http://less.bootcss.com/usage/

http://www.lesscss.net/#using...

Less中文網(wǎng)

color顏色函數(shù)

如何在瀏覽器中調(diào)試less & sass

源碼,其中還有對(duì)應(yīng)的PPT,想要看PPT的可以私信或留言給我,我發(fā)給大家。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/113261.html

相關(guān)文章

  • 前端常用技術(shù)概述--Less、typescript與webpack

    摘要:前言講起前端,我們就不能不講與,在這兩種技術(shù)廣泛應(yīng)用的今天,他們的擴(kuò)展也是層出不窮,的擴(kuò)展有等,的超集有等。如下注意你的樣式文件一定要在引入前先引入。截止目前,已經(jīng)發(fā)布了最新的版本。 前言:講起前端,我們就不能不講CSS與Javascript,在這兩種技術(shù)廣泛應(yīng)用的今天,他們的擴(kuò)展也是層出不窮,css的擴(kuò)展有Less、Sass、Stylus等,js的超集有Typescript等。今天我們就簡(jiǎn)...

    番茄西紅柿 評(píng)論0 收藏0
  • 大話css預(yù)編譯處理(一)通讀介紹篇

    摘要:使用預(yù)編譯處理的優(yōu)勢(shì)使用預(yù)處理器,可以提供缺失的樣式層復(fù)用機(jī)制減少冗余代碼,提高樣式代碼的可維護(hù)性。所以我們?cè)趯?shí)際項(xiàng)目中衡量預(yù)編譯方案時(shí),還是得想想,比起帶來(lái)的額外維護(hù)開(kāi)銷,預(yù)處理器有沒(méi)有解決更大的麻煩。 一、什么是css預(yù)編譯處理? CSS 預(yù)編譯處理,從字面上理解,就是預(yù)先編譯處理CSS。它擴(kuò)展了 CSS 語(yǔ)言,增加了變量、Mixin、函數(shù)等編程的特性,使 CSS 更易維護(hù)和擴(kuò)展。...

    Backache 評(píng)論0 收藏0
  • CSS預(yù)編譯

    摘要:安裝必須先安裝再安裝先安裝簡(jiǎn)單使用先安裝插件嵌套縮進(jìn)的代碼,它是默認(rèn)值沒(méi)有縮進(jìn)的擴(kuò)展的代碼簡(jiǎn)潔格式的代碼壓縮后的代碼轉(zhuǎn)官方文檔安裝設(shè)置,這里設(shè)置成參考使用教程阮一峰高級(jí)用法實(shí)例中文官網(wǎng)語(yǔ)言特性布局教程語(yǔ)法篇布局教程實(shí)例篇 安裝 sass 必須先安裝ruby,再安裝sass gem install sassless 先安裝npm npm install -g less 簡(jiǎn)單使用 less...

    genedna 評(píng)論0 收藏0
  • css還可以這么寫(xiě)?

    摘要:如果我們使用的話,就可以這么寫(xiě)我們要修改主色,只需要將修改為即可。二讓我們可以用偽類的寫(xiě)法去合并一些類。比如會(huì)編譯成可以看到,生成的中并沒(méi)有任何的變化,那這個(gè)做了什么呢其實(shí)在通過(guò)引用的對(duì)象內(nèi)發(fā)生了變化。 作為一個(gè)前端,毫無(wú)疑問(wèn)css肯定是最基礎(chǔ)的一項(xiàng)技能之一。css是一個(gè)標(biāo)記語(yǔ)言,沒(méi)有編程語(yǔ)言的諸多特性,比如變量定義,復(fù)用,嵌套等,所以相應(yīng)的開(kāi)發(fā)效率也受到限制。在追求效率和自動(dòng)化的當(dāng)下...

    kidsamong 評(píng)論0 收藏0
  • css還可以這么寫(xiě)?

    摘要:如果我們使用的話,就可以這么寫(xiě)我們要修改主色,只需要將修改為即可。二讓我們可以用偽類的寫(xiě)法去合并一些類。比如會(huì)編譯成可以看到,生成的中并沒(méi)有任何的變化,那這個(gè)做了什么呢其實(shí)在通過(guò)引用的對(duì)象內(nèi)發(fā)生了變化。 作為一個(gè)前端,毫無(wú)疑問(wèn)css肯定是最基礎(chǔ)的一項(xiàng)技能之一。css是一個(gè)標(biāo)記語(yǔ)言,沒(méi)有編程語(yǔ)言的諸多特性,比如變量定義,復(fù)用,嵌套等,所以相應(yīng)的開(kāi)發(fā)效率也受到限制。在追求效率和自動(dòng)化的當(dāng)下...

    zhiwei 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<