html - 下拉菜单的问题

标签 html css

我正在使用有序列表创建菜单,我遇到了两个问题,下拉菜单没有对齐,悬停效果应用于下拉菜单,我不希望这种情况发生

这是一个 JS fiddle :

http://jsfiddle.net/HFMR5/

这是我的 HTML 代码:

<div id="menu">
    <ul id="navigation">
    <li><a href="index.html">Home</a></li>
          <li><a href="">Services</a>
            <ul>
            <li><a href="">Residential</a></li>
            <li><a href="">Buisiness</a></li>
            </ul>
          </li>
          <li><a href="#">Contact</a></li>
    </ul>
    </div>

这是菜单的 CSS:

/*Navigation CSS*/

                #navigation 
                {
                width: 100%;
                float: left;
                margin: 0 0 3em 0;
                padding: 0;
                list-style: none;
                background-color: #f2f2f2;
                border-bottom: 1px solid #ccc; 
                border-top: 1px solid #ccc; 
                box-shadow: 0 8px 6px -6px black;
                }
                #navigation li 
                {
                float: left;
                }
                #navigation li a 
                {
                display: block;
                padding: 8px 15px;
                text-decoration: none;
                font-weight: bold;
                color: #FF6987;
                border-right: 1px solid #ccc; 
                -webkit-transition: all 0.1s ease-in;
                -moz-transition: all 0.1s ease-in;
                -o-transition: all 0.1s ease-in;
                }

                #navigation ul
                {
                font-family: Arial, Verdana;
                font-size: 14px;
                margin: 0;
                padding: 0;
                list-style: none;
                }

                #navigation ul li {
                display: block;
                position: relative;
                float: left;
                }

                #navigation li ul { display: none; }

                #navigation li:hover ul {
                display: block;
                position: absolute;
                }

                #navigation li:hover li {
                float: none;
                font-size: 11px;
                }

                #navigation li:hover a { background: #f2f2f2; }

                #navigation li a:hover 
                {
                color: #FF6987;
                background-color: #f2f2f2; 
                box-shadow: inset 0 8px 6px -6px black;
                }

最佳答案

为了使宽度相同,您需要实际设置子菜单的宽度(不一定是静态的),但如果您让它这样,那么它只会扩展到内容的大小,这显然不是'不需要,CSS 更改如下所示:

#navigation li{
    float: left;
    position:relative;
}

#navigation li:hover ul {
    display: block;
    position: absolute;
    width: 100%;
}

position: relative 的子菜单知道在确定 100% 宽度而不是 body 标签时使用该元素。

至于显示在子菜单项上的悬停效果,您需要做的就是在您的选择器中更加具体。您使用的空格表示您将选择 #navigation 的后代,这是一个 li 元素。这包括子菜单。如果你使用像 > 这样的选择器,它表示一个直接的 child ,那么你将能够更具体地只定位顶级菜单项。 CSS 看起来像:

#navigation > li > a:hover{
    color: #FF6987;
    background-color: #f2f2f2; 
    box-shadow: inset 0 8px 6px -6px black;
}

一个很好的 CSS 选择器引用:http://www.w3schools.com/cssref/css_selectors.asp

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

相关文章:

CSS - 边框半径和实心边框向内 flex

css - iphone 和 ipad 的 Bootstrap 列是相同的,如何获得另一个尺寸

javascript - 如何使用 Bootstrap 在鼠标悬停时制作动态切换图像?

HTML5 有效项目范围

jQuery Cycle 插件对于较大的图像是断断续续的

javascript - 语义用户界面菜单对齐?

使用 Bootstrap CSS 时 HTML 表格单元格内容会换行

css - 浏览器无法识别我的段落标签的样式

html - 动态宽度上的标题元素溢出 - 显示 : block and min-height/width on contained container div

css - 如何显示对齐div?