您好,登錄后才能下訂單哦!
本篇內容主要講解“如何編寫CSS Less框架”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何編寫CSS Less框架”吧!
LESS 源文件的引入方式與標準CSS文件的引入方式一樣:
代碼如下:
<link rel="stylesheet/less" type="text/css" href="styles.less">
在我們需要引入 LESS 源文件的 HTML 中加入如下代碼:
代碼如下:
<script src="less.js" type="text/javascript"></script>
導入文件:
代碼如下:
@import “variables.less”;
@import “variables.css”;
/*也可以將標準的 CSS 文件直接改成 .less 格式*/
變量與作用域
代碼如下:
/*用變量管理值*/
@width : 20px; //全局變量
#homeDiv {
#centerDiv{
width : @width; // 此處應該取最近定義的變量 width 的值 30px
}
@width : 30px; //局部變量,變量和混合是延遲加載的,不一定要在使用前聲明
}
#leftDiv {
width : @width; // 此處應該取最上面定義的變量 width 的值 20px
}</p>
<p>/*用變量管理選擇器名稱、URLs、屬性*/
@mySelector: banner; // 定義一個變量用于選擇器名稱
@images: "../img"; // 變量可以是字符串
@property: color; // 定義一個變量用于屬性名稱
.@{mySelector} { //選擇器名稱使用變量的用法
background: url("@{images}/white-sand.png"); //URLs使用變量的用法
@{property}: #0ee;
…… //其它常規屬性等
}</p>
<p>/*編譯生成的CSS文件*/
.banner {
background: url("../img/white-sand.png");
color: #0ee;
……
}
變量可以嵌套定義與使用
代碼如下:
@fnord: "I am fnord.";
@var: "fnord";
content: @@var;//嵌套使用
content: "I am fnord."; //編譯后結果
/*當一個變量定義兩次時,只會使用最后定義的變量,Less會從當前作用域中向上搜索。*/
數值,顏色和變量可運算
代碼如下:
@init: #111111;
@transition: @init*2;
@var: 1px + 5 // Less能夠判斷顏色和單位之間的區別
.switchColor {
color: @transition;
}
/*編譯生成的CSS文件*/
.switchColor {
color: #222222;
}
混合(Mixins)與函數
代碼如下:
.roundedCorners(@radius:5px) { //定義參數并且給予默認值
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
border-radius: @radius;
}</p>
<p> // 在另外的樣式選擇器中使用
#header {
.roundedCorners; //使用類并且參數為默認值
}</p>
<p> #footer {
.roundedCorners(10px); //自定義參數值
}</p>
<p>.bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}</p>
<p>#menu a {
color: #111;
.bordered;
/*在另一個規則集內部使用上面類的屬性,則直接訪問屬性所在類名(或Id名)即可*/
}
@arguments變量:當 Mixins 引用這個參數時,該參數表示所有的變量(多參數)。
代碼如下:
.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);
}
命名空間:
代碼如下:
#mynamespace {
.home {...}
.user {...}
}
//如果我們要復用 user 這個選擇器的時候,我們只需要在需要混入這個選擇器的地方這樣使用就可以了。#mynamespace > .user
嵌套規則:
代碼如下:
<!-- HTML片段-->
<div id="home">
<div id="top">top</div>
</div>
代碼如下:
/*使用嵌套規則的LESS 文件*/
#home{
color : blue;
width : 600px;
height : 500px;
border:outset;
#top{
border:outset;
width : 90%;
}
}
/*編譯生成的CSS文件*/
#home {
color: blue;
width: 600px;
height: 500px;
border: outset;
}
#home #top {
border: outset;
width: 90%;
}
a {
color: red;
text-decoration: none;
&:hover {
/*有 & 時解析的是同一個元素或此元素的偽類,沒有 & 解析是后代元素,&表示當前選擇器的父選擇器*/
color: black;
text-decoration: underline;
}
}
/*編譯生成的CSS文件*/
a {
color: red;
text-decoration: none;
}
a:hover {
color: black;
text-decoration: underline;
}
Extend:
extend是一個Less偽類,為擴展選擇器;擴展選擇器必須在所有偽類的最后
代碼如下:
nav ul:extend(.inline)
background: blue;
}
.inline {
color: red;
}</p>
<p>/*編譯生成的CSS文件*/
nav ul { // 聲明塊保持原樣
background: blue;
}</p>
<p>.inline,nav ul {
color: red;
}</p>
<p>pre:hover , .some-class {
&:extend(div pre);
}</p>
<p>/*以上與給每個選擇器添加一個extend完全相同*/
pre:hover:extend(div pre),
.some-class:extend(div pre) {}
從本質上講extend會查找編譯后的CSS,而不是原始的less
代碼如下:
.bucket {
tr & { // 目標選擇器中的嵌套,&代表最近父元素
color: blue;
}
}
.some-class:extend(tr .bucket) {} // 識別嵌套規則
/*編譯生成的CSS文件*/
tr .bucket , .some-class {
color: blue;
}
extend必須是精確匹配(包括通配符*、偽類順序、nth表達式,唯一例外的是屬性選擇器中的引號,less會知道它們是相同的,然后匹配它)
代碼如下:
.a.class,
.class.a,
.class > .a {
color: blue;
}
.test:extend(.class) {} // 不會匹配上面的任何選擇器的值
*.class {
color: blue;
}
.noStar:extend(.class) {} //不會匹配*.class選擇器
link:hover:visited {
color: blue;
}
.selector:extend(link:visited:hover) {} //不會匹配,偽類順序不同
:nth-child(1n+3) {
color: blue;
}
.child:extend(n+3) {} //不會匹配,盡管邏輯上1n+3與n+3是相同的
到此,相信大家對“如何編寫CSS Less框架”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。