gpt4 book ai didi

html - 绝对元素继承了父元素的宽度,但我希望它根据其子元素进行拉伸(stretch)

转载 作者:搜寻专家 更新时间:2023-10-31 22:32:28 24 4
gpt4 key购买 nike

我正在构建一个像这样的 jsfiddle 的 css 菜单:http://jsfiddle.net/YXT7j/48/

HTML:

<ul id="nav">
<li><a>item 1</a>
<ul class="sub" style="width: 200px;">
<li><a>item 1.1</a>
<ul>
<li><a>item 1.1.1</a></li>
<li><a>item 1.1.2</a></li>
<li><a>item 1.1.3</a></li>
</ul>
</li>
<li><a>item 1.2</a>
<ul>
<li><a>item 1.1.1</a></li>
<li><a>item 1.1.2</a></li>
<li><a>item 1.1.3</a></li>
</ul>
</li>
</ul>
</li>
<li><a>item 2</a>
<ul class="sub">
<li><a>item 2.1</a></li>
<li><a>item 2.2</a></li>
<li><a>item 2.3</a></li>
</ul>
</li>
<li><a>item 3</a>
<ul class="sub">
<li><a>item 3.1</a></li>
<li><a>item 3.2</a></li>
<li><a>item 3.3</a></li>
</ul>
</li>
</ul>

CSS:

#nav>li {
float: left;
margin: 0 10px;
position: relative;
}
.sub {
display: none;
position: absolute;
top: 1em;
left: 0;
}
.sub>li {
float: left;
width: 100px;
}
#nav>li:hover .sub {
display: block;
}

在第 1 项下,您可以看到如何有 2 个列表彼此相邻。同样在 html 中,您会看到一个内联宽度集。如果没有行内宽度(或等效的 css),列表将显示在彼此下方而不是彼此相邻(http://jsfiddle.net/YXT7j/34/)。

现在子菜单中的列表数量是动态的。这就是为什么我不能在 css 中设置宽度并且我现在使用内联样式 (100*numlists+'px') 的原因。但这太丑了。我希望子菜单像任何其他元素一样调整其 li-children 的大小。不幸的是,如果没有设置宽度,子菜单将遵循其父菜单项的宽度。

那么,tl/dr:我怎样才能得到 http://jsfiddle.net/YXT7j/48/无需在 ul.sub 上设置显式宽度。

谢谢!

最佳答案

这是我的解决方案的 js-fiddle:http://jsfiddle.net/YXT7j/66/

您必须在子菜单内联 block 中制作列表,而不是 float 它们。然后你告诉子菜单不要用空格包装内联元素:nowrap;

这是我之前在其他问题上看到的类似答案。尽管这些答案是为了防止文本(标准内联)换行,而不是完整的 block 元素。

因此,为了完整起见,代码:

<ul id="nav">
<li><a>item 1</a>
<ul class="sub multi">
<li><a>item 1.1</a>
<ul>
<li><a>item 1.1.1</a></li>
<li><a>item 1.1.2</a></li>
<li><a>item 1.1.3</a></li>
</ul>
</li>
<li><a>item 1.2</a>
<ul>
<li><a>item 1.1.1</a></li>
<li><a>item 1.1.2</a></li>
<li><a>item 1.1.3</a></li>
</ul>
</li>
</ul>
</li>
<li><a>item 2</a>
<ul class="sub">
<li><a>item 2.1</a></li>
<li><a>item 2.2</a></li>
<li><a>item 2.3</a></li>
</ul>
</li>
<li><a>item 3</a>
<ul class="sub">
<li><a>item 3.1</a></li>
<li><a>item 3.2</a></li>
<li><a>item 3.3</a></li>
</ul>
</li>
</ul>

#nav>li {
float: left;
margin: 0 10px;
position: relative;
}
.sub {
display: none;
position: absolute;
top: 1em;
left: 0;

white-space: nowrap;
}
.sub>li {
width: 100px;
}
.multi.sub>li {
display: inline-block;
}
#nav>li:hover .sub {
display: block;
}

关于html - 绝对元素继承了父元素的宽度,但我希望它根据其子元素进行拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122230/

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