前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >less中的层级结构

less中的层级结构

原创
作者头像
程序员NEO
发布2023-09-29 07:28:01
发布2023-09-29 07:28:01
2630
举报

基于 less 初体验 这篇文章,在该文章当中其实已经出现了 less 中的层级结构,我将该代码贴在了下方

index.html

代码语言:html
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>less中的层级结构</title>
</head>
<body>
<div class="father">
    <div class="son"></div>
</div>
</body>
</html>

index.less

代码语言:less
复制
* {
  margin: 0;
  padding: 0;
}

.father {
  width: 300px;
  height: 300px;
  background: red;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);

  .son {
    width: 200px;
    height: 200px;
    background: blue;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}

通过如上的写法可以看出 css 的层级结构和 html 的结构已经是一模一样了,这样也方便了我们进行阅读和维护了,但是如上的内容并不是我们这次的重点内容,这次我要介绍的内容为,在这种层级结构当中为何使用伪类和伪元素,什么是伪类和伪元素呢,先来看一个小小的需求案例,我现在要求 .son 鼠标移上去 (hover) 改变该元素的背景颜色,在过去我们如何实现这个需求的,代码如下

代码语言:less
复制
* {
  margin: 0;
  padding: 0;
}

.father {
  width: 300px;
  height: 300px;
  background: red;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);

  .son {
    width: 200px;
    height: 200px;
    background: blue;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}

.son:hover {
  background: green;
}

如果按照如上的写法进行编写,就违背了 less 的初衷,less 的初衷就是一个整体的内容都需要放到一个整体当中,当前 hover 代码并没有放到一个整体当中

先来看如果在某一个选择器的 {} 中直接写上了其它的选择器,会自动转换成后代选择器

代码语言:less
复制
* {
  margin: 0;
  padding: 0;
}

.father {
  width: 300px;
  height: 300px;
  background: red;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);

  .son {
    width: 200px;
    height: 200px;
    background: blue;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}
image-20210811094801368
image-20210811094801368

改造如上 hover 的代码

代码语言:less
复制
* {
  margin: 0;
  padding: 0;
}

.father {
  width: 300px;
  height: 300px;
  background: red;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);

  .son {
    :hover {
      background: green;
    }

    width: 200px;
    height: 200px;
    background: blue;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}
image-20210811100313829
image-20210811100313829

经过改造后的代码发现,:hover 也使用后代来转换了,使用 & 改造如上 hover 代码,& 的作用,是告诉 less 在转换的时候不用用后代来转换,直接拼接在当前选择器的后面即可

代码语言:less
复制
* {
  margin: 0;
  padding: 0;
}

.father {
  width: 300px;
  height: 300px;
  background: red;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);

  .son {
    &:hover {
      background: green;
    }

    width: 200px;
    height: 200px;
    background: blue;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}
image-20210811100628534
image-20210811100628534

如上是关于伪类的添加,在来看看关于伪元素的添加,如下

代码语言:less
复制
* {
  margin: 0;
  padding: 0;
}

.father {
  width: 300px;
  height: 300px;
  background: red;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);

  &::before {
    content: "子元素";
    display: block;
    background: yellowgreen;
    width: 100px;
    height: 100px;
  }
}
image-20210811101520847
image-20210811101520847
image-20210811101542477
image-20210811101542477

如有不正确之处,还请大佬指正🐤

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档