我们在使用 CSS 时,如果想要为多层嵌套的元素设置样式,要么给元素加上一个类选择器或ID选择器,要么使用后代选择器。例如:
.xkd{
font-size: 14px;
}
.xkd p{
line-height: 25px;
}
.xkd p span{
color: #ccc;
}
这样写虽然也好理解,但是没有那么直观,维护起来也不方便。
而 Less 中的嵌套规则正好可以解决这样问题,嵌套规则允许在一个选择器中嵌套另一个选择器,这样可以使得代码看起来一目了然,后期维护也方便。
嵌套的使用
例如上面的 CSS 代码使用 Less 语言来写:
.xkd{
font-size: 14px;
p{
line-height: 25px;
span{
color: #ccc;
}
}
}
这样整体看起来是不是更直观一些,一层套一层。但是注意哟,一般我们不会嵌套太多层,嵌套的层数越多,性能就越差,建议一般嵌套三层左右。
&符号的使用
在我们使用嵌套规则时,要特别注意 &
符号的使用,&
符号可以表示对父选择器的引用。
在一个内层选择器的前面,如果没有 &
符号,则这个内层选择器会被解析为父选择器的后代。如果内层选择器前面有一个 &
符号,则内层选择器会被解析为父选择器自身或父选择器的伪类。
示例:
例如我们看下面这段代码:
.xkd{
a{
color: #eee;
}
}
编译成 CSS 代码:
.xkd a {
color: #eee;
}
可以看到,标签选择器 a
前面没有加 &
符号,所以这个标签选择器 a
被解析为 .xkd
选择器的后代。
示例:
再来看一下内层选择器前面加 &
符号:
.xkd{
&one{
font-size: 12px;
}
&:hover{
color: #fff;
}
}
编译成 CSS 代码:
.xkdone {
font-size: 12px;
}
.xkd:hover {
color: #fff;
}
上面代码中,one
前面添加了一个 &
符号,这个符号就表示父选择器本身,所以解析后为.xkdone
。当然 :hover
伪类前面的 &
符号也是同理。
重复引用父选择器
通过使用 &
符号,可以重复引用父类选择器。
示例:
例如下面这段 Less 代码,如果我们希望每个选择器名的前缀都为 top
,可以像下面这样简写:
.xkd{
&-one{
font-size: 14px;
}
&-two{
font-size: 16px;
}
&-three{
font-size: 18px;
}
}
编译为 CSS 代码:
.xkd-one {
font-size: 14px;
}
.xkd-two {
font-size: 16px;
}
.xkd-three {
font-size: 18px;
}
除此之外,还可以同时使用多个 &
符号,并使用其他运算符连接起来:
.xkd{
&&-one{
font-size: 14px;
}
&,&-two{
font-size: 16px;
}
&, &er{
font-size: 18px;
}
}
编译为 CSS 代码:
.xkd.xkd-one {
font-size: 14px;
}
.xkd,
.xkd-two {
font-size: 16px;
}
.xkd,
.xkder {
font-size: 18px;
}
更改选择器顺序
什么是更改选择器顺序呢,就是有些时候可能需要将内层选择器放在父选择器之前,此时我们可以将 &
放在当前选择器后面来完成。
示例:
例如下面这段代码,我们希望 .xkd
选择器位于 .nav
选择器之前,可以在 .xkd
选择器的后面加一个 &
符号:
.nav{
font-size: 14px;
.xkd &{
color: #fff;
}
}
编译为 CSS 代码:
.nav {
font-size: 14px;
}
.xkd .nav {
color: #fff;
}
可以看到,编译之后的 CSS 代码中 .xkd
选择器位于 .nav
选择器前面。
总结
本节我们主要掌握 Less 中的嵌套规则和 &
符号的使用, &
符号可以表示父选择器。最后,记住使用嵌套的时候不要嵌套太多层,会影响性能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。