赞
踩
Less 内置了多种函数用于转换颜色、处理字符串、算术运算等。
函数的用法非常简单。下面这个例子将介绍如何利用 percentage 函数将 0.5 转换为 50%,将颜色饱和度增加 5%,以及颜色亮度降低 25% 并且色相值增加 8 等用法:
@base: #f04615;
@width: 0.5;
.class {
width: percentage(@width); // returns `50%`
color: saturate(@base, 5%);
background-color: spin(lighten(@base, 25%), 8);
}
根据条件返回两个值的一个。
v3.0.0发布,v3.6.0更新
@some: foo;
div {
margin: if((2 > 1), 0, 3px);
color: if((iscolor(@some)), @some, black);
}
输出
div {
margin: 0;
color: black;
}
注:一个布尔表达式支持和守卫声明一样的条件参数。
if(not (true), foo, bar);
if((true) and (2 > 1), foo, bar);
if((false) or (isstring("boo!")), foo, bar);
注:在3.6之前,条件需要一组括号。
if(2 > 1, blue, green); // Causes an error in 3.0-3.5.3
if((2 > 1), blue, green); // Ok 3.0+
计算结果为真或者假
你可以"存储"在守卫或 if()
评估的 boolean。
v3.0.0发布,v3.6.0更新
@bg: black;
@bg-light: boolean(luma(@bg) > 50%);
div {
background: @bg;
color: if(@bg-light, black, white);
}
输出
div {
background: black;
color: white;
}
应用于特殊字符的 url 编码的输入。
不会编码的字符:,
,/
,?
,@
,&
,+
,'
,~
,!
和 $
;
会编码的字符:\<space\>
,#
,^
,(
,)
,{
,}
,|
,:
,>
,<
,;
,]
,[
和 =
;
要转义的字符串。
没有引号的转义后的字符串。
escape('a=1')
输出
a%3D1
如果参数不是字符串,则返回未定义的颜色或未改变的任何其他类型的参数输入。
字符串转义
返回转义前的字符串。它可以用来输出不是有效的 CSS 语法的 CSS 值,或使用 less 不能识别的专有语法。
转义了的字符串
没有引号的未转义的字符串。
@mscode: "ms:alwaysHasItsOwnSyntax.For.Stuff()"
filter: e(@mscode);
输出
filter: ms:alwaysHasItsOwnSyntax.For.Stuff();
%(string, arguments ...)
第一个参数是带有占位符的字符串。所有占位符都以百分号%开始,后跟字母s、S、d、 D、a 和 A。其余参数包含替换占位符的表达式。如果需要输出百分比符号,请用另一个百分比转义。
如果需要将特殊字符转义为 utf-8 转义代码,请使用大写占位符。函数会转义除()'!
以外的所有特殊字符。空格会被编码为%20,。小写占位符保留特殊字符不变。
占位符
/
或任何类似的东西转义。参数
format-a-d: %("repetitions: %a file: %d", 1 + 2, "directory/file.less");
format-a-d-upper: %('repetitions: %A file: %D', 1 + 2, "directory/file.less");
format-s: %("repetitions: %s file: %s", 1 + 2, "directory/file.less");
format-s-upper: %('repetitions: %S file: %S', 1 + 2, "directory/file.less");
输出:
format-a-d: "repetitions: 3 file: "directory/file.less"";
format-a-d-upper: "repetitions: 3 file: %22directory%2Ffile.less%22";
format-s: "repetitions: 3 file: directory/file.less";
format-s-upper: "repetitions: 3 file: directory%2Ffile.less";
替换字符串中的一个文本。
Released v1.7.0
替换后的字符串。
replace("Hello, Mars?", "Mars\?", "Earth!");
replace("One + one = 4", "one", "2", "gi");
replace('This is a string.', "(string)\.$", "new $1.");
replace(~"bar-1", '1', '2');
输出
"Hello, Earth!";
"2 + 2 = 4";
'This is a new string.';
bar-2;
返回列表中元素的个数。
@list: "banana", "tomato", "potato", "peach";
n: length(@list);
输出
n: 4;
返回列表中指定的值。
@list: apple, pear, coconut, orange;
value: extract(@list, 3);
输出
value: coconut;
Released v3.9.0
生成一个范围值的列表。
value: range(4);
输出
value: 1 2 3 4;
Released v3.7.0
将规则集绑定到列表的每个成员。
@selectors: blue, green, red;
each(@selectors, {
.sel-@{value} {
a: b;
}
});
输出
.sel-blue {
a: b;
}
.sel-green {
a: b;
}
.sel-red {
a: b;
}
默认情况下,每个列表成员都将每个规则集绑定到@value、@key和@index变量。对于大多数列表,@key和@index将被分配相同的值(数字位置,基于1)。但是,您也可以将规则集本身用作结构化列表。就像在
@set: {
one: blue;
two: green;
three: red;
}
.set {
each(@set, {
@{key}-@{index}: @value;
});
}
输出
.set {
one-1: blue;
two-2: green;
three-3: red;
}
不必在 each() 函数中使用 @value、@key 和 @index。在 Less 3.7 中,通过 each() 函数,Less 引入了匿名 mixin 的概念,以后可能会扩展到语法的其他部分。
匿名mixin使用 #() 或 .() 的形式,以 . 或者#,就像普通的mixin一样。在 each() 中,您可以这样使用它。
.set-2() {
one: blue;
two: green;
three: red;
}
.set-2 {
// Call mixin and iterate each rule
each(.set-2(), .(@v, @k, @i) {
@{k}-@{i}: @v;
});
}
输出
.set-2 {
one-1: blue;
two-2: green;
three-3: red;
}
each() 函数将接受匿名mixin中定义的变量名,并按顺序将它们绑定到@value、@key和@index。如果你只写each(@list, #(@value){}),那么@key和@index都不会被定义。
Requires Less v3.9.0
可以模拟一个for循环,只需生成一个数字列表,并使用每个将其扩展为一个规则集。
each(range(4), {
.col-@{value} {
height: (@value * 50px);
}
});
输出
.col-1 {
height: 50px;
}
.col-2 {
height: 100px;
}
.col-3 {
height: 150px;
}
.col-4 {
height: 200px;
}
向上取整
【number】——一个浮点数
整数
ceil(2.4)
输出
3
向下取整
【number】——一个浮点数
整数
floor(2.6)
输出
2
一个浮点数转换成百分数字符串。
【number】——一个浮点数
数字
percentage(0.5)
输出
50%
四舍五入
数字
round(1.67)
round(1.67, 1)
输出
2
1.7
计算平方根,单位保持。
数字
sqrt(25cm)
输出
5cm
计算一个数的绝对值,保持单位。
数字
abs(-18.6%)
输出
18.6%;
计算正弦函数。
数字
sin(1); // sine of 1 radian
sin(1deg); // sine of 1 degree
sin(1grad); // sine of 1 gradian
输出
0.8414709848078965; // sine of 1 radian
0.01745240643728351; // sine of 1 degree
0.015707317311820675; // sine of 1 gradian
计算反正弦函数。
返回一个数字,数字弧度如-π/ 2
和π/ 2
之间。
asin(-0.8414709848078965)
asin(0)
asin(2)
输出
-1rad
0rad
NaNrad
计算余弦函数。
数字
cos(1) // cosine of 1 radian
cos(1deg) // cosine of 1 degree
cos(1grad) // cosine of 1 gradian
输出
0.5403023058681398 // cosine of 1 radian
0.9998476951563913 // cosine of 1 degree
0.9998766324816606 // cosine of 1 gradian
计算反余弦函数。
数字
acos(0.5403023058681398)
acos(1)
acos(2)
输出
1rad
0rad
NaNrad
计算正切函数。
数字
tan(1) // tangent of 1 radian
tan(1deg) // tangent of 1 degree
tan(1grad) // tangent of 1 gradian
输出
1.5574077246549023 // tangent of 1 radian
0.017455064928217585 // tangent of 1 degree
0.015709255323664916 // tangent of 1 gradian
计算反正切函数。
数字
atan(-1.5574077246549023)
atan(0)
round(atan(22), 6) // arctangent of 22 rounded to 6 decimal places
输出
-1rad
0rad
1.525373rad;
一个数π
pi()
输出
3.141592653589793
求n次方
数
pow(0cm, 0px)
pow(25, -2)
pow(25, 0.5)
pow(-25, 0.5)
pow(-25%, -0.5)
输出
1cm
0.0016
5
NaN
NaN%
求余数
数字
mod(0cm, 0px)
mod(11cm, 6px);
mod(-26%, -5);
输出
NaNcm;
5cm
-1%;
返回最小值
最小值
min(5, 10);
输出
5
返回最大值
最大值
max(5, 10);
输出
10
如果值是数,返回true,否则返回false。
isnumber(#ff0); // false
isnumber(blue); // false
isnumber("string"); // false
isnumber(1234); // true
isnumber(56px); // true
isnumber(7.8%); // true
isnumber(keyword); // false
isnumber(url(...)); // false
【value】——一个给定的值或变量
如果值是 string,返回 true,否则返回 false。
isstring(#ff0); // false
isstring(blue); // false
isstring("string"); // true
isstring(1234); // false
isstring(56px); // false
isstring(7.8%); // false
isstring(keyword); // false
isstring(url(...)); // false
【value】——一个给定的值或变量
如果值是 color,就返回 true,否则返回 false。
iscolor(#ff0); // true
iscolor(blue); // true
iscolor("string"); // false
iscolor(1234); // false
iscolor(56px); // false
iscolor(7.8%); // false
iscolor(keyword); // false
iscolor(url(...)); // false
【value】——一个给定的值或变量
如果值是一个 keyword,返回 true,否则返回 false
iskeyword(#ff0); // false
iskeyword(blue); // false
iskeyword("string"); // false
iskeyword(1234); // false
iskeyword(56px); // false
iskeyword(7.8%); // false
iskeyword(keyword); // true
iskeyword(url(...)); // false
【value】——一个给定的值或变量
如果一个值是 url,返回 true,否则返回 false。
isurl(#ff0); // false
isurl(blue); // false
isurl("string"); // false
isurl(1234); // false
isurl(56px); // false
isurl(7.8%); // false
isurl(keyword); // false
isurl(url(...)); // true
【value】——一个给定的值或变量
如果一个值是像素,返回 true,否则返回 false。
ispixel(#ff0); // false
ispixel(blue); // false
ispixel("string"); // false
ispixel(1234); // false
ispixel(56px); // true
ispixel(7.8%); // false
ispixel(keyword); // false
ispixel(url(...)); // false
【value】——一个给定的值或变量
如果一个值是 em 结尾的值,则返回 true,否则返回 false。
isem(#ff0); // false
isem(blue); // false
isem("string"); // false
isem(1234); // false
isem(56px); // false
isem(7.8em); // true
isem(keyword); // false
isem(url(...)); // false
【value】——一个给定的值或变量
如果一个值是百分比,则返回 true,否则返回 false。
ispercentage(#ff0); // false
ispercentage(blue); // false
ispercentage("string"); // false
ispercentage(1234); // false
ispercentage(56px); // false
ispercentage(7.8%); // true
ispercentage(keyword); // false
ispercentage(url(...)); // false
如果一个值是规定的单位,则返回 true, 否则返回 false。
isunit(11px, px); // true
isunit(2.2%, px); // false
isunit(33px, rem); // false
isunit(4rem, rem); // true
isunit(56px, "%"); // false
isunit(7.8%, '%'); // true
isunit(1234, em); // false
isunit(#ff0, pt); // false
isunit("mm", mm); // false
【value】——一个被定义的变量
如果一个值是规则集,则返回 true,否则返回 false;
@rules: {
color: red;
}
isruleset(@rules); // true
isruleset(#ff0); // false
isruleset(blue); // false
isruleset("string"); // false
isruleset(1234); // false
isruleset(56px); // false
isruleset(7.8%); // false
isruleset(keyword); // false
isruleset(url(...)); // false
解析颜色,将一个表示颜色的字符串成为颜色。
【string】——一个表示颜色的字符串
color类型的值
color("#aaa"); // #aaa
Added in: v2.2.0
从文件中获取图像的尺寸
【string】——需要获取尺寸的文件
dimension类型的值
image-size("file.png"); // 10px 10px
此功能需要在每个环境中实现,它目前仅在 node 环境中可用。
Added in: v2.2.0
从文件中获取图像的宽度
【string】——需要获取尺寸的文件
dimension类型的值
image-width("file.png"); // 10px
此功能需要在每个环境中实现,它目前仅在 node 环境中可用。
Added in: v2.2.0
从文件中获取图像的高度
【string】——需要获取尺寸的文件
dimension类型的值
image-height("file.png"); // 10px
此功能需要在每个环境中实现,它目前仅在 node 环境中可用。
将一个数字从一个单位转换为其他单位
第一个参数包含一个带有单位的数字;
第二个参数包含单位,如果单位是兼容的,数字将被转化,如果它们不兼容,则第一个参数将不加修改地返回。
number类型的值
convert(9s, "ms")
convert(14cm, mm)
convert(8, mm) // incompatible unit types
输出
9000ms
140mm
8
如果 ieCompat
属性是打开的,冰洁资源文件太大,或者如果您在浏览器中使用该函数,则返回转义后的 url 类型的值。如果没有给出MIME类型,则 node 使用 MIME包来确定正确的 MIME 类型。
image/jpeg;base64
被编码为 base64,而 text/html
被编码为 utf-8;data-uri('../data/image.jpg');
data-uri('image/jpeg;base64', '../data/image.jpg');
data-uri('image/svg+xml;charset=UTF-8', 'image.svg');
输出
url('data:image/jpeg;base64,bm90IGFjdHVhbGx5IGEganBlZyBmaWxlCg==');
url('data:image/jpeg;base64,bm90IGFjdHVhbGx5IGEganBlZyBmaWxlCg==');
url("data:image/svg+xml;charset=UTF-8,%3Csvg%3E%3Ccircle%20r%3D%229%22%2F%3E%3C%2Fsvg%3E");
输出在浏览器里
url('../data/image.jpg');
仅在 守卫条件中使用,只有在没有其他 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;
}
可以使用 守卫操作符默认返回的值。例如:.mixin() when not(default()) {}
只有在至少有一个与 .mixin() 匹配的 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 {
/* ... */
}
允许在相同的守卫条件下或者在具有相同名称的 mixins 的不同条件下多次调用 default()
div {
.m(@x) when (default()), not(default()) {always: @x}
.m(@x) when (default()) and not(default()) {never: @x}
.m(1); // OK
}
如果使用 deault()时被检测出多个 mixin 定义之间存在潜在冲突,则 Less 会抛出错误。
div {
.m(@x) when (default()) {}
.m(@x) when not(default()) {}
.m(1); // Error
}
在上面的例子中,不可能确定每个 default() 调用应该返回什么值,因为它们递归地依赖于彼此。
这个 default 函数只能作为 Less 函数在 守卫表达式中使用,如果在 mixin 保护条件之外使用,它会被转义为一个常规的 CSS 值。
div {
foo: default();
bar: default(42);
}
结果为
div {
foo: default();
bar: default(42);
}
.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;
}
删除或更改尺寸的单位
unit(5, px) // 5px
unit(5em) // 5
返回一个数的单位
如果参数为一个带有单位的数字 ,则返回该单位,否则,将返回一个空。
【number】——一个带或者不带单位的数
get-unit(5px) // px
get-unit(5)
生成 multi-stop svg gradients。
svg-gradient 生成 multi-stop svg gradients。它必须至少有三个参数,第一个参数指定梯度的类型和方向,低于参数列出颜色及位置。第一个和最后一个指定颜色的位置是可选的,其余颜色必须指定位置。
方向必须是 to bottom,to right,to bottom right,to top right,ellipse 或者 ellipse at center中的一个。方向可以指定为两个以~
连接的方向和以空格分隔的列表。
方向必须有两个或两个以上的颜色。它们可以在列表中提供,也可以在单独的参数中指定每个颜色停止的位置。
escaped value
或者 list of identifiers
】——方向;escaped value
或者 list of identifiers
】——方向;"URI编码"的 svg grandient 的路径
div {
@list: red, green 30%, blue;
background-image: svg-gradient(to right, @list);
}
或
div {
background-image: svg-gradient(to right, red, green 30%, blue);
}
结果为
div {
background-image: url('data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%201%201%22%20preserveAspectRatio%3D%22none%22%3E%3ClinearGradient%20id%3D%22gradient%22%20gradientUnits%3D%22userSpaceOnUse%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%22100%25%22%20y2%3D%220%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23ff0000%22%2F%3E%3Cstop%20offset%3D%2230%25%22%20stop-color%3D%22%23008000%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%230000ff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23gradient)%22%20%2F%3E%3C%2Fsvg%3E');
}
注意:在2.2.0版本前,这个结果是 base64 编码;
生成的背景图像左侧为红色,30%的宽度为绿色,以蓝色结束。Base64编码部分包含如下svg-gradient
<?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>
定义一个不透明的颜色对象从十进制的红绿蓝值中。
标准 HTML/CSS格式中的文字颜色值也可以用来定义颜色,例如 #FF0000
;
颜色类型的值
rgb(90, 129, 32) // #5a8120
创建一个透明的颜色对象从十进制的红绿蓝和透明度值中。
颜色类型的值
rgba(90, 129, 32, 0.5) // rgba(90, 129, 32, 0.5)
创建一个#AARRGGBB
格式的十六进制颜色, 而不是#RRGGBBAA
;
这个格式在IE、.NET、和 Android 开发中
颜色类型的值或颜色对象
字符串
argb(rgba(90, 23, 148, 0.5)); // #805a1794
基于色相、饱和度、亮度创建一个不透明的颜色对象;
一个颜色类型的值
hsl(90, 100%, 50%) // #80ff00
如果你想创建一个基于其他颜色通道的新的颜色,这将是有用的。例如 @new: hsl(hue(@old), 45%, 90%);
@new
将拥有 @old
的色相和它自己的饱和度和亮度。
基于色相、饱和度、亮度、透明度创建一个透明的颜色对象;
一个颜色类型的值
hsla(90, 100%, 50%, 0.5) // rgba(128, 255, 0, 0.5)
基于色相、饱和度、明度创建一个不透明的颜色对象;
一个颜色类型的值
hsv(90, 100%, 50%) // #408000
注:这个 ps 中可用的颜色,与 hsl 不同;
基于色相、饱和度、明度、透明度创建一个透明的颜色对象;
返回一个颜色类型的值
hsva(90, 100%, 50%, 0.5) // rgba(64, 128, 0, 0.5)
在 hsl 颜色中提取颜色对象的色调。
【color】——一个颜色对象
0-360正整数
hue(hsl(90, 100%, 50%)) // 90
在 HSL颜色中提取颜色对象的饱和度。
【color】——一个颜色对象
0-100百分比
saturation(hsl(90, 100%, 50%)) // 100%
在 HSL颜色中提取颜色对象的明度。
【color】——一个颜色对象
0-100百分比
lightness(hsl(90, 100%, 50%)) // 50%
在HSV颜色中提取颜色对象的色调。
【color】——一个颜色对象
0-360正整数
hsvhue(hsv(90, 100%, 50%)) // 90
在HSV颜色中提取颜色对象的饱和度。
【color】——一个颜色对象
0-100百分比
hsvsaturation(hsv(90, 100%, 50%)) // 100%
在HSV颜色中提取颜色对象的明度。
【color】——一个颜色对象
0-100百分比
hsvvalue(hsv(90, 100%, 50%)) // 50%
提取颜色对象的红色。
【color】——一个颜色对象
0-255浮点数
red(rgb(10, 20, 30)) // 10
提取颜色对象的绿色。
【color】——一个颜色对象
0-255浮点数
red(rgb(10, 20, 30)) // 20
提取颜色对象的蓝色。
【color】——一个颜色对象
0-255浮点数
red(rgb(10, 20, 30)) // 30
提取颜色对象的透明度。
【color】——一个颜色对象
0-1浮点数
alpha(rgba(10, 20, 30, 0.5)) // 0.5
计算颜色对象的亮度(感知亮度)
使用SMPTE C / Rec. 709
系数,在WCAG 2.0
中推荐。这种计算方法也用于对比函数。
在v1.7.0之前,亮度的计算没有gamma校正,使用luminance函数来计算这些old值。
【color】——一个颜色对象
0-100百分比
luma(rgb(100, 200, 30)) // 44%
计算亮度值而不进行gamma校正(该函数在v1.7.0之前被命名为luma)
【color】——一个颜色对象
0-100百分比
luma(rgb(100, 200, 30)) // 65%
及颜色操作通常与它们所改变的值相同的单位参数,并且百分比被处理为绝对值,因此增加10%的值会得到20%的结果。当使用相对百分比时(将相对百分比的选项参数设置为relative),增加10%的值,10%的结果是11%。值被固定在它们允许额范围内,在显示返回值的地方,除了通常使用的十六进制版本之外 ,我们还使用了明确每个函数所做的工作。
在HSL颜色中增加一个绝对数量的颜色饱和度。
颜色类型的值
saturate(hsl(90, 80%, 50%), 20%) // #80ff00
// hsl(90, 100%, 50%)
在HSL颜色中减少一个绝对数量的颜色饱和度。
颜色类型的值
desaturate(hsl(90, 80%, 50%), 20%) // #80cc33
// hsl(90, 60%, 50%)
以绝对数量增加HSL颜色中的明度。
颜色类型的值
lighten(hsl(90, 80%, 50%), 20%) // #b3f075
// hsl(90, 80%, 70%)
以绝对数量减少HSL颜色中的明度。
颜色类型的值
darken(hsl(90, 80%, 50%), 20%) // #4d8a0f
// hsl(90, 80%, 30%)
降低颜色的透明度(或增加不透明度),使其更不透明。
颜色类型的值
fadein(hsla(90, 90%, 50%, 0.5), 10%) // rgba(128, 242, 13, 0.6)
// hsla(90, 90%, 50%, 0.6)
增加颜色的透明度(或减少不透明度),使其更不透明。
颜色类型的值
fadeout(hsla(90, 90%, 50%, 0.5), 10%) // rgba(128, 242, 13, 0.4)
// hsla(90, 90%, 50%, 0.4)
设置颜色的绝对不透明度。无论它们是否已经有不透明度值,可以应用于颜色。
颜色类型的值
fade(hsl(90, 90%, 50%), 10%) // rgba(128, 242, 13, 0.1)
//hsla(90, 90%, 50%, 0.1)
向任何方向旋转颜色的色度。
虽然角度范围是0-360度,它应用了一个取余360的操作,所以你可以传入更大或负的值。例如360和720角度讲产生相同的结果。注意:颜色是通过RGB转换传递的,它不会保留灰度的色相值(因为当没有饱和度时,色相没有意义),所以确保以保留色相的方式应用函数,所以不要这样做。
@c: saturate(spin(#aaaaaa, 10), 10%);
等同于
@c: spin(saturate(#aaaaaa, 10%), 10);
颜色总是作为RGB值返回,所以对灰色值应用 spin 将不起任何作用。
颜色类型的值
spin(hsl(10, 90%, 50%), 30) // #f2a60d
// hsl(40, 90%, 50%)
spin(hsl(10, 90%, 50%), -30) // #f20d59
// hsl(340, 90%, 50%)
把两种颜色按不同比例混合在一起。不透明度包括在计算中。
颜色类型的值
mix(#ff0000, #0000ff, 50%) // #800080
mix(rgba(100,0,0,1.0), rgba(0,100,0,0.5), 50%) // rgba(75, 25, 0, 0.75)
混合颜色与白色的比例,这和 mix(#ffffff, @color, @weight)
一样。
颜色类型的值
no-alpha: tint(#007fff, 50%); // no-alpha: #80bfff;
with-alpha: tint(rgba(00,0,255,0.5), 50%); // with-alpha: rgba(191, 191, 255, 0.75);
混合颜色与黑色的可变比例。这个mix(#000000, @color, @weight)
一样。
颜色类型的值
no-alpha: shade(#007fff, 50%); // no-alpha: #004080;
with-alpha: shade(rgba(00,0,255,0.5), 50%); // with-alpha: rgba(0, 0, 64, 0.75);
在HSL颜色中去除一个颜色的所有饱和度,和调用desaturate(@color, 100%)
一样。
【color】——颜色对象
颜色类型的值
greyscale(hsl(90, 90%, 50%)) // #808080
// hsl(90, 0%, 50%)
从两种颜色中选择一种颜色与另一种颜色的对比最大的。
颜色类型的值
p {
a: contrast(#bbbbbb);
b: contrast(#222222, #101010);
c: contrast(#222222, #101010, #dddddd);
d: contrast(hsl(90, 100%, 50%), #000000, #ffffff, 30%);
e: contrast(hsl(90, 100%, 50%), #000000, #ffffff, 80%);
}
输出
p {
a: #000000 // black
b: #ffffff // white
c: #dddddd
d: #000000 // black
e: #ffffff // white
}
用两种颜色对应的RGB通道相乘,然后除以255,结果是这个颜色变深了。
颜色类型的值
multiply(#ff6600, #000000); // #000000
做相反的相乘,结果为明亮的颜色。
颜色类型的值
screen(#ff6600, #333333); // #ff8533
结合 multiply 和 screen 的效果,有条件地使亮通道变亮,使暗通道变暗。
注:条件的结果由第一个颜色参数决定。
颜色类型的值
overlay(#ff6600, #333333); // ff2900
类似于overlay,但避免了纯黑导致纯黑,纯白导致纯白。
颜色类型的值
softlight(#ff6600, #333333); // ff4100
和overlay一样,但是颜色角度颠倒了。
颜色类型的值
hardlight(#ff6600, #333333); // 662900
在一个通道的基础上,从第一个颜色减去第二个颜色。负数是反向的。减去黑色没有变化,减去白色会导致颜色反转。
颜色类型的值
difference(#ff6600, #333333); // cc3333
与低对比度下的差异效果相似。
颜色类型的值
exclusion(#ff6600, #333333); // cc7033
以每个通道(RGB)为基础计算两种颜色的平均值;
颜色类型的值
average(#ff6600, #333333); // 994b1a
做相反数的 difference
颜色类型的值
negation(#ff6600, #666666); // 99cc66
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※
!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。