关于前端:Less-嵌套

咱们在应用 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 中的嵌套规定和 & 符号的应用, & 符号能够示意父选择器。最初,记住应用嵌套的时候不要嵌套太多层,会影响性能。

链接:https://www.9xkd.com/

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理