带边框的纯 css 树

2023-12-11

我正在尝试用纯 CSS 创建一棵带有缩进的树。我一直在尝试使用类似的东西:

ul.tree ul {
  padding-left: 5px;
}

但是我想在列表中的每个项目之间进行分隔。如果我使用上面的代码,分隔栏也会缩进,所以它不太好。

这是我当前的代码(我直接在js中进行缩进,我不喜欢):jsfiddle

最终,我想创建一些基本上看起来像这样的东西:

tree example

知道如何在纯 CSS 中做到这一点吗?感谢最简单的答案。


简单,多层次深度支持

更新:调整以适应悬停

不需要额外的 HTML,也不必因为 css 选择器链而限制深度,因为它支持任意数量的深度级别,而无需为这些级别调整 css(无需跟踪在下一个深度级别设置的“填充”) )。

这很有效,只有两个小限制(我不认为这会影响您)。

请参阅小提琴演示。

Add a position: relative给你的ul.tree,但保留所有子元素默认值static位置。然后更改/添加以下 css:

ul.tree a {
  display: block;
  height:30px;
  line-height: 30px;
  padding-left: 15px;
}

/* this is making our bottom border, but sizing off the .tree ul width */
ul.tree a:before { 
  content: '';
  height: 30px; /* match your <a> height */
  position: absolute;
  left: 0;
  right: 0;
  z-index: -1;
  border-bottom-width: 1px;
  border-bottom-color: lightgray;
  border-bottom-style: solid;
}


ul.tree a + ul {
    padding-left: 15px; /* this is your spacing for each level */
}

ul.tree a:hover:before {
  background-color: #DDDDDD;
}

限制是子元素不能设置位置,并且我们使用伪元素(这意味着它不能用于其他功能,但这可能也不是问题)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带边框的纯 css 树 的相关文章

  • 如何更改 Material UI 版本 5 自动完成中的选项字体大小?

    我想更改下拉项目的字体大小 我尝试了不同的方法来改变字体大小 如下所示 如何更改 Material UI 自动完成字体大小 https stackoverflow com questions 62492939 how do i change
  • Chrome DevTools:计算样式与 css 规则不同?

    当我在 CSS 文件中定义 4px 时 我的 DOM 元素的 border top width 怎么可能是 0px 当我使用 Chrome DevTools 检查元素时 我发现计算的样式告诉 0px 而最上面的 css 规则是 4px 而且
  • 多列定义列表[重复]

    这个问题在这里已经有答案了 我有一个 dl 像这样 dl dt Quantity dd dt Size dd dt Rise dd dt Color dd dd dt dd dt dd dt dd dt dl 该列表是通过 php 动态生成
  • iPhone 上的 Chrome 溢出空白页面上的内容(仅在新选项卡上,而不是重新加载)

    在 iOS Chrome 上 正文会在没有内容的新选项卡或页面上溢出 但如果重新加载页面 问题就会得到解决 它会给位于底部的任何元素 绝对或固定 带来问题 这是重现问题的代码
  • 为什么 Flexbox 会拉伸我的图像而不是保留纵横比?

    Flexbox 具有这种行为 它将图像拉伸到其自然高度 换句话说 如果我有一个带有子图像的 Flexbox 容器 并且我调整了该图像的宽度 则高度根本不会调整大小 并且图像会被拉伸 div display flex flex wrap wr
  • 将 html 转换为 pdf 时防止表格单元格跨页破坏

    使用 Google Apps 脚本 我有一个 html 模板 我填写该模板 然后以 pdf 形式发送 通过传真和 或电子邮件 该模板包括一个带有问题 答案的两列表格 如果行数足够多 表格会在pdf中跨页分页 并且分页符通常发生在单元格的中间
  • 边界半径圆

    我有这个代码 span p margin 0 span background color red display inline block border radius 50 span p 25 p p 08 p span 我想在我的跨度上画
  • @Font-face 不适用于 IOS

    我正在开发一个 WordPress 网站 并且在每个页面上都有一个 H1 标签作为该页面的标题 我正在使用 font face 的特殊字体 它在每个浏览器的 Windows 上都运行良好 但是当我切换到 Mac 时 它不会显示 h1 标签
  • javascript中怪异模式的元素宽度?

    我一直在浏览所有流行的 js 库 但我找不到一个具有 DOM 元素宽度函数的库 该函数实际上可以解释 Internet Explorer 中的怪异模式 问题是 当启用怪异模式时 填充和边框不会计入宽度 据我所知 当省略 doctype 或将
  • 您能否确定 CSS 文件的范围,使其仅适用于给定元素的后代?

    给定一个 css 文件 有没有办法限制整个文件的范围 使其仅适用于给定元素内的元素 例如给定 div span class some element span div 有没有一种方法可以将整个 css 文件的范围应用于 容器 中的所有元素
  • 如何使用 css 在标题的两侧放置实线? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在标题文本上制作字段集图例样式的 背景线 https stackoverflow com questions 5985009 how can i make a fieldset legend st
  • 如何仅使用CSS设置某个角的边框半径

    如上所示 我可以只给顶部部分而不给底部提供半径 或者有时给底部而不是顶部提供半径吗 有没有办法只给一个角提供边界半径 Like border radius top left top right bottom right bottom lef
  • 如何使用CSS将背景图像放入选择选项标签中

    我有一个从 json 响应接收的国家 地区下拉列表 并且想要在国家 地区名称旁边添加相应的国家 地区国旗图标 也从 json 响应获取图像 我已经尝试了不同的 jQuery 和 bootstrap 插件 但他们所做的是破坏我以前的选择框样式
  • 将 Div 放置在另一个 DIV 下方

    我有两个 DIV 元素 其中之一具有绝对位置 主 DIV 的左下角 第二个 DIV 是隐藏的 只有单击链接才能显示 我需要第二个出现在第一个下方 但由于第一个 div 的位置是绝对的 第二个 div 出现在第一个 div 之上 HTML 代
  • 从顶部开始在同一水平线上显示同一行中的两个 div

    这是我的代码 floating box display inline block width 150px margin 10px border 3px solid 73AD21 after box border 3px solid red
  • 每 2 行后使 html 表格的边框变厚

    我创建了一个包含一些内容的表 其中有 12 行和 2 列 我想显示边框 但每 4 行之后 我想将水平边框设置为比正常情况更粗 怎么做 请在这里帮忙 试试这个选择器 table tr nth of type 4n td border bott
  • div 中的中心文本?

    我有一个div 30px高和500px宽的 这div可以包含两行文本 一行在一行 并相应地设置样式 填充 但有时它只包含一行 我希望它居中 这可能吗 要水平居中 请使用text align center 要垂直居中 只能使用vertical
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用

随机推荐

  • firebase 从 firestore js sdk 缓存检索文档是否收费

    我正在使用 firebase JS SDK 离线持久化已启用 这会自动将我检索到的文档缓存在 JS SDK 中 我执行这个查询 once firebase firestore doc path to doc get twice fireba
  • 在快速路由文件中使用 socket.io

    我正在尝试将 Socket io 与 Node js 结合使用 并发送到路由逻辑内的套接字 我有一个相当标准的 Express 3 设置 其中有一个位于路由中的 server js 文件 然后我有一个位于路由文件夹中的 index js 该
  • 为什么打印功能没有在正确的时间运行? [复制]

    这个问题在这里已经有答案了 这是我的代码 import time as t print hello end t sleep 1 print hello end t sleep 1 print hello end t sleep 1 我的问题
  • Imagemagick 去饱和黑/白?

    想把它变成黑白的 不知道该使用 imagick 的什么 handle data file get contents http www bungie net Stats Reach Nightmap ashx http www bungie
  • AttributeError:“CountVectorizer”对象没有属性“get_feature_names”

    该代码之前可以运行 没有显示任何错误 这是一个情感分析机器学习项目 该代码基于字数统计的逻辑回归模型 c CountVectorizer stop words english def text fit X y model clf model
  • jqGrid 使用“filterToolbar”在客户端进行过滤

    我必须向完全在客户端管理的 jqGrid 添加过滤 数据仅从服务器加载一次 我需要使用 filterToolbar 来过滤网格数据 但如果客户端有默认搜索机制 则无法找到信息 服务器端搜索是做到这一点的唯一方法吗 谢谢 科斯明 不幸的是 搜
  • 为什么我的超便携笔记本电脑 CPU 无法在 HPC 中保持最佳性能

    我开发了一个高性能Cholesky 分解例程 在单个 CPU 上应具有约 10 5 GFLOP 的峰值性能 无超线程 但是当我测试它的性能时 有一些我不明白的现象 在我的实验中 我测量了矩阵维度 N 从 250 增加到 10000 时的性能
  • Javascript 事件,捕获有效,而冒泡则不行

    我对 JS 事件传播的理解是 事件首先在 DOM 树中 捕获 然后 冒泡 回来 沿途触发处理程序 div nothing yet div
  • NextJS htaccess 设置,URL 上不带尾部斜杠

    在 NextJS 上发现我的网站存在问题 在开发过程中 我使用按钮导航该网站并手动更改浏览器地址栏 碰巧我不小心在末尾添加了一个斜杠 但我的本地主机服务器将其删除 一切正常 但当我将静态应用程序上传到托管时 一切都发生了变化 重新加载页面时
  • AngularJS - 初始化日期输入

    我有一个应用程序 其中有几个日期字段需要接受来自用户和数据库的值 I found this解决方案 但仍然收到错误消息 错误 ngModel datefmt http errors angularjs org 1 5 8 ngModel d
  • 调试 u-sql 作业

    我想知道是否有任何提示和技巧来查找数据湖分析工作中的错误 大多数时候错误消息似乎不是很详细 当尝试从 CSV 文件中提取时 我经常收到这样的错误 顶点故障触发作业快速中止 顶点失败 SV1 Extract 0 且 gt 错误 顶点用户代码错
  • 使用 8 张图像在 UIImageView 周围创建边框

    I have 8 images I made 4 images for each of the corners and 4 images for each of the sides of UIImageView Now how on Ear
  • 在 Spring 中创建临时 JMS jms 主题

    我正在尝试重构一些遗留代码以使用 Spring 处理与大型机服务的 jms 连接 我需要连接为大型机服务回复创建一个临时主题并将其设置为message setJMSReplyTo replyTo 在我发送消息之前的消息中 谁能提供这方面的例
  • Logstash 中需要 #、输入、过滤器、输出之一

    我试图通过简单地执行文档中给出的命令来回显所输入的内容来使 Logstash 安装工作 但这给了我以下错误 我的命令 C logstash 1 4 0 bin gt logstash bat agent e input stdin outp
  • 如何使用 Laravel 的 Paginate() 输出当前迭代?

    Laravel 5 2 应用程序 我的控制器中有一个函数 它使用 order by 子句查询我的数据库 然后我对其进行分页 public function foo results DB orderBy name desc gt pagina
  • 如何确保 Node.js 在 MongoDB 连接断开后继续运行?

    我在 Express 中有一个错误处理中间件 它尝试捕获所有传入的错误 app use function err req res next console error err stack res status 500 res render
  • 将图像从 azure blob 存储转换为 Base64?

    我正在尝试将图像从 Azure blob 存储转换为 base64 private static string FromAzureToBase64 string azureUri Uri blobUri new Uri azureUri C
  • 将 R 县地图叠加到州地图上

    R新手在这里 如果我第一次使用map state 我该如何使用map county ylim xlim 但像这样抵消它 现在 我正在使用 imagemagickcomposite gravity southwest 合并 2 个 PNG 文
  • 如何在 Vim 中为命令创建别名?

    Vim 是我编程时首选的文本编辑器 因此我总是遇到一个特别烦人的问题 通常 当我快速需要保存缓冲区并继续执行其他杂项任务时 我会执行典型的操作 w 然而 我总是 似乎超过 50 的时间 设法利用这一点 w 很自然地 Vim 对我大喊大叫 因
  • 带边框的纯 css 树

    我正在尝试用纯 CSS 创建一棵带有缩进的树 我一直在尝试使用类似的东西 ul tree ul padding left 5px 但是我想在列表中的每个项目之间进行分隔 如果我使用上面的代码 分隔栏也会缩进 所以它不太好 这是我当前的代码