css nur horizontaler subnav

Ich Baue eine CSS-nur zwei-level horizontal navigation bar mit relativen sub-navigation zu den Eltern. Alle Menü-Elemente sind inline. Abhängig von den Klassen 'rechts' oder 'Links', die sub-nav, ausgerichtet auf die Eltern. Dies ist, was ich es geschafft haben, zu erreichen so weit:

html:

<body>
    <div class="navbar">
        <ul class="topnav left">
            <li>nav</li>
            <li>menu1
                <span class="subnav">
                    <ul class="subnav subnav-left">
                        <li>item1-1</li>
                        <li>item1-2</li>
                        <li>item1-3</li>
                    </ul>
                </span>
            </li>
            <li>menu2
                <span class="subnav">
                    <ul class="subnav subnav-left">
                        <li>item2-1</li>
                        <li>item2-2</li>
                        <li>item2-3</li>
                    </ul>
                </span>
            </li>
        </ul>
        <ul class="topnav right">
            <li class="right">menu3
                <span class="subnav subnav-right">
                    <ul class="subnav subnav-left">
                        <li>item3-1</li>
                        <li>item3-2</li>
                        <li>item3-3</li>
                    </ul>
                </span>
            </li>
            <li class="right">menu4
                <span class="subnav subnav-right">
                    <ul class="subnav subnav-left">
                        <li>item4-1</li>
                        <li>item4-2</li>
                        <li>item4-3</li>
                    </ul>
                </span>
            </li>
        </ul>
    </div>
</body>

css:

body {
    font-family: arial;
    margin: 0;
}

.navbar {
    height: 40px;
    background-color: black;
}

ul.topnav {
    margin: 0;
    padding: 0;
}

.subnav {
    position: absolute;
}

.subnav-right {
    right: 0;
}

ul.subnav {
    position: relative;
    margin: 4px 0 0 -8px;
    padding: 0;
    display: none;
}

ul.topnav  li{
    list-style: none;
    display: inline-block;
    color: white;
    padding: 4px 8px;
    font-weight: bold;
    line-height: 32px;
    float: left;
    clear: none;
    box-sizing: border-box;
}

ul.subnav li {
    background-color: red;
    list-style: none;
    display: inline-block;
    color: white;
    padding: 4px 8px;
    font-weight: bold;
    position: relative;
    line-height: 32px;
    float: left;
    clear: none;
    box-sizing: border-box;
}

.topnav li:hover {
    background-color: red;
}

.topnav li:hover ul.subnav {
    display: inline-block;
    background-color: red;
}

.nav ul li:hover {
    background-color: black;
}

.nav ul li {
    width: 100%;
}

.nav li ul {
    display: inline-block;
    clear: none;
    position: absolute;
    background-color: red;
    margin: 4px 0 0 -8px;
    padding: 0;
}

.left {
    float: left;
}

.right {
    float: right;
}

Dem jsfiddle:

jsfiddle.net/aLZqZ

Hier ist, was ich versuche zu erreichen:

Bild für nav-Menü

  • Ihre arbeiten. was ist das problem oder die Frage? Sind Sie Fragen, wie es blau?
  • Es ist nicht in Ordnung. Das Bild zeigt deutlich, dass auf der rechten Seite, ich möchte das div-Element ausgerichtet mit dem parent-Listenelement. Alle meine rechts ausgerichtete Elemente sind "rechts: 0', was führt Sie zu der Seite edge. Auch meine sub-nav ist nicht 100% Breite, die ich noch nicht in der Lage zu bekommen, ohne die 'position:relative' an das übergeordnete Listenelement. Warum würde Sie davon aus, dass jemand, dem es gelang, die Verwendung von pseudo-Elemente und horizontale Positionierung nicht wissen, wie um eine Farbe zu ändern?
InformationsquelleAutor Curtis | 2013-01-24
Schreibe einen Kommentar