纯css实现关系图

CSS 关系图简介

CSS 关系图, 是指以图表形式展示 CSS 选择器以及它们之间如何相互关联、层叠和覆盖。这个概念是基于CSS的层叠性质和选择器的优先级规则。这种图形化的表示方式帮助开发者可视化地理解不同选择器的层级和优先级,以及它们是如何在文档对象模型(DOM)树上进行匹配的。

这是常见的关系图效果

CSS 关系图的组成

CSS 关系图主要组成部分包括:

  • 选择器:它是指明哪些HTML元素需要被应用样式的模式。在关系图中,选择器会以节点的形式呈现。
  • 关系:代表不同选择器之间的关系,例如后代关系、子代关系和相邻兄弟关系等。
  • 优先级:涉及特定度(Specificity)和重要性(Importance),通常由选择器的类型和结构决定。
  • 继承:某些CSS属性可从父元素传递给子元素,这在关系图上通常以箭头显示。

利用CSS关系图

在开发过程中,CSS关系图可以用来调试样式问题,优化选择器的效率,以及组织和维护项目中的CSS代码。你可以用它来确定:

  1. 选择器准确性:确保所使用的选择器能正确匹配期望的HTML元素。
  2. 继承冲突:解读哪些属性是继承来的,哪些是直接指定的。
  3. 特定度计算:理解不同选择器的权重,从而预测层叠结果。
  4. 样式覆盖:知道哪些样式会基于优先级规则覆盖其他样式。

给每一个容器添加基本样式,间距,文字居中显示

css 复制代码
.div {
  width: 80px;
  height: 80px;
  display: flex;
  background-color: aquamarine;
  /* 盒子距离 */
  margin-bottom: 50px;
  margin-right: 50px;
  display: flex;
  justify-content: center;
  align-items: center;
}

每个容器添加下线条连接,判断的依据是有无children,然后添加css 伪类样式

css 复制代码
/* 下线条 */
.xia::after {
  content: '';
  width: 1px;
  /* 线条往下的高度 */
  height: 25px;
  bottom: -25px;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  background-color: black;
}

上线条也是同理去实现伪类

css 复制代码
/* 上线条 */
.shang::before {
  content: '';
  width: 1px;
  /* 线条往下的高度 */
  height: 25px;
  top: -25px;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  background-color: black;
}

横线条在父元素添加伪类,定位到子元素的上线条上面

css 复制代码
.heng::after {
  content: '';
  /* 需要剪去盒子的大小和偏移量 */
  width: 100%;
  height: 1px;
  position: absolute;
  left: 40px;
  top: -25px;
  background-color: black;
}

最终实现的效果图

数据的结构

相关推荐
ssshooter1 小时前
Tauri 项目实践:客户端与 Web 端的授权登录实现方案
前端·后端·rust
兆子龙1 小时前
【React】19 深度解析:掌握新一代 React 特性
前端·架构
Moment1 小时前
MinIO已死,MinIO万岁
前端·后端·github
无双_Joney2 小时前
心路散文 - 转职遇到AI浪潮,AIGC时刻人的价值是什么?
前端·后端·架构
有意义2 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
小怪点点2 小时前
vue3使用
前端·vue.js
Bigger3 小时前
CSS 这些年都经历了什么?一次看懂 CSS 的演化史
前端·css·前端工程化
DevUI团队3 小时前
🚀 【Angular】MateChat V20.2.2版本发布,新增8+组件,欢迎体验~
前端·javascript·人工智能
嚴寒3 小时前
前端配环境配到崩溃?这个一键脚手架让我少掉了一把头发
前端·react.js·架构
DevUI团队3 小时前
🚀 MateChat V1.11.0 震撼发布!新增工具按钮栏组件及体验问题修复,欢迎体验~
前端·javascript·人工智能