美文网首页让前端飞
Less 中的嵌套规则讲解

Less 中的嵌套规则讲解

作者: 前端辉羽 | 来源:发表于2020-09-03 17:11 被阅读0次

本文导航:

  • 1.嵌套的使用
  • 2.&符号的使用
  • 3.&的重复使用
  • 4.反向嵌套
  • 5.@规则嵌套的冒泡

Less 中嵌套应该很容易理解,html 语言中就支持标签的嵌套。我们在使用 css 时,如果想要为多层嵌套的元素设置样式,要么给元素加上一个类选择器或ID选择器,要么使用后代选择器。例如:

.rcdemo{
  font-size: 14px;
}
.rcdemo p{
  line-height: 25px;
}
.rcdemo p span{
  color: #ccc;
}

这样写虽然也好理解,但是没有那么直观,维护起来也不方便。
而 Less 中的嵌套规则正好可以解决这样问题,嵌套规则允许在一个选择器中嵌套另一个选择器,这样可以使得代码看起来一目了然,后期维护也方便。

1.嵌套的使用

例如上面的 css 代码使用 Less 语言来写:

.rcdemo{
   font-size: 14px;
   p{
      line-height: 25px;
      span{
         color: #ccc;
      }
   }
}

这样整体看起来是不是更直观一些,一层套一层。但是注意哟,一般我们不会嵌套太多层,嵌套的层数越多,性能就越差,建议一般嵌套三层左右。

2.&符号的使用

在我们使用嵌套规则时,要特别注意 & 符号的使用,& 符号可以表示对父选择器的引用。
在一个内层选择器的前面,如果没有 & 符号,则这个内层选择器会被解析为父选择器的后代。如果内层选择器前面有一个 & 符号,则内层选择器会被解析为父选择器自身或父选择器的伪类。
例如我们看下面这段代码:

.rcdemo{
    a{
        color: #eee;
    }
}

编译成 css 代码:

.rcdemo a {
  color: #eee;
}

可以看到,标签选择器 a 前面没有加 & 符号,所以这个标签选择器 a 被解析为 .rcdemo 选择器的后代。
再来看一下内层选择器前面加 & 符号:

.rcdemo{
   &one{
      font-size: 12px;
   }
   &:hover{
       color: #fff;
   }
}

编译成 css 代码:

.rcdemoone {
  font-size: 12px;
}
.rcdemo:hover {
  color: #fff;
}

上面代码中,one 前面添加了一个 & 符号,这个符号就表示父选择器本身,所以解析后为.rcdemoone。当然 :hover 伪类前面的 & 符号也是同理。

3.&的重复使用

通过使用 & 符号,可以重复引用父类选择器。
例如下面这段 Less 代码,如果我们希望每个选择器名的前缀都为 top,可以像下面这样简写:

.rcdemo{
   &-one{
       font-size: 14px;
   }
   &-two{
       font-size: 16px;
   }
   &-three{
       font-size: 18px;
   }
}

编译为 css 代码:

.rcdemo-one {
  font-size: 14px;
}
.rcdemo-two {
  font-size: 16px;
}
.rcdemo-three {
  font-size: 18px;
}

除此之外,还可以同时使用多个 & 符号,并使用其他运算符连接起来:

.rcdemo{
   &&-one{
       font-size: 14px;
   }
   &,&-two{
       font-size: 16px;
   }
   &, &er{
       font-size: 18px;
   }
}

编译为 css 代码:

.rcdemo.rcdemo-one {
  font-size: 14px;
}
.rcdemo,
.rcdemo-two {
  font-size: 16px;
}
.rcdemo,
.rcdemoer {
  font-size: 18px;
}

4.反向嵌套

有些时候可能我们可能需要将内层选择器放在父选择器之前,此时我们可以将 & 放在当前选择器后面来完成。
例如下面这段代码,我们希望 .rcdemo 选择器位于 .nav 选择器之前,可以在 .rcdemo 选择器的后面加一个 & 符号:

.nav{
   font-size: 14px;
   .rcdemo &{
     color: #fff;
   }
}

编译为 css 代码:

.nav {
  font-size: 14px;
}
.rcdemo .nav {
  color: #fff;
}

可以看到,编译之后的 css 代码中 .rcdemo 选择器位于 .nav 选择器前面。
当然了,这种方法我们了解即可,在开发中尽量不要去使用。

5.@规则嵌套的冒泡

@ 规则(例如 @media 或 @supports)可以与选择器以相同的方式进行嵌套。@ 规则会被放在前面,同一规则集中的其它元素的相对顺序保持不变。这叫做冒泡(bubbling)。

.component {
  width: 300px;
  @media (min-width: 768px) {
    width: 600px;
  @media  (min-resolution: 192dpi) {
    background-image: url(/img/retina2x.png);
    }
  }
  @media (min-width: 1280px) {
    width: 800px;
  }
}

编译为

.component {
  width: 300px;
}
@media (min-width: 768px) {
  .component {
    width: 600px;
  }
}
@media (min-width: 768px) and (min-resolution: 192dpi) {
  .component {
    background-image: url(/img/retina2x.png);
  }
}
@media (min-width: 1280px) {
  .component {
    width: 800px;
  }
}

相关文章

  • Less 中的嵌套规则讲解

    本文导航: 1.嵌套的使用 2.&符号的使用 3.&的重复使用 4.反向嵌套 5.@规则嵌套的冒泡 Less 中嵌...

  • Less用法之——嵌套规则和运算

    嵌套规则 LESS 可以让我们以嵌套的方式编写层叠样式. 让我们先看下下面这段 CSS: 在 LESS 中, 我们...

  • web前端学习线路图2

    十二、LESS教程 Less教程Less 安装Less 嵌套规则Less 操作Less 转义Less 函数 Les...

  • css less

    1、css less 2、less的嵌套规则 3、HTML5新增标签

  • less使用总结

    less语法 less的基础语法常用到的主要有:变量、混合(Mixins)、嵌套规则; 1.变量 和JS中的变量一...

  • less的嵌套规则

    我们可以用less嵌套的方式嵌套编写层叠样式,比如说下面这一段css样式 #header{color: black...

  • less基础学习记录总结

    目录 变量 混合 带参数混合 嵌套规则 运算 Color函数 命名空间 作用域 Importing 变量 less...

  • LESS嵌套规则与运算

    1. 嵌套规则 (1)什么是嵌套规则:嵌套规则模仿了 HTML 的结构,让 CSS 代码更简洁明了 (2)示例: ...

  • less和sass的区别

    首先,sass和less都是css的预编译处理语言,他们引入了mixins,参数,嵌套规则,运算,颜色,名字空间,...

  • LESS与SASS的区别

    前言 首先sass和less都是css的预编译处理语言,他们引入了mixins,参数,嵌套规则,运算,颜色,名字空...

网友评论

    本文标题:Less 中的嵌套规则讲解

    本文链接:https://www.haomeiwen.com/subject/lzrosktx.html