gpt4 book ai didi

css - 仅下拉菜单 css - 子菜单的宽度(无文本换行)

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:56 25 4
gpt4 key购买 nike

我有下拉菜单(仅限 css)

JSFIDDLE:

>>> jsfiddle <<<

HTML:

<div class="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Tutorials</a>
<ul>
<li><a href="#">Photoshop</a></li>
<li><a href="#">Illustrator</a></li>
<li><a href="#">Web Design</a>
<ul>
<li><a href="#">HTML</a>
<ul>
<li><a href="#">HTML 4 and less</a>
<ul>
<li><a href="#">TEST 1</a></li>
<li><a href="#">TEST 2</a></li>
<li><a href="#">TEST 3</a></li>
</ul>
</li>
<li><a href="#">HTML 5</a></li>
</ul>
</li>
<li><a href="#">CSS</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Articles</a>
<ul>
<li><a href="#">Web Design</a></li>
<li><a href="#">User Experience</a></li>
</ul>
</li>
<li><a href="#">Inspiration</a></li>
</ul>
</div>

CSS:

.menu {
margin: 100px auto;
text-align: center;
}

.menu ul ul {
display: none;
}

.menu ul li:hover > ul {
display: block;
white-space:nowrap;
}

.menu ul {
background: #efefef;
padding: 0;
list-style: none;
position: relative;
display: inline-table;
}
.menu ul:after {
content: "";
clear: both;
display: block;
}

.menu ul li {
float: left;
}
.menu ul li:hover {
background: blue;
}
.menu ul li:hover a {
color: #fff;
}

.menu ul li a {
display: block;
padding: 10px;
color: #757575;
text-decoration: none;
}

.menu ul ul {
background: green;
padding: 0;
position: absolute;
top: 100%;
}
.menu ul ul li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid yellow;
position: relative;
}
.menu ul ul li a {
padding: 10px;
color: #fff;
display: block;
}
.menu ul ul li a:hover {
background: red;
}

.menu ul ul ul {
position: absolute;
left: 100%;
top:0;
padding: 0;
}

.menu ul ul ul li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid pink;
position: relative;
}

.menu ul ul ul li a {
padding: 10px;
color: #fff;
display: block;
}

.menu ul ul ul li a:hover {
background: red;
}

.menu ul ul ul ul {
position: absolute;
left: 100%;
top:0;
}

正如您最后看到的子菜单,它们不像上层菜单。它们环绕文本并缩小(最小宽度)。

问:

  1. 如何使它们相等(与父级宽度相同)并且无文字换行
  2. 如何简化此菜单(父级、子级、ul > li 等)以便我不需要为每个新子菜单制作新样式

提前谢谢你。

最佳答案

试试这个 - 这在 Chrome 上效果很好:

* { white-space: nowrap; box-sizing: border-box; }

.menu {
margin: 100px auto;
text-align: center;
}

/* ULs */

.menu ul {
padding: 0;
position: absolute;
display: none;
background: green;
top: 0;
position: absolute;
list-style: none;
}

.menu > ul {
background: #efefef;
position: relative;
display: inline-table;
}

.menu > ul > li > ul {
top: 100%;
}

.menu li:hover > ul {
display: block;
}

.menu ul ul ul {
left: 100%;
border-left: 1px solid white;
top: -1px;
}

/*LIs*/

.menu li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid yellow;
position: relative;
}

.menu > ul > li {
float: left !important;
border: none;
}

.menu ul li:hover {
background: blue;
}

/* As */

.menu a {
display: block;
padding: 10px;
color: #757575;
text-decoration: none;
}

.menu li:hover a {
color: #fff;
}

.menu ul ul a:hover {
background: red;
}

此外,考虑到拥有如此多的子菜单并不是一个好的做法(用户体验方面)。您应该尝试重新设计您的用户界面,以一种不会让用户感到沮丧的方式来匹配您网站的使用情况。

关于css - 仅下拉菜单 css - 子菜单的宽度(无文本换行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18064301/

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