html - 在 DIV 上显示的下拉菜单

标签 html css drop-down-menu

我正在尝试创建一个简单的 CSS 下拉菜单,功能是正确的,但是当我将它放在一个控股 DIV 中时我遇到了问题。菜单在 DIV 内扩展并添加滚动条。

我试过 overflow hidden 并定位元素,但没有效果:

JSFIDDLE

body
{
    font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    padding: 20px 50px 150px;
    font-size: 13px;
    text-align: center;
}
.dropdown
{
    text-align: left;
    display: inline;
    margin: 0;
    padding: 0px 4px 0px 0px;
    list-style: none;
}
.dropdown li
{
    font: bold 12px/18px sans-serif;
    display: inline-block;
    margin-right: -4px;
    position: relative;
    /*padding: 15px 20px;*/
    background: #fff;
    cursor: pointer;
    -webkit-transition: all 0.2s;
    -moz-transition: all 0.2s;
    -ms-transition: all 0.2s;
    -o-transition: all 0.2s;
    transition: all 0.2s;
}
.dropdown li:hover
{
    background: #555;
    color: #fff;
}
.dropdown li ul
{
    padding: 0;
    position: absolute;
    top: 18px;
    left: 0;
    width: 150px;
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    box-shadow: none;
    display: none;
    opacity: 0;
    visibility: hidden;
    -webkit-transiton: opacity 0.2s;
    -moz-transition: opacity 0.2s;
    -ms-transition: opacity 0.2s;
    -o-transition: opacity 0.2s;
    -transition: opacity 0.2s;
}
.dropdown li ul li
{ 
    display: block; 
    color: #000;
    padding-bottom: 5px;
}
.dropdown li ul li:hover
{
    background: #666;
}
.dropdown li:hover ul
{
    display: block;
    opacity: 1;
    visibility: visible;
}
<div style="box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.08), 1px 1px 4px rgba(255, 255, 255, 0.08) inset;border: 1px solid #DDD; overflow: auto; background-color: #FFF; text-align: center; border-radius: 10px; width:100%; height:50px;">
    <ul class="dropdown">
        <li>Section1
            <ul>
                <li>Link</li>
                <li>Link</li>
                <li>Link</li>
                <li>Link</li>
                <li>Link</li>
            </ul>
        </li>
    </ul>
</div>

最佳答案

像这样尝试: JSFIDDLE

.dropdown {
    text-align: left;
    display: inline-block;
    margin: 0;
    padding: 0px 4px 0px 0px;
    list-style: none;
    position:absolute;
    top:0;
}

HTML:

<div style="box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.08), 1px 1px 4px rgba(255, 255, 255, 0.08) inset;border: 1px solid #DDD;
background-color: #FFF;
text-align: center;
border-radius: 10px;
width:100%;
height:50px; position:relative;">

添加 相对于 div 的位置 并删除 overflow 属性。然后 添加 position:absolute 到下拉列表。希望这有帮助!!

代码片段如下

body
{
    font-family:'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    padding: 20px 50px 150px;
    font-size: 13px;
    text-align: center;
}
.dropdown
{
    text-align: left;
    display: inline-block;
    margin: 0;
    padding: 0px 4px 0px 0px;
    list-style: none;
    position:absolute;
    top:0;
}
.dropdown li
{
    font: bold 12px/18px sans-serif;
    display: inline-block;
    margin-right: -4px;
    /*padding: 15px 20px;*/
    background: #fff;
    cursor: pointer;
    -webkit-transition: all 0.2s;
    -moz-transition: all 0.2s;
    -ms-transition: all 0.2s;
    -o-transition: all 0.2s;
    transition: all 0.2s;
}
.dropdown li:hover
{
    background: #555;
    color: #fff;
}
.dropdown li ul
{
    padding: 0;
    position: absolute;
    top: 18px;
    left: 0;
    width: 150px;
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    box-shadow: none;
    display: none;
    opacity: 0;
    visibility: hidden;
    -webkit-transiton: opacity 0.2s;
    -moz-transition: opacity 0.2s;
    -ms-transition: opacity 0.2s;
    -o-transition: opacity 0.2s;
    -transition: opacity 0.2s;
}
.dropdown li ul li
{
    display: block;
    color: #000;
    padding-bottom: 5px;
}
.dropdown li ul li:hover 
{
    background: #666;
}
.dropdown li:hover ul
{
    display: block;
    opacity: 1;
    visibility: visible;
}
<div style="box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.08), 1px 1px 4px rgba(255, 255, 255, 0.08) inset;border: 1px solid #DDD;background-color: #FFF;text-align: center;border-radius: 10px;width:100%;height:50px; position:relative;">
    <ul class="dropdown">
        <li>Section1
            <ul>
                <li>Link</li>
                <li>Link</li>
                <li>Link</li>
                <li>Link</li>
                <li>Link</li>
            </ul>
        </li>
    </ul>
</div>

关于html - 在 DIV 上显示的下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32498404/

相关文章:

html - 响应式调整大小

html - 如何在 jQuery 中选择具有多个类的元素?

html - z-index 不适用于下拉菜单

javascript - 使用 Bootstrap 动态添加和删除字段

javascript - setAttribute 会自动转义 HTML 字符吗?

css - 有条件地设计@font-face

javascript - 下拉菜单和下拉列表宽度不完全对齐

html - 更优雅的创建按钮的方式,例如使用单个 HTML 元素

javascript - KineticJS 中的 Mouseover 事件问题

jquery - 点击下拉菜单滚动