我正在尝试使用CSS和HTML创建弹出菜单。基本上我想显示一个按钮,在悬停时显示它下面的列表。弹出列表应与按钮右侧对齐。 e.g。
////////////
// BUTTON //
////////////
///////////////////////
// FLYOUT OPTION //
///////////////////////
我已经按照一些例子制作了以下jsFiddle - http://jsfiddle.net/JT5gs/
但是,我无法找到一种方法,使用.filtersnav ul规则的边距值将弹出菜单分开。 E.g。
.filtersnav ul {
margin:0px 0px 0px -165px;
当我知道显示弹出按钮的主按钮的宽度时,这是有效的,但是我需要在我的网站上添加本地化,因此按钮可以是任意长度,因为它内部的文本可能会改变。
为了澄清我的问题,当按钮的宽度不确定时,是否可以将弹出菜单放在按钮的右侧? JsFiddle显示一个弹出菜单,其中菜单右侧正确对齐,但第二个弹出按钮(带有包含较长文本值的按钮)无法正确对齐。
答案 0 :(得分:1)
将position: relative
放在li
代码上,并在right: 0
代码上设置ul
而不是边距:
.filtersnav {
background:#eeeeee;
font-size:12px;
font-family:verdana,sans-serif;
font-weight:bold;
z-index:1000;
padding:0;
}
.filtersnav, .filtersnav ul {
float:right;
list-style:none;
margin:0px;
border: 1px solid #CCCCCC;
min-width: 75px;
padding:0;
background-color: #EEEEEE;
font-weight:bold;
z-index:1000;
}
.filtersnav span {
display:block;
color:#000000;
text-decoration:none;
padding:3px 10px;
cursor:pointer;
}
.filtersnav li {
position: relative;
float:left;
padding:0;
background:#eeeeee url('../images/Down.png') no-repeat 97% center;
}
.filtersnav ul {
position:absolute;
left:-999em;
height:auto;
width:280px;
font-weight:normal;
right: 0;
line-height:1;
border:0;
border-top:1px solid #CCCCCC;
padding:0;
}
.filtersnav li li {
width:280px;
border-bottom:1px solid #CCCCCC;
border-left:1px solid #CCCCCC;
border-right:1px solid #CCCCCC;
font-weight:bold;
font-family:verdana,sans-serif;
background:#eeeeee;
}
.filtersnav li li span {
padding:10px 10px;
width:260px;
font-size:12px;
color:#000000;
}
.filtersnav li ul ul {
margin:-33px 0 0 -281px;
padding:0px;
max-height:262px;
overflow-x: hidden;
overflow-y: auto;
}
.filtersnav li li:hover{
background:#145197;
}
.filtersnav li ul li:hover span, .filtersnav li ul li li:hover span, .filtersnav li ul li li li:hover span, .filtersnav li ul li li li:hover span {
color:#ffffff;
}
.filtersnav li:hover span, .filtersnav li.sfhover span {
color:#ffffff;
}
.filtersnav li:hover li span, .filtersnav li li:hover li span, .filtersnav li li li:hover li span, .filtersnav li li li li:hover li span {
color:#000000;
}
.filtersnav li:hover ul ul, .filtersnav li:hover ul ul ul, .filtersnav li:hover ul ul ul ul, .filtersnav li.sfhover ul ul, .filtersnav li.sfhover ul ul ul, .filtersnav li.sfhover ul ul ul ul {
left:-999em;
}
.filtersnav li:hover ul, .filtersnav li li:hover ul, .filtersnav li li li:hover ul, .filtersnav li li li li:hover ul, .filtersnav li.sfhover ul, .filtersnav li li.sfhover ul, .filtersnav li li li.sfhover ul, .filtersnav li li li li.sfhover ul {
left:auto;
background:#eeeeee;
}
.filtersnav li:hover, .filtersnav li.sfhover {
background:#145197 url('../images/DownSel.png') no-repeat 97% center;
}
.filtersnav li li:hover img {
filter:Invert;
}
.filtersnavSelected {
background-color:#FCBF44
}
<ul class="filtersnav">
<li>
<span>Another Flyout Menu </span>
<ul>
<li>
<span>Option</span>
<ul>
<li><span>Sub Option</span></li>
</ul>
</li>
</ul>
</li>
</ul>
<ul class="filtersnav" style="margin-right:25px;">
<li>
<span>Flyout Menu </span>
<ul>
<li>
<span>Option</span>
<ul>
<li><span>Sub Option</span></li>
</ul>
</li>
</ul>
</li>
</ul>