10
09/2014
lesscss 笔记
浅色
@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;
//也可以 @light-blue: lighten(@nice-blue,10%);
#header { color: @light-blue; }
#header { color: #6c94be; }
变量嵌套
@fnord: "I am fnord."; @var: 'fnord'; content: @@var;
content: “I am fnord.”;
当前作用域中最后一次定义
@var: 0;
.class1 {
@var: 1;
.class {
@var: 2;
three: @var;
@var: 3;
}
one: @var;
}
.class1 .class {
three: 3;
}
.class1 {
one: 1;
}
three: 3;
}
.class1 {
one: 1;
}
变量声明提升(和 js hoisting 类似)
lazy-eval {
width: @var;
}
@var: @a;
@a: 9%;
.lazy-eval-scope {
width: @var;
@a: 9%;
}
@var: @a;
@a: 100%;
编译结果一样。注意:第二个例子,作用域优先。
.lazy-eval-scope {
width: 9%;
}
width: 9%;
}
class 混合 mixin
.bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#menu a {
color: #111;
.bordered;
}
.post a {
color: red;
.bordered;
}
#menu a {
color: #111;
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
.post a {
color: red;
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
color: #111;
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
.post a {
color: red;
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
默认参数
.border-radius (@radius: 5px) {
border-radius: @radius;
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
}
#header {
.border-radius;
}
输出 5px radius
& 表示父选择器以及反转两种用法
.child, .sibling {
.parent & {
color: black;
}
& + & {
color: red;
}
}
.parent .child,
.parent .sibling {
color: black;
}
.child + .child,
.child + .sibling,
.sibling + .child,
.sibling + .sibling {
color: red;
}
.parent .sibling {
color: black;
}
.child + .child,
.child + .sibling,
.sibling + .child,
.sibling + .sibling {
color: red;
}
命名空间
#bundle {
.button () {
display: block;
border: 1px solid black;
background-color: grey;
&:hover { background-color: white }
}
.tab { ... }
.citation { ... }
}
这样使用
#header a {
color: orange;
#bundle > .button;
}
import 可嵌套
@imported-color: red;
h1 { color: green; }
pre {
@import "library.less";
color: @importedColor;
}
pre {
color: #ff0000; // 定义在library.less中的变量可用
}
pre h1 { // 定义在library.less中的样式规则被嵌套到pre中
color: green;
}
color: #ff0000; // 定义在library.less中的变量可用
}
pre h1 { // 定义在library.less中的样式规则被嵌套到pre中
color: green;
}
字符串插值
@base-url: "http://assets.fnord.com";
background-image: url("@{base-url}/images/bg.png");
选择器插值
@name: blocked;
.@{name} {
color: black;
}
.blocked {
color: black;
}
color: black;
}
避免编译 ~ 和 执行 javascript `
避免编译 ~”…” (波浪线+引号)
执行 javascript `
执行 javascript `…` (反引号)
@var: `parseInt(Math.random()*255)`;
.randomColor {color:~"rgb(@{var},@{var},@{var})";}
.randomColor {
color: rgb(191,53,66);
}
color: rgb(191,53,66);
}
注意:这个随机颜色没实际意义。除非用 lesscss.min.js 现场解析 css。
data-uri
data-uri('../data/image.jpg');
url(‘data:image/jpeg;base64,bm90IGFjdHVhbGx5IGEganBlZyBmaWxlCg==’);
color
@c1:#c00;
.c {
color:hsl(hue(@c1),50%,50%);
}
根据 c1 颜色的 色相(hue),调整饱和度(saturation)和 亮度(lightness)
.c {
color: #bf4040;
}
注意: hsv - 通过色相 (hue),饱和度 (saturation),色调 (value) 三种值 (HSV)
- saturate 增加饱和度
- desaturate 降低饱和度
- fadeout,fadein 增加(降低透明度)
- fade 设置透明度
- mix 混合两种颜色 mix(#ff0000, #0000ff, 50%)
- greyscale 饱和度为0(置灰)
- multiply,overlay,hardlight,difference 等 类似ps层模式