color
解析颜色,将代表颜色的字符串转换为颜色值。
参数: string
: 代表颜色值的字符串。
返回: color
示例: color("#aaa");
输出: #aaa
image-size
从文件获取的图像尺寸。
参数: string
: 获取尺寸的文件。
返回: dimension
示例: image-size("file.png");
输出: 10px 10px
注意: 这个功能需要由每个环境中执行。它目前只能在node环境中使用。
添加版本: v2.2.0
image-width
从文件获取的图像宽度。
参数: string
: 获取尺寸的文件。
返回: dimension
示例: image-width("file.png");
输出: 10px
注意: 这个功能需要由每个环境中执行。它目前只能在node环境中使用。
添加版本: v2.2.0
image-height
从文件获取的图像高度。
参数: string
: 获取尺寸的文件。
返回: dimension
示例: image-height("file.png");
输出: 10px
注意: 这个功能需要由每个环境中执行。它目前只能在node环境中使用。
添加版本: v2.2.0
convert
将数字从一种类型转换到另一种类型。
第一个参数为带单位的数值,第二个参数为单位。如果两个参数的单位是兼容的,则数字的单位被转换。如果两个参数的单位不兼容,则原样返回第一个参数。
无需转化改变单位参照 unit。
兼容的单位组:
- 长度:
m
,cm
,mm
,in
,pt
andpc
, - 时间:
s
andms
, - 角度:
rad
,deg
,grad
andturn
.
参数:
number
: 带单位的浮点数。identifier
,string
或escaped value
: 单位
返回: number
示例:
convert(9s, "ms")
convert(14cm, mm)
convert(8, mm) // 不兼容的单位类型
输出:
9000ms
140mm
8
data-uri
将一个资源内嵌到样式文件,如果开启了ieCompat选项,而且资源文件的体积过大,或者是在浏览器中使用,则会使用
url()
进行回退。如果没有指定MIME,则Node.js会使用MIME包来决定正确的MIME。
参数:
mimetype
: 可选参数,MIME类型字符串。url
: 需要内嵌的文件的URL。
示例: data-uri('../data/image.jpg');
输出: url('data:image/jpeg;base64,bm90IGFjdHVhbGx5IGEganBlZyBmaWxlCg==');
浏览器中输出:url('../data/image.jpg');
示例: data-uri('image/jpeg;base64', '../data/image.jpg');
输出: url('data:image/jpeg;base64,bm90IGFjdHVhbGx5IGEganBlZyBmaWxlCg==');
示例: data-uri('image/svg+xml;charset=UTF-8', 'image.svg');
输出: url("data:image/svg+xml;charset=UTF-8,%3Csvg%3E%3Ccircle%20r%3D%229%22%2F%3E%3C%2Fsvg%3E");
default
只能边界条件中使用,没有匹配到其他自定义函数(mixin)的时候返回
true
,否则返回false
。
示例:
.mixin(1) {x: 11}
.mixin(2) {y: 22}
.mixin(@x) when (default()) {z: @x}
div {
.mixin(3);
}
div.special {
.mixin(1);
}
输出:
div {
z: 3;
}
div.special {
x: 11;
}
default
的返回值还可以和边界操作一起使用。例如,.mixin() when not(default()) {}
,将会在至少一个除自身外的自定义函数(mixin)满足条件时被调用:
.mixin(@value) when (ispixel(@value)) {width: @value}
.mixin(@value) when not(default()) {padding: (@value / 5)}
div-1 {
.mixin(100px);
}
div-2 {
/* ... */
.mixin(100%);
}
结果:
div-1 {
width: 100px;
padding: 20px;
}
div-2 {
/* ... */
}
在同一个边界条件或者不同的混合条件中,default()
可以被调用多次:
div {
.m(@x) when (default()), not(default()) {always: @x}
.m(@x) when (default()) and not(default()) {never: @x}
.m(1); // OK
}
然而,使用default()
时如果检测到多个混合条件有潜在性冲突,Less会抛出一个异常:
div {
.m(@x) when (default()) {}
.m(@x) when not(default()) {}
.m(1); // Error
}
在以上的例子中,通过与其他条件的相互依赖就可以确认在调用时default()
所返回的值。
更多default()
的高级用法:
.x {
.m(red) {case-1: darkred}
.m(blue) {case-2: darkblue}
.m(@x) when (iscolor(@x)) and (default()) {default-color: @x}
.m('foo') {case-1: I am 'foo'}
.m('bar') {case-2: I am 'bar'}
.m(@x) when (isstring(@x)) and (default()) {default-string: and I am the default}
&-blue {.m(blue)}
&-green {.m(green)}
&-foo {.m('foo')}
&-baz {.m('baz')}
}
结果:
.x-blue {
case-2: #00008b;
}
.x-green {
default-color: #008000;
}
.x-foo {
case-1: I am 'foo';
}
.x-baz {
default-string: and I am the default;
}
default
函数只能作为Less构建函数在边界条件中使用。如果在混合条件之外使用,default
函数只会被解释成普通的CSS属性值:
示例:
div {
foo: default();
bar: default(42);
}
结果:
div {
foo: default();
bar: default(42);
}
unit
移除或者改变属性值的单位。
参数:
dimension
: 数字,带或不带单位。unit
: 可选参数,将要替换成的单位,如果省略则移除原单位。
转化成指定单位参照 convert。
示例: unit(5, px)
输出: 5px
示例: unit(5em)
输出: 5
get-unit
返回一个值的单位.
如果参数中包含了数字与单位,该函数就返回其单位。 如果参数不包含单位,该函数就返回空。
参数:
number
: 带单位或者不带单位的数字。
示例: get-unit(5px)
输出: px
示例: get-unit(5)
输出: //nothing
svg-gradient
生成多停靠(stop)的svg渐变。
Svg-gradient函数生成多停靠(stop)的svg渐变。它必须有至少三个参数。第一个参数指定渐变类型和方向,其余参数列表为颜色和它们的位置。第一个和最后一个指定颜色的位置都是可选的,其余颜色必须指定位置。
方向必须是to bottom
, to right
, to bottom right
, to top right
, ellipse
或 ellipse at center
其中一个。方向可以指定这个单词列表的转义值和空间分隔。
参数:
escaped value
orlist of identifiers
: 方向color [percentage]
对: 第一个颜色和它的相对位置(位置可选)color percent
对: (可选) 第二个颜色和它的相对位置- ...
color percent
对: (可选) 第 n 个颜色和它的相对位置color [percentage]
pair: 最后一个颜色和它的相对位置(位置可选)
返回: url
用base64编码svg渐变。
示例:
div {
background-image: svg-gradient(to right, red, green 30%, blue);
}
结果:
div {
background-image: url(js/.com/doc/less/functions/'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZGllbnQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmMDAwMCIvPjxzdG9wIG9mZnNldD0iMzAlIiBzdG9wLWNvbG9yPSIjMDA4MDAwIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMDAwMGZmIi8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWRpZW50KSIgLz48L3N2Zz4=')
}
产生背景图像是这样的:red color on the left, green at 30% of its width and ends with a blue color。Base64编码部分包含以下svg渐变:
<?xml version="1.0" ?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none">
<linearGradient id="gradient" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#ff0000"/>
<stop offset="30%" stop-color="#008000"/>
<stop offset="100%" stop-color="#0000ff"/>
</linearGradient>
<rect x="0" y="0" width="1" height="1" fill="url(#gradient)" />
</svg>