Less-學習筆記

這是less官網的介紹:css

http://www.1024i.com/demo/less/document.htmlhtml

你們都是在一塊兒學習,最好的地方無疑就是官網,不過每一個人學習方式和基礎不一樣,以致於學完後掌握纔會出現差別less

開源中國提供了好的直接編譯器:函數

http://tool.oschina.net/less學習

接下來就開始學習和了解less的使用和優點。測試

 一.@:變量的使用spa

1.原生css的一些不方便.net

咱們先看咱們常常寫的css:code

.aa{ height:200px; background:#066;}
.bb{ height:200px; background:#066;}
.dd{ height:200px; color:#066;width:100px;}

咱們發現,高度取值相同咱們卻要寫3次,顏色取值也是要寫屢次,這時候若是css像語言同樣,能夠定義一個變量,這裏面存放公用取值,假如能以下方式實現:htm

var hei1="200px";
var cor1="#066";
.aa{ height:hei1; background:cor1;}
.bb{ height:hei1; background:cor1;}
.dd{ height:hei1; color:cor1;width:100px;}

這樣咱們就會很是的方便,在書寫css的時候一樣取值應用變量就ok了。

2.less帶來的優點

經過@在less中咱們能夠定義變量和賦值,而且被任何部分去引用,還能夠二次定義替換和後定義被引用

less文件:

/*最基本變量聲明*/
@nice-blue: #5B83AD;
#dd1 { color: @nice-blue; }
/*變量內容加法操做*/
@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;
#dd2 { color: @light-blue; }
/*變量互相引用*/
@w10: "10px";
@10: 'w10';
@content: @@10;
#dd3 { width: @content; }
/*變量的做用域和二次賦值*/
@var: "10px";
#dd4 {
    @var: "20px";
    #dd5 {
        @var: "30px";
        width: @var;
        @var: "40px";
    }
    width: @var;
}
/*變量可按需去查找*/
#dd6 {
    width: @ww;
}
@ww: "200px";

 編譯後css文件:

/*最基本變量聲明*/
#dd1 {
  color: #5B83AD;
}
/*變量內容加法操做*/
#dd2 {
  color: #6c94be;
}
/*變量互相引用*/
#dd3 {
  width: "10px";
}
/*變量的做用域和二次賦值*/
#dd4 {
  width: "20px";
}
#dd4 #dd5 {
  width: "40px";
}
/*變量可按需去查找*/
#dd6 {
  width: "200px";
}
"Administrator" Sid: S-1-5-21-779701839-1365383676-4129786368-500

 每一次註釋下都是一種用法,

我的感受相互引用和二次賦值咱們用的不會太多,用起來彷佛麻煩了,

在二次定義中咱們發現了編譯css的時候,{]做爲做用域,一樣遵循能夠訪問到外側和當前層變量的設置,並不能訪問到同級內部變量的設置。

二:Mixins:函數的使用

 1.原生css的一些不方便

咱們常常書寫的css:

.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#ee1 {
  color: #111;
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#ee2 {
  color: red;
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}

咱們發現.bordered的定義在下面都會被使用到,若是咱們在#ee1和#ee2能直接獲取到.bordered會方便得多,相似以下的功能:

var .bordered={
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#ee1 {
  color: #111;
  .bordered
}
#ee2 {
  color: red;
 .bordered
}

能夠經過他的名字去引用到樣式,不過咱們可能更須要他能夠這樣實現:

.bordered{
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
  .width
}
.width{
  width:20px;
  .bordered
 }
#ee1 {
  color: #111;
  .bordered
}
#ee2 {
  color: red;
 .bordered
}

css之間能夠經過類名等互相調用,而且拿到的是其中的樣式

2.less帶來的優點

less爲咱們提供了這種處理辦法,咱們能夠定義出通用和選擇器和對應樣式,而且其餘選擇器引用這個通用選擇器名字就能夠引入裏面的樣式;咱們在這種通用選擇器還能夠設置參數,和函數同樣,參數能夠賦值給裏面樣式的取值

less文件:

/*最基本通用內容使用*/
.bordered {
    border-top: dotted 1px black;
    border-bottom: solid 2px black;
}
#ee1 {
    color: #111;
    .bordered;
}
#ee2 {
    color: red;
    .bordered;
}
/*帶參數的使用*/
.width2(@w) {
    width:@w;
}
#ee3 {
    color: #111;
    .width2("100px");
}
#ee4 {
    color: red;
    .width2("200px");
}
/*多個參數使用*/
.border3(@w,@sty,@color) {
    border:@w @sty @color;
}
#ee5 {
    color: #111;
    .border3("1px","solid","#000");
}
#ee6 {
    color: red;
    .border3("3px","solid","#ccc");
}
/*多個參數經過arguments統一賦值*/
.border4(@w,@sty,@color) {
    border:@arguments;
}
#ee7 {
    color: #111;
    .border4("1px","solid","#000");
}
#ee8 {
    color: red;
    .border4("3px","solid","#ccc");
}

css文件:

/*最基本通用內容使用*/
.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#ee1 {
  color: #111;
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#ee2 {
  color: red;
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
/*帶參數的使用*/
#ee3 {
  color: #111;
  width: "100px";
}
#ee4 {
  color: red;
  width: "200px";
}
/*多個參數使用*/
#ee5 {
  color: #111;
  border: "1px" "solid" "#000";
}
#ee6 {
  color: red;
  border: "3px" "solid" "#ccc";
}
/*多個參數經過arguments統一賦值*/
#ee7 {
  color: #111;
  border: "1px" "solid" "#000";
}
#ee8 {
  color: red;
  border: "3px" "solid" "#ccc";
}
"Administrator" Sid: S-1-5-21-779701839-1365383676-4129786368-500

arguments統一變量參數賦值,針對複合樣式是很是有用的,不帶參數處理,那就是徹底引用樣式了,帶了參數,咱們能夠在使用通用樣式名的時候去根據狀況去賦值

3.less函數mixin的其餘提供

:::::!important咱們能夠加上,這個優先權的設置在ie上有時候仍是要用的

:::::在定義通用加參數咱們能夠認識默認值的,引用時不傳入實際參數就會採用默認取值

less:

/*帶參數的使用*/
.width2(@w:20px) {
    width:@w;
}
#ee3 {
    color: #111;
    .width2()!important;
}
#ee4 {
    color: red;
    .width2("200px");
}

css:

/*帶參數的使用*/
#ee3 {
  color: #111;
  width: 20px !important;
}
#ee4 {
  color: red;
  width: "200px";
}
"Administrator" Sid: S-1-5-21-779701839-1365383676-4129786368-500

 

三:嵌套使用

1.原生css的一些不方便

 針對層級嵌套,咱們原生css寫法:

.box{height:200px;}
.box div{ width:300px;}
.box div a{ color:#0C9;}

 咱們會以爲選擇器太多重複了,但願能實現以下的處理:

.box{height:200px;div{ width:300px;a{ color:#0C9;}}}

 他的後代元素就放在定義裏面

2.less帶來的優點

less幫咱們實現了這種免去重複選擇器的功能

less文件:

.box{
 height:200px;
 div{ 
  width:300px;
  a{ color:#0C9;}
 }
}

css文件:

.box {
  height: 200px;
}
.box div {
  width: 300px;
}
.box div a {
  color: #0C9;
}
"Administrator" Sid: S-1-5-21-779701839-1365383676-4129786368-500

3.less嵌套僞類和篩選處理

::::::&的使用,咱們看下面幾種原生css寫法

.box div a {
  color: #0C9;
}
.box div a.fous {
  width: 200px;
}
.box div a:hover {
  color: #000;
}

僞類效果和篩選器的使用是很是常見的,僞類除了:hover還有:first:last:active等;

篩選的實現就是.a.b或者div.a或者div.a.b.c這種形式

less也爲咱們提供了支持,就是在選擇器前加上 &,less文件:

.box{
 height:200px;
 div{ 
  width:300px;
  a{ color:#0C9;
   &.fous{width: 200px;}
   &:hover{color: #000;}
  }
 }
}

生成的css文件:

.box {
  height: 200px;
}
.box div {
  width: 300px;
}
.box div a {
  color: #0C9;
}
.box div a.fous {
  width: 200px;
}
.box div a:hover {
  color: #000;
}
"Administrator" Sid: S-1-5-21-779701839-1365383676-4129786368-500

在定義樣式裏面經過 & 咱們就會把 &後面選擇器升一級,而且緊跟在上一級後面造成新的定義

4.less嵌套媒體查詢處理

原生css寫法:

@media screen and (max-width : 500px) {
 a{ color:#0C9;}
}
@media screen  and (min-width : 501px) and (max-width : 1024px) {
 a{ color:#000;}
}
@media screen and (min-width : 1024px) {
 a{ color:#ddd;}
}

咱們經過less去書寫:

a{ 
 @media screen and (max-width : 500px) {
  color:#0C9;
 }
 @media screen  and (min-width : 501px) and (max-width : 1024px) {
  color:#000;
 }
 @media screen and (min-width : 1024px) {
  color:#ddd;
 }
}

對比原生其實優點不是很大,原本這就是個麻煩的東西,能夠原諒

編譯後的css:

@media screen and (max-width: 500px) {
  a {
    color: #0C9;
  }
}
@media screen and (min-width: 501px) and (max-width: 1024px) {
  a {
    color: #000;
  }
}
@media screen and (min-width: 1024px) {
  a {
    color: #ddd;
  }
}
"Administrator" Sid: S-1-5-21-779701839-1365383676-4129786368-500

四.less系統函數的使用

這個就很是簡單了,和說的同樣就是用於計算和轉化的,

系統函數手冊地址:http://www.1024i.com/demo/less/reference.html 

咱們使用幾個測試一下:

@aa:0.5;
.dd{height:percentage(@aa);}
@bb:0.8;
.ee{height:pow(@bb,2);}

編譯後:

.dd {
  height: 50%;
}
.ee {
  height: 0.64;
}
"Administrator" Sid: S-1-5-21-779701839-1365383676-4129786368-500

五.寫一個小頁面

html部分:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>less</title>
<link rel="stylesheet" type="text/css" href="less.css"/>
</head>
<body>
 <div class="demo">
     <div class="demo-header">
         <span class="left">標題</span>
            <a href="#2" class="right">更多</a>
        </div>
        <div class="demo-con">
         <a href="#2">1111111111</a>
            <a href="#2">22222222222</a>
            <a href="#2">33333333333</a>
            <a href="#2">4444444444</a>
            <a href="#2">555555555</a>
        </div>
    </div>
</body>
</html>

書寫less:

.left{float:left;}
.right{float:right;}
@colorlink:#ddd;
@colorhover:#ffa;
.he50{
 height:50px;
 line-height:50px;
}
.demo{
 width:500px;
 height:500px;
 .demo-header{
  .he50;
  span{
   color:#000;
  }
  a{
   color:@colorlink;
   float:right;
   margin:0 10px;
   &:hover{color:@colorhover;}
  }
 }
 .demo-con{
  a{
   display:block;
   .he50;
   color:@colorlink;
   &:hover{color:@colorhover;}
  }
 }
}

轉義後:

.left {
  float: left;
}
.right {
  float: right;
}
.he50 {
  height: 50px;
  line-height: 50px;
}
.demo {
  width: 500px;
  height: 500px;
}
.demo .demo-header {
  height: 50px;
  line-height: 50px;
}
.demo .demo-header span {
  color: #000;
}
.demo .demo-header a {
  color: #ddd;
  float: right;
  margin: 0 10px;
}
.demo .demo-header a:hover {
  color: #ffa;
}
.demo .demo-con a {
  display: block;
  height: 50px;
  line-height: 50px;
  color: #ddd;
}
.demo .demo-con a:hover {
  color: #ffa;
}
"Administrator" Sid: S-1-5-21-779701839-1365383676-4129786368-500

很簡單,很差看,最簡單使用了嵌套,變量和函數通用處理,也可見得出項目越大的話使用會更加方便。

五.其餘

咱們只是最簡單的使用和了解經常使用的方法,高級的都被去掉了,好比函數裏面的處理,嵌套&的高級使用等

除了高級的其實還有外部文件引用等。

相關文章
相關標籤/搜索