[黄英?/Tunny,20140711]
Less は CSS プリコンパイラーであり、CSS 言語を拡張し、変数、ミックスイン、関数を許可するなどの機能や、CSS をより保守しやすくするためのその他の多くのテクニックを追加できます。 、テーマがあり、スケーラブルです。
この記事は Less の概要と構文のレビューであり、いくつかの入門レベルの例が含まれており、Less の入門レベルを理解している開発者に適しています。
LESS ソース ファイルは標準 CSS ファイルと同じ方法で導入されます:
<link rel="stylesheet/less" type="text/css" href="styles.less">
LESS ソース ファイルを導入する必要がある HTML に次のコードを追加します:
<script src="less.js" type="text/javascript"></script>
Importファイル:
@import “variables.less”;@import “variables.css”;/*也可以将标准的 CSS 文件直接改成 .less 格式*/
変数とスコープ
/*用变量管理值*/ @width : 20px; //全局变量 #homeDiv { #centerDiv{ width : @width; // 此处应该取最近定义的变量 width 的值 30px } @width : 30px; //局部变量,变量和混合是延迟加载的,不一定要在使用前声明 } #leftDiv { width : @width; // 此处应该取最上面定义的变量 width 的值 20px } /*用变量管理选择器名称、URLs、属性*/ @mySelector: banner; // 定义一个变量用于选择器名称 @images: "../img"; // 变量可以是字符串 @property: color; // 定义一个变量用于属性名称 .@{mySelector} { //选择器名称使用变量的用法 background: url("@{images}/white-sand.png"); //URLs使用变量的用法 @{property}: #0ee; …… //其它常规属性等 } /*编译生成的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 とfunction
.roundedCorners(@radius:5px) { //定义参数并且给予默认值 -moz-border-radius: @radius; -webkit-border-radius: @radius; border-radius: @radius; } // 在另外的样式选择器中使用 #header { .roundedCorners; //使用类并且参数为默认值 } #footer { .roundedCorners(10px); //自定义参数值 } .bordered { border-top: dotted 1px black; border-bottom: solid 2px black; } #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; }
Ex Tend
extend は Less 疑似クラスであり、拡張子セレクターを使用する必要があります。擬似クラスの最後
nav ul:extend(.inline) background: blue;}.inline { color: red; } /*编译生成的CSS文件*/ nav ul { // 声明块保持原样 background: blue; } .inline,nav ul { color: red; } pre:hover , .some-class { &:extend(div pre); } /*以上与给每个选择器添加一个extend完全相同*/ pre:hover:extend(div pre), .some-class:extend(div pre) {}
基本的に extend は、元のlessではなく、コンパイルされた CSS を検索します
.bucket { tr & { // 目标选择器中的嵌套,&代表最近父元素 color: blue; } } .some-class:extend(tr .bucket) {} // 识别嵌套规则 /*编译生成的CSS文件*/ tr .bucket , .some-class { color: blue; }
extend は、完全に一致する必要があります (ワイルドカード *、擬似クラスの順序、n 番目の式を含む) 、ユニークな例外は属性セレクター内の引用符であり、それらが同じであることを認識して一致させることはほとんどありません) 11 公開 v1.0
2014-07-13 最初のアップデート v2.0