使用纯CSS导航时遇到问题

时间:2011-06-02 20:22:01

标签: css navigation

在这里小提琴:http://jsfiddle.net/csaltyj/3A78u/

我希望子子导航菜单与其父级的顶部对齐(因此顶部:0),但由于某种原因它与父级的父级对齐。我不确定发生了什么......有什么想法吗?

HTML:

<div id="nav">
    <ul>
        <li><a>Item One</a></li>
        <li><a>Item Two</a>
            <ul>
                <li><a>Item two has babies</a></li>
                <li><a>Baby #2</a>
                    <ul>
                        <li><a>Sub-babies</a></li>
                        <li><a>This is fun</a></li>
                        <li><a>Last Item</a></li>
                    </ul>
                </li>
                <li><a>SubSub</a>
                    <ul>
                        <li><a>Another Item</a></li>
                        <li><a>Another!</a></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>

CSS:

#nav {
    height: 40px;
}

#nav ul {
    list-style: none;
    font-family: Arial, sans-serif;
    font-size: 0.8em;
}

/* When mousing over any LI, reveal its UL if any */
#nav > ul li:hover > ul {
    display: block;
}

/* For all links */
#nav a {
    text-decoration: none;
    color: #000;
}

/* Main nav styling */
#nav > ul > li > a {
    padding: 1em;
}

#nav a:hover {
    color: red;
}

#nav > ul > li {
    float: left;
    border: 1px solid #999;
}

/* Subnav styling */
#nav > ul ul {
    display: none;
    position: absolute;
    font-size: 1em;
    background: #eee;
    padding: 0.5em;
    border: 1px solid #999;
}

/* Subsubnav styling */
#nav > ul ul ul {
    left: 50px;
    top: 0;
    width: 150px;
    position: absolute;
}

#content {

}

2 个答案:

答案 0 :(得分:2)

您需要将position: relative添加到“级别2”li元素:

#nav > ul ul li {
    position: relative
}

这是一个婴儿排成一列的版本:http://jsfiddle.net/3A78u/2/

如果您想使用>,则为#nav > ul > li > ul > li

答案 1 :(得分:1)

'top'属性相对于第一个非静态定位的父级。在这种情况下,它是UL元素(绝对定位)。你需要添加'position:relative;'到列表项中以获取内部元素以相对于它对齐。