gpt4 book ai didi

html - 在 HTML/CSS 中居中多路树根

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:24 25 4
gpt4 key购买 nike

我是 HTML/CSS 的初学者,我想将根置于节点 24 之间。我考虑了节点 234 之间的固定距离,然后使根相对于整个图形居中。

如果可能的话,我想把整个图形向左转90°。

感谢任何帮助!

* {
margin: 0;
padding: 0;
}

.tree ul {
padding-top: 20px;
position: relative;
}

.tree li {
float: left;
text-align: center;
list-style-type: none;
position: relative;
padding: 20px 5px 0 5px;
}

.tree li::before,
.tree li::after {
content: '';
position: absolute;
top: 0;
right: 50%;
border-top: 1px solid #ccc;
width: 50%;
height: 20px;
}

.tree li::after {
right: auto;
left: 50%;
border-left: 1px solid #ccc;
}

.tree li:only-child::after,
.tree li:only-child::before {
display: none;
}

.tree li:only-child {
padding-top: 0;
}

.tree li:first-child::before,
.tree li:last-child::after {
border: 0 none;
}

.tree li:last-child::before {
border-right: 1px solid #ccc;
border-radius: 0 5px 0 0;
}

.tree li:first-child::after {
border-radius: 5px 0 0 0;
}

.tree ul ul::before {
content: '';
position: absolute;
top: 0;
left: 50%;
border-left: 1px solid #ccc;
width: 0;
height: 20px;
}

.tree li a {
border: 1px solid #ccc;
border-radius: 25px 25px 25px 25px;
padding: 5px 10px;
text-decoration: none;
color: #666;
font-family: arial, verdana, tahoma;
font-size: 11px;
display: inline-block;
}
<div class="tree">
<ul>
<li>
<a href="#">1</a>
<ul>
<li>
<a href="#">2</a>
<ul>
<li>
<a href="#">2.1</a>
</li>
<li>
<a href="#">2.2</a>
</li>
</ul>
</li>
<li>
<a href="#">3</a>
<ul>
<li>
<a href="#">3.1</a>
</li>
<li>
<a href="#">3.2</a>
</li>
</ul>
</li>
<li>
<a href="#">4</a>
<ul>
<li>
<a href="#">4.1</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>

最佳答案

要将整个图形向左旋转 90°,我建议使用 CSS 变换。由于您的 block 没有设置宽度和高度,我会将其设置为 display: inline-block限制它的宽度并能够按照我们想要的方式旋转它。

要使顶部元素居中和/或为每个节点设置宽度,可以在不同元素上使用最小宽度(我已经给它类 .special )或给他节点子节点并设置它们之后不透明度或可见性为 0。如果你使用 min-width 解决方案,你需要设置它的 <li> children float: none使它们居中。

* {
margin: 0;
padding: 0;
}

.tree ul {
padding-top: 20px;
position: relative;
}

/* Using display: inline-block to limit its width */

.tree > ul {
display: inline-block;
transform: rotate(90deg);
}

/* Clearing floats (so <ul> has a defined height) */

.tree ul:after {
content: "";
display: table;
clear: both;
}

.tree li {
float: left;
text-align: center;
list-style-type: none;
position: relative;
padding: 20px 5px 0 5px;
}

.tree li::before,
.tree li::after {
content: '';
position: absolute;
top: 0;
right: 50%;
border-top: 1px solid #ccc;
width: 50%;
height: 20px;
}

.tree li::after {
right: auto;
left: 50%;
border-left: 1px solid #ccc;
}

.tree li:only-child::after,
.tree li:only-child::before {
display: none;
}

.tree li:only-child {
padding-top: 0;
}

.tree li:first-child::before,
.tree li:last-child::after {
border: 0 none;
}

.tree li:last-child::before {
border-right: 1px solid #ccc;
border-radius: 0 5px 0 0;
}

.tree li:first-child::after {
border-radius: 5px 0 0 0;
}

.tree ul ul::before {
content: '';
position: absolute;
top: 0;
left: 50%;
border-left: 1px solid #ccc;
width: 0;
height: 20px;
}

.tree li a {
border: 1px solid #ccc;
border-radius: 25px 25px 25px 25px;
padding: 5px 10px;
text-decoration: none;
color: #666;
font-family: arial, verdana, tahoma;
font-size: 11px;
display: inline-block;
}

.tree .special {
min-width: 94.594px;
}

.tree .special > ul > li {
float: none;
}
<div class="tree">
<ul>
<li>
<a href="#">1</a>
<ul>
<li>
<a href="#">2</a>
<ul>
<li>
<a href="#">2.1</a>
</li>
<li>
<a href="#">2.2</a>
</li>
</ul>
</li>
<li>
<a href="#">3</a>
<ul>
<li>
<a href="#">3.1</a>
</li>
<li>
<a href="#">3.2</a>
</li>
</ul>
</li>
<li class="special">
<a href="#">4</a>
<ul>
<li>
<a href="#">4.1</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>

关于html - 在 HTML/CSS 中居中多路树根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com