我已经在这几个小时了。我可以找到我想要的各个组件,但我似乎无法把它们放在一起。
我遇到的问题是我无法将静态宽度子菜单置于它们派生的li项的中心。如果那些父项目具有静态宽度,这应该很容易,但我想根据页面的宽度动态地改变它们的宽度。我不知道这是否在视觉上令人愉悦,但这是我想要做的事情,并且不想让它变得静止。我会将宽度设为100%,但当页面变得非常宽时,它们往往看起来很笨(我之所以选择它们是静态的)
我确信我应该对css结构进行其他更改以使其更好,所以如果你有任何提示,请把它们扔给我!
这就是我所拥有的。
JSFiddle:http://jsfiddle.net/ede2gsc6/
html:
<ul id="top-menu">
<li>ITEM1</li>
<li>ITEM2
<ul>
<li>SUBITEM1</li>
<li>SUBITEM2</li>
</ul>
</li>
<li>ITEM3
<ul >
<li>SUBITEM1</li>
<li>SUBITEM2</li>
<li>SUBITEM3</li>
</ul>
</li>
<li>ITEM4</li>
<li>ITEM5
<ul>
<li>SUBITEM1</li>
<li>SUBITEM2</li>
<li>SUBITEM3</li>
<li>SUBITEM4</li>
<li>SUBITEM5</li>
</ul>
</li>
</ul>
和css:
body, ul {
margin: 0;
padding: 0;
}
#top-menu{
float: left;
width:100%;
background-color: rgba(0,240,255,.5);
border-top: 1px solid black;
border-bottom: 1px solid black;
text-align: center;
padding: 0px;
margin: 0px;
min-width: 620px;
list-style: none;
}
#top-menu li {
float: left;
position: relative;
width: 20%;
list-style: none;
}
#top-menu a:hover {
color: #00F0FF;
}
#top-menu li ul {
padding-top: 1px;
position: absolute;
background: rgba(0,240,255,.5);
border-bottom: 1px solid black;
border-left: 1px solid black;
border-right: 1px solid black;
visibility: hidden;
width: 170px;
}
#top-menu li:hover ul {
visibility: visible;
display: block;
}
#top-menu li ul li {
float: left;
padding: 0px;
width: 100%;
text-align: left;
}
答案 0 :(得分:1)
如果你打算让这个更有活力,你也可以使用类而不是id。
以下是具有您所需要的类的示例。 http://jsfiddle.net/54n1r96e/1/
<ul class="nav">
<li>ITEM1</li>
<li>ITEM2
<ul class="dropdown">
<li>SUBITEM1</li>
<li>SUBITEM2</li>
</ul>
</li>
<li>ITEM3
<ul class="dropdown">
<li>SUBITEM1</li>
<li>SUBITEM2</li>
</ul>
</li>
<li>ITEM4</li>
<li>ITEM5
<ul class="dropdown">
<li>SUBITEM1</li>
<li>SUBITEM2</li>
</ul>
</li>
答案 1 :(得分:0)
答案 2 :(得分:0)
我设法让它发挥作用。
查看 JSFiddle 以查看结果并阅读代码中的注释。这是我添加/修改的代码:
#top-menu li ul {
padding-top: 1px;
margin-left: 50%;
position: absolute;
background: rgba(0,240,255,.5);
/*border-bottom: 1px solid black;
border-left: 1px solid black;
border-right: 1px solid black;*/ /*remove comment tags if you want to see where the actual ul is*/
visibility: hidden;
width: auto;/*set width to fit content*/
background-color: transparent;
}
#top-menu li:hover ul {
visibility: visible;
display: block;
}
#top-menu li ul li {
float: left;
padding: 5px 5px;
width: 100%;/*set width to the longest item in li so all li items have equal width*/
clear: both;
text-align: left;
border-right: 1px solid red;
border-left: 1px solid red;
margin-left: calc(-50% - 6px);/*unfortunately a calc function is needed here because adding padding/borders to the left moves the entire block to the right.*/
margin-top: -1px;/*solves issue of submenu disappearing when hovering over border*/
background-color: purple;
}
#top-menu li ul li:last-child{
border-bottom: 1px solid red;/*add border to the bottom of the last li-item*/
}