gpt4 book ai didi

CSS 下拉菜单 - 使 child 至少与 parent 同宽

转载 作者:行者123 更新时间:2023-11-28 09:13:53 25 4
gpt4 key购买 nike

我有一个工作正常的三层 CSS 下拉菜单,但我目前正在为第二层和第三层列表项指定实际宽度。我已经摆弄了几个小时,试图让它看起来像我想要的样子,但没有成功。

我希望第二层中的元素具有与其父级宽度相等的最小宽度,并且如果元素的内容长于其父级的内容则延伸超过该宽度。

我还希望第三层中的元素没有最小宽度,但宽度恰好是该特定嵌套无序列表的最长列表元素内容的宽度。

我当前的 HTML 和 CSS 在这里:http://jsfiddle.net/kBVYD/1/

如果您只想查看代码,这里是 HTML:

<div id="menu1">
<ul class="menu">
<li><a class="haschild" title="" href="">Home</a>
<ul class="sub-menu">
<li><a class="haschild" title="" href="">Sub Link 1</a>
<ul>
<li><a title="" href="">Sub Sub Link 1</a></li>
<li><a title="" href="">Sub Sub Link 2</a></li>
<li><a title="" href="">Sub Sub Link 3</a></li>
</ul>
</li>
<li><a title="" href="">Sub Link 2</a></li>
<li><a class="haschild" title="" href="">Sub Link 3</a>
<ul>
<li><a title="" href="">Sub Sub Link 1</a></li>
<li><a title="" href="">Sub Sub Link 2</a></li>
<li><a title="" href="">Sub Sub Link 3</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="haschild" title="" href="">About Us</a>
<ul class="sub-menu">
<li><a title="" href="">Sub Link 1</a></li>
<li><a title="" href="">Sub Link 2</a></li>
<li><a class="haschild" title="" href="">Sub Link 3</a>
<ul>
<li><a title="" href="">Sub Sub Link 1</a></li>
<li><a title="" href="">Sub Sub Link 2</a></li>
<li><a title="" href="">Sub Sub Link 3</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="haschild" title="" href="">Our Services Etc Etc Etc</a>
<ul class="sub-menu">
<li><a title="" href="">Sub Link 1</a></li>
<li><a class="haschild" title="" href="">Sub Link 2</a>
<ul>
<li><a title="" href="">Sub Sub Link 1</a></li>
<li><a title="" href="">Sub Sub Link 2</a></li>
<li><a title="" href="">Sub Sub Link 3</a></li>
</ul>
</li>
<li><a class="haschild" title="" href="">Sub Link 3</a>
<ul>
<li><a title="" href="">Sub Sub Link 1</a></li>
<li><a title="" href="">Sub Sub Link 2</a></li>
<li><a title="" href="">Sub Sub Link 3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="clear"></div>
</div>

这是 CSS:

#menu1 *
{
margin: 0;
padding: 0;
}

#menu1 ul.menu
{
float: left;
font-family: "Arial", sans-serif;
font-size: 14px;
font-weight: bold;
text-transform: uppercase;
}

#menu1 ul.menu li
{
position: relative;
float: left;
list-style-type: none;
}

#menu1 ul.menu li a
{
position: relative;
display: block;
line-height: 21px;
font-size: 14px;
padding: 14px 21px;
text-decoration: none;
z-index: 100;
}

#menu1 ul.menu > li:first-child > a
{
border-left: 0;
}

#menu1 ul.menu > li:last-child > a
{
border-right: 0;
}

/** Sub Menu - Tier 2 **/

#menu1 ul.menu li ul.sub-menu
{
position: relative;
display: none;
margin: 0;
padding: 0;
}

#menu1 ul.menu li:hover ul.sub-menu
{
display: block;
float: left;
position: absolute;
z-index: 200;
}

#menu1 ul.menu li ul.sub-menu > li:first-child
{
margin: 5px 0 0 0;
}

#menu1 ul.menu li ul.sub-menu li a
{
width: 140px;
display: block;
}

#menu1 ul.menu li ul.sub-menu li:first-child > a
{
border-top: 0;
}

#menu1 ul.menu li ul.sub-menu li:last-child > a
{
border-bottom: 0;
}

/** Sub Menu - Tier 3 **/

#menu1 ul.menu li ul.sub-menu li ul
{
position: relative;
display: none;
left: 100%;
}

#menu1 ul.menu li ul.sub-menu li ul li
{
margin: 0 0 0 5px;
}

#menu1 ul.menu li ul.sub-menu li:hover ul
{
display: block;
float: left;
position: absolute;
top: 0;
}

#menu1 ul.menu li ul.sub-menu li ul li a
{
width: 140px;
display: block;
}


/** Colour Styles **/

#menu1 ul.menu li a
{
background: #09F;
color: #FFF;
}

#menu1 ul.menu > li > a
{
border-left: 1px solid #26A8FF;
border-right: 1px solid #0082D9;
}

#menu1 ul.menu li:hover > a, #menu1 ul.menu li a:hover
{
color: #09F;
background: #ddd;
}

#menu1 ul.menu li ul.sub-menu li a
{
border-top: 1px solid #26A8FF;
border-bottom: 1px solid #0082D9;
}

最佳答案

删除您添加的自定义宽度:

#menu1 ul.menu li ul.sub-menu li a {
width: 140px;
}

现在的问题是 ul.sub-menu的尺寸基于它的 relative parent <li> .这里的技巧是使用 white-space: nowrap将它推出它的 parent 的维度。然后使用 min-width设置允许的最小宽度(或如您所述“至少是 parent 的宽度”)。

#menu1 ul.menu li ul.sub-menu {
min-width: 100%;
white-space: nowrap;
}

关于CSS 下拉菜单 - 使 child 至少与 parent 同宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13774939/

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