纯css实现一个级联连线效果(2)

简介: 于是基本上我们的多层级效果就实现了, 全部代码如下
  /* 兜底 ul的伪元素是 第一层元素的高度 */
    .ul {
      position: relative;
    }
    .ul::after {
      content: "";
      position: absolute;
      width: 1px;
      height: calc(100% - 10px);
      background: #000;
      top: 50%;
      left: -9px;
      top: 0;
    }
 <script>
    const container = document.querySelector(".ul");
    // 获取第一层级最后一个元素的offsetTop
    const lastChildOffsetTop = container.lastElementChild.offsetTop;
    container.style.height = lastChildOffsetTop + 10 + "px";
  </script>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <style>
    .box {
      position: relative;
      left: 20%;
      top: 100px;
    }
    .box div {
      position: relative;
    }
    .box .child {
      margin-left: 30px;
    }
    .box div.child::before {
      content: "";
      position: absolute;
      width: 1px;
      height: 22px;
      background: #000;
      top: 50%;
      left: -39px;
      top: -9px;
    }
    .box div.child::after {
      content: "";
      position: absolute;
      width: 24px;
      height: 1px;
      background: #000;
      top: 50%;
      transform: translateY(-50%);
      left: -39px;
      top: 12px;
    }
    .box > div.child > div {
      margin-left: 30px;
    }
    .box .two_child {
      margin-left: 10px;
      position: relative;
    }
    .box2 {
      position: relative;
      left: 50%;
    }
    /* 兜底 ul的伪元素是 第一层元素的高度 */
    .ul {
      position: relative;
    }
    .ul::after {
      content: "";
      position: absolute;
      width: 1px;
      height: calc(100% - 10px);
      background: #000;
      top: 50%;
      left: -9px;
      top: 0;
    }
    .two_child {
      position: absolute;
    }
  </style>
  <body>
    <div class="box">
      <div class="ul">
        <div class="parent">四川区域</div>
        <div class="child">四川一区</div>
        <div class="child">四川二区</div>
        <div class="child">
          四川三区
          <div class="child two_child">
            四川三区(一)
            <div class="child two_child">四川三区(一) --- 1</div>
          </div>
        </div>
        <div class="child">四川三区</div>
        <div class="child">
          四川四区
          <div class="child two_child">
            四川四区(一) --- 1
            <div class="child two_child">四川四区(一) --- 1 - 1</div>
          </div>
        </div>
        <!-- <div class="child">四川四区</div> -->
      </div>
    </div>
    <div class="box box2">
      <div class="ul">
        <div class="parent">四川区域</div>
        <div class="child">四川一区</div>
        <div class="child">四川二区</div>
        <div class="child">
          四川三区
          <div class="child two_child">
            四川三区(一)
            <div class="child two_child">四川三区(一) --- 1</div>
          </div>
        </div>
        <div class="child">四川三区</div>
        <div class="child">
          四川四区
          <div class="child two_child">
            四川四区(一) --- 1
            <div class="child two_child">四川四区(一) --- 1 - 1</div>
          </div>
        </div>
        <div class="child">四川四区</div>
      </div>
    </div>
  </body>
  <script>
    const container = document.querySelector(".ul");
    // 获取第一层级最后一个元素的offsetTop
    const lastChildOffsetTop = container.lastElementChild.offsetTop;
    container.style.height = lastChildOffsetTop + 10 + "px";
  </script>
</html>

遗留缺点, 上述的兜底方案其实只考虑了第一层, 类似的如果下面层级也想完成最适配的情况, 也要通过上述方案进行兜底设置。

相关文章
|
前端开发 JavaScript
纯css实现一个级联连线效果(1)
纯 css 实现一个级联连线效果 1、前言 今天在css学习群里看到一个下图的效果,看到群中讨论如何实现时, 正好之前其实也做过类似的, 就想写个demo在回顾一下
351 0
|
4月前
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果
HTML+CSS 实现通用的企业官网页面(记得收藏)
HTML+CSS 实现通用的企业官网页面(记得收藏)
|
15天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
31 7
|
15天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
27 6
|
15天前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
29 5
|
15天前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
22 5
|
2月前
|
前端开发 JavaScript 搜索推荐
打造个人博客网站:从零开始的HTML和CSS之旅
【9月更文挑战第32天】在这个数字化的时代,拥有一个个人博客不仅是展示自我的平台,也是技术交流的桥梁。本文将引导初学者理解并实现一个简单的个人博客网站的搭建,涵盖HTML的基础结构、CSS样式的美化技巧以及如何将两者结合来制作一个完整的网页。通过这篇文章,你将学会如何从零开始构建自己的网络空间,并在互联网世界留下你的足迹。
|
1月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
102 6