gpt4 book ai didi

html - 在 CSS 中设置宽度的嵌套列表意外 block 定位

转载 作者:行者123 更新时间:2023-11-28 14:06:48 24 4
gpt4 key购买 nike

我有嵌套列表,我正在测试这些列表以了解我正在处理的带有滑出式菜单的下拉列表。在滑出发生之前,将“打开”嵌套列表,这些列表被移动以识别用户的“深度”。奇怪的是,我得到了预期的结果,但不明白为什么我不能使用 block 显示而不是行内 block 显示。

注意:实际的菜单会扩展,需要为将来的变化动态调整,因此不能手动设置打开空间。该列表应该能够在不匹配新间距的情况下添加/减少。

第一张图片是我想要的,但我需要在父级列表项的所有内容上使用内联 block ,以便为嵌套列表“打开”。通过更改宽度并意识到任何没有空间放置内联自动换行的列表项都会分解并垂直扩展其 ul 父级,我终于了解了它是如何工作的。只是我还是这正是 block 显示应该做的?我不明白为什么当所有内容都被 block 显示时,嵌套列表不再在父列表中占用空间。

抱歉,CSS 有很多不必要的规则。我明确地将它们树出来以帮助查看什么在哪里。

感谢您的帮助!

使用行内 block :我得到了我想要的,但我认为不应该使用它。不要相信菜单功能的潜在动态变化。

    body {
padding: 50px;
}

ul, ul li, ul ul, ul label {
margin: 0;
padding: 0;
}
ul {
display: inline-block;
position: relative;
list-style: none;
font: normal 16px/30px Helvetica;
box-shadow: inset 0px 0px 0px 2px darkred;
width: 100px;
}
ul li{
display: inline-block;
width: 100px;
height: 30px;
box-shadow: inset 0px 0px 0px 2px forestgreen;
}
ul ul {
display: inline-block;
position: relative;
left: 50px;
box-shadow: inset 0px 0px 0px 2px red;
}
ul ul li {
display: inline-block;
width: 100px;
height: 30px;
box-shadow: inset 0px 0px 0px 2px lime;
}
ul ul ul{
display: inline-block;
position: relative;
left: 50px;
box-shadow: inset 0px 0px 0px 2px red;
}
ul ul ul li {
display: inline-block;
width: 100px;
height: 30px;
box-shadow: inset 0px 0px 0px 2px yellow;
}


ul li:hover {
background: #c3c3c3;
}
ul.main label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px darkblue;
}
ul.main ul label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px deepskyblue;
}
ul.main ul ul label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px aqua;
}
<body>
<ul class="main">
<li><label>&nbsp;main</label>
<ul>
<li><label>&nbsp;second</label>
<ul>
<li><label>&nbsp;third</label></li>
<li><label>&nbsp;third</label></li>
<li><label>&nbsp;third</label></li>
</ul>
</li>
<li><label>&nbsp;second</label></li>
<li><label>&nbsp;second</label></li>
</ul>
</li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
</ul>
</body>

有显示 block ,我觉得应该用

    body {
padding: 50px;
}

ul, ul li, ul ul, ul label {
margin: 0;
padding: 0;
}
ul {
display: inline-block;
position: relative;
list-style: none;
font: normal 16px/30px Helvetica;
box-shadow: inset 0px 0px 0px 2px darkred;
width: 100px;
}
ul li{
display: block;
width: 100px;
height: 30px;
box-shadow: inset 0px 0px 0px 2px forestgreen;
}
ul ul {
display: block;
position: relative;
left: 50px;
box-shadow: inset 0px 0px 0px 2px red;
}
ul ul li {
display: block;
width: 100px;
height: 30px;
box-shadow: inset 0px 0px 0px 2px lime;
}
ul ul ul{
display: block;
position: relative;
left: 50px;
box-shadow: inset 0px 0px 0px 2px red;
}
ul ul ul li {
display: block;
width: 100px;
height: 30px;
box-shadow: inset 0px 0px 0px 2px yellow;
}


ul li:hover {
background: #c3c3c3;
}
ul.main label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px darkblue;
}
ul.main ul label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px deepskyblue;
}
ul.main ul ul label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px aqua;
}
<body>
<ul class="main">
<li><label>&nbsp;main</label>
<ul>
<li><label>&nbsp;second</label>
<ul>
<li><label>&nbsp;third</label></li>
<li><label>&nbsp;third</label></li>
<li><label>&nbsp;third</label></li>
</ul>
</li>
<li><label>&nbsp;second</label></li>
<li><label>&nbsp;second</label></li>
</ul>
</li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
</ul>
</body>

with inline block with just block

最佳答案

我认为您需要做的就是不指定 li 元素的高度。设置main li 高度的问题是下一个main会直接放在下面,但是如果不指定height 该元素将扩展以容纳它的所有子元素,因此它看起来像您想要的那样,因为标签仍将保持相同的大小

body {
padding: 50px;
}

ul, ul li, ul ul, ul label {
margin: 0;
padding: 0;
}

ul {
display: inline-block;
position: relative;
list-style: none;
font: normal 16px/30px Helvetica;
box-shadow: inset 0px 0px 0px 2px darkred;
width: 100px;
}

ul li {
display: block;
width: 100px;
/* */
box-shadow: inset 0px 0px 0px 2px forestgreen;
}

ul ul {
display: block;
position: relative;
left: 50px;
box-shadow: inset 0px 0px 0px 2px red;
}

ul ul li {
display: block;
width: 100px;

box-shadow: inset 0px 0px 0px 2px lime;
}

ul ul ul {
display: block;
position: relative;
left: 50px;
box-shadow: inset 0px 0px 0px 2px red;
}

ul ul ul li {
display: block;
width: 100px;

box-shadow: inset 0px 0px 0px 2px yellow;
}

ul li:hover {
background: #c3c3c3;
}

ul.main label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px darkblue;
}

ul.main ul label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px deepskyblue;
}

ul.main ul ul label {
display: inline-block;
position: relative;
left: 2px;
top: 2px;
width: 96px;
height: 26px;
box-shadow: inset 0px 0px 0px 2px aqua;
}
<body>
<ul class="main">
<li><label>&nbsp;main</label>
<ul>
<li><label>&nbsp;second</label>
<ul>
<li><label>&nbsp;third</label></li>
<li><label>&nbsp;third</label></li>
<li><label>&nbsp;third</label></li>
</ul>
</li>
<li><label>&nbsp;second</label></li>
<li><label>&nbsp;second</label></li>
</ul>
</li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
<li><label>&nbsp;main</label></li>
</ul>
</body>

关于html - 在 CSS 中设置宽度的嵌套列表意外 block 定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57129684/

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