gpt4 book ai didi

css - 多级动态弹出菜单

转载 作者:行者123 更新时间:2023-11-28 10:04:18 29 4
gpt4 key购买 nike

我有以下纯 CSS 弹出菜单结构:

HTML

<ul class="menu">
<li><a href="#">Base</a>
<ul>
<li><a href="#">Clients</a>
<ul>
<li><a href="#">New</a></li>
<li><a href="#">Edit</a></li>
<li><a href="#">Delete</a></li>
</ul>
</li>
<li><a href="#">Products</a></li>
<li><a href="#">Employees</a></li>
</ul>
</li>
<li><a href="#">Search</a></li>
<li><a href="#">System</a></li>
</ul>

CSS

a {text-decoration: none; font-family: verdana; font-size: 12px}
ul{list-style: none; padding:0; margin:0}

.menu {
margin:0; padding:0;
width: 100%; height: auto;
background: #ccc;
position: absolute;
top:0; left:0;
}
.menu li {
float:left;
display:block
}
.menu li li {
float:none;
}
.menu li a {
padding: 0 5px;
}
.menu li a:hover {
background: #bbb
}
.menu li ul {
padding:0; margin:0;
background: #ddd;
width: auto;
position: absolute;
visibility: hidden;
-webkit-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
opacity: 0;
margin: 20px 0 0 0;
}
.menu li:hover ul {
margin:0;
opacity: 1;
visibility: visible;
display:block
}
.menu li ul li {
clear:both
}
.menu li ul li a {
width: auto;
display:block;
}
.menu li ul li ul {
position: absolute;
top: 0; left: 72px;
margin: 0 0 0 20px;
display: block;
visibility: hidden;
opacity: 0
}
.menu li ul li ul li {
position: relative;
display:none;
visibility: hidden;
opacity: 0
}
.menu li ul li:hover ul li {
visibility: visible;
opacity: 1;
display:block
}

jsFiddle example

菜单的第一级和第二级一切正常。第二级 (.menu li ul) 是动态的,因此如果选项的长度发生变化,则应增加其宽度。

这正是我的问题的来源。我希望第三层始终位于第二层的末尾,而不管第二层的 width 是多少。

我会尝试用下面的图片让它更清楚。

这就是我现在拥有的:

What I have

这是增加选项长度时发生的情况:

The problem

以下是菜单的行为方式:

How I want it

这是用纯 CSS 实现的方法吗?

如果没有,我最好的选择是什么来实现我想要的?

提前致谢。

最佳答案

http://jsfiddle.net/f66MM/这似乎有效。我所做的只是在 li ul li ul 中更改 left:100%

a {text-decoration: none; font-family: verdana; font-size: 12px}
ul{list-style: none; padding:0; margin:0}

.menu {
margin:0; padding:0;
width: 100%; height: auto;
background: #ccc;
position: absolute;
top:0; left:0;
}

.menu li {
float:left;
display:block
}

.menu li li {
float:none;
}

.menu li a {
padding: 0 5px;
}

.menu li a:hover {
background: #bbb
}

.menu li ul {
padding:0; margin:0;
background: #ddd;
width: auto;
position: absolute;
visibility: hidden;
-webkit-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
opacity: 0;
margin: 20px 0 0 0;
}

.menu li:hover ul {
margin:0;
opacity: 1;
visibility: visible;
display:block
}

.menu li ul li {
clear:both
}

.menu li ul li a {
width: auto;
display:block;
}

.menu li ul li ul {
position: absolute;
top: 0; left: 100%;
margin: 0 0 0 20px;
display: block;
visibility: hidden;
opacity: 0
}

.menu li ul li ul li {
position: relative;
display:none;
visibility: hidden;
opacity: 0
}

.menu li ul li:hover ul li {
visibility: visible;
opacity: 1;
display:block;
}

关于css - 多级动态弹出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672345/

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