html - CSS 下拉菜单,将嵌套的 UL 对齐到父 LI 的右边缘

标签 html css

所有嵌套的 UL 都需要与其父 LI 的右侧对齐。目前,嵌套的 UL 似乎改为对齐到更高级别的 NAV 元素的右侧。

实时代码

链接 here to fiddle with HTML and problem CSS

HTML

    <body>
        <div id="header">
            <div id="header-content-container"> <a href="/" title="Logo" id="logo">Logo!</a>

                <div id="top-nav-container">
                    <nav>
                        <ul>
                            <li><a href="/">HOME</a>
                            </li>
                            <li><a href="#">SERVICES</a>

                                <ul>
                                    <li><a href="#">Item 00000000</a>
                                    </li>
                                    <li><a href="#">Item 000000000000000</a>
                                    </li>
                                    <li><a href="#">Item 000000000000000</a>
                                    </li>
                                    <li><a href="#">Item 00000000000000</a>
                                    </li>
                                    <li><a href="#">Item 0000000000000</a>
                                    </li>
                                    <li><a href="#">Item 000000000000</a>
                                    </li>
                                    <li><a href="#">Item 000000000</a>
                                    </li>
                                </ul>
                            </li>
                            <li><a herf="#">LIBRARY</a>
                            </li>
                            <li><a href="/contact/">CONTACT</a>

                                <ul>
                                    <li><a href="#">Item 0</a>
                                    </li>
                                    <li><a href="#">Item 00</a>
                                    </li>
                                    <li><a href="#">Item 000</a>
                                    </li>
                                </ul>
                            </li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>
        <div class="clearer"></div>
    </body>

CSS

    .clearer {
        clear: both;
    }

    body {
        background: none repeat scroll 0 0 red;
        font-family:sans-serif;
        font-size: 13px;
        margin: 0;
        padding: 0;
        position: relative;
        vertical-align: baseline;
    }

    div#header {
        background-color: white;
        float: left;
        height: 76px;
        margin: 0;
        padding: 0;
        width: 100%;
    }

    div#header-content-container {
        height: 100%;
        margin: 0;
        width: 768px;
        background: black;
    }

    a#logo {
        background: blue;
        float: left;
        height: 50px;
        margin: 12px 0 0 19px;
        width: 260px;
    }

    #top-nav-container {
        float: right;
        margin: 10px 0 0;
        position: relative;
        z-index: 9000;
    }

    nav {
        float: right;
        margin: 0 9px 0 0;
    }

    nav ul {
        display: inline-table;
        list-style: outside none none;
        padding: 0;
        position: relative;
    }

    nav ul::after {
        clear: both;
        content:"";
        display: block;
    }

    nav ul li {
        float: left;
    }

    nav ul li:hover {
        background: green;
    }

    nav ul li:hover > ul {
        display: block;
    }

    nav ul li a {
        color: #eee;
        display: block;
        padding: 16px 15px;
        text-decoration: none;
    }

    nav ul li:hover a {
        color: orange;
    }

    nav ul ul {
        background: none repeat scroll 0 0 #343434;
        border-radius: 0;
        left: auto;
        padding: 0;
        position: absolute;
        right: 0;
        top: 100%;
        display: none;
    }

    nav ul ul li {
        float: none;
        border-top: 1px solid purple;
        border-bottom: 1px solid blue;
        position: relative;
    }

    nav ul ul li a {
        padding: 15px 40px;
        color: yellow;
    }

    nav ul ul li a:hover {
        background: cyan;
    }

问题

problem image

最佳答案

检查更新的 fiddle .

我修改了nav ul ul

nav ul ul {    background: none repeat scroll 0 0 #343434;
    border-radius: 0;        
    padding: 0;
    position: absolute;
    left: -48px;    
    top: 100%;
    display: none;
}

关于html - CSS 下拉菜单,将嵌套的 UL 对齐到父 LI 的右边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29723501/

相关文章:

javascript - 右 css 递减 4.5px 宽度递减 10px

javascript - 显示一个div,如果表数据显示 "Unpaid"与Jquery

html - 使 bootstrap div 响应

html - 居中绝对 div 中的隐藏文本元素

html - 实现时出现问题 :active in CSS Button

javascript - 如何更改上次单击的 div 上的 CSS

jquery - Colorbox 在 iPad 上奇怪的移动位置

javascript - 如何使用 Javascript 阻止 HTML 元素淡出?

javascript - 如何将元素移动到鼠标位置

html - 在其他图片上叠加和复制图片