我尝试构建 一个纯CSS树形结构。我在块之间的水平线(两个块处于同一级别)遇到了问题。我在以下jsfiddles中分离了问题:
https://jsfiddle.net/8Lsv1ypd/3/
https://jsfiddle.net/8Lsv1ypd/4/
Html:
<span class="first">First</span>
<span class="second">Second</span>
CSS:
.first {
background-color: #dc3545;
color: #fff;
font-size: 1.2rem;
border: 1px #ccc solid;
border-radius: 20px;
padding: 5px 10px;
margin-top: 10px;
}
.second {
background-color: #6f42c1;
color: #fff;
font-size: 1.2rem;
border: 1px #ccc solid;
border-radius: 5px;
padding: 5px 10px;
margin-top: 10px;
margin-left: 10px;
}
.second::before {
content: "";
position: relative;
top: -13px;
left: -30px;
border-left: 1px solid #aaa;
border-bottom: 1px solid #000;
border-radius: 0 0 0 0px;
height: 26px;
width: 50px !important;
}
当CSS位置(在.second :: before中)设置为相对时,宽度(以像素为单位固定)不会被考虑,只显示垂直线,并且宽度由浏览器“强制”为1像素。
当CSS位置(在.second :: before中)设置为绝对时,宽度不被考虑,水平线被显示,但该线未连接两个块。
我已经尝试了以下选项的许多组合:
- position:absolute / relative / static / fixed
- display:block / inline
- overflow:auto / visible;
我已经查看了以下问题:
- 没有设置相对宽度的CSS相对定位?
- CSS相对定位div的宽度通过绝对定位div自动扩展
- CSS相对定位、绝对定位
- CSS使绝对子元素的宽度独立于相对父元素的宽度
- CSS position如何影响元素的宽度/高度?
- 如何使用带有百分比(高度、宽度)尺寸的CSS position(relative、absolute)?
以下是需要翻译的文章:
position:relative;
添加到span元素中,以使left/top按照您的要求工作。 - Temani Afifdisplay: inline-block
和position: relative
是正确的选择。 - Jakefloat:left;
代替inline-block
可以避免display:inline-block
始终占用一些空间 :) - Amarjit Singh