我正在包装器内制作水平菜单和子菜单(第 2 级)。请想象这个菜单位于页面/包装器的右上角。问题是,由于子菜单也是水平的,它可能(将)太宽并且会溢出到包装器之外。
这里是:
那里有“菜单包装器”,但它不是我上面提到的包装器。包装器就在“Tab 3”之后,因此“Tab 3 sub 2”在包装器之外。
我认为解决方案是让第二级菜单从第一级下方的同一点开始,这样它就永远不会流出包装器(假设第一级足够宽)。在小提琴链接中:“tab 3 sub 1”从“tab 1”的正下方开始。我不能只使用 margin-left 或 left,因为我不知道子菜单将在哪个选项卡下开始。
这是可能的还是有其他解决方案?如果可能在纯 CSS 中,但如果不是,我会使用 Javascript。
提前致谢 :)
感谢您的解释。抱歉,代码如下:
<div class="menu-wrapper">
<ul class="menu">
<li>tab 1</li>
<li>tab 2</li>
<li>tab 3</li>
<ul>
<li>tab 3 sub 1</li>
<li>tab 3 sub 2</li>
</ul>
</ul>
</div>
和 CSS
.menu-wrapper {
width: 100%;
}
.menu {
max-width: 450px;
float: right;
}
.menu li a,
.menu li {
display: inline-block;
text-decoration: none;
}
.menu li:hover > ul {
display: block;
}
.menu li ul {
display: none;
width: 404px;
position: absolute;
}
.menu li li{
width: 200px;
margin: 0;
}
.menu li ul ul {
top: 100%;
left: 50%;
width: 200px;
}
.menu ul li:hover > ul {
border-left: 0;
display: block;
}
.menu li ul li a {
display: block;
padding: 8px 10px;
padding: 0.571428571rem 0.714285714rem;
width: 180px;
width: 12.85714286rem;
white-space: normal;
}