2017-04-17 5 views
0

Ich möchte eine Navigationsleiste erstellen, die vertikal innerhalb des übergeordneten div ausgerichtet ist. Hier ist mein Code:Vertikale Ausrichtung eines Nav innerhalb eines div

div#banner { 
 
    background-color: green; 
 
    height: 100px; 
 
} 
 

 
div#title { 
 
    float: left; 
 
    width: 300px; 
 
    color: white; 
 
    font-size: 20px; 
 
} 
 

 
nav#menu { 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
    padding: 0px; 
 
    margin: 0px font-size: 20px; 
 
    text-align: center; 
 
} 
 

 
nav#menu ul { 
 
    background-color: red; 
 
    padding: 0px; 
 
    margin: 0px; 
 
    list-style: none; 
 
    display: inline; 
 
} 
 

 
nav#menu ul li { 
 
    padding: 0px; 
 
    margin: 0px; 
 
    display: inline; 
 
    vertical-align: middle; 
 
} 
 

 
nav#menu ul li a { 
 
    padding: 0px; 
 
    margin: 0px; 
 
    width: 60px; 
 
    display: inline-block; 
 
    color: white; 
 
}
<div id="banner"> 
 

 
    <div id="title"> 
 
    <h1>The Title</h1> 
 
    </div> 
 

 
    <nav id="menu"> 
 
    <ul> 
 
     <li><a href="index.html">Home</a></li> 
 
     <li><a href="about.html">About</a></li> 
 
     <li><a href="contact.html">Contact</a></li> 
 
    </ul> 
 
    </nav> 
 

 
</div>

Um zu versuchen, die "Menü" zu machen, vertikal innerhalb der "Titel" ausgerichtet ist, habe ich das "Menü" "display: inline-block" und " vertical-align: Mitte ".

Das Menü wird jedoch am oberen Rand des umgebenden Bereichs und nicht in der Mitte angezeigt.

Was soll ich ändern?

Antwort

2

Die beste Art und Weise und modern ist mit Flex, für das div # Banner add: Anzeige: flex ; align-items: zentrieren;

div#banner { 
 
    background-color: green; 
 
    height: 100px; 
 
    display:flex; 
 
    align-items:center; 
 
} 
 

 
div#title { 
 
    float: left; 
 
    width: 300px; 
 
    color: white; 
 
    font-size: 20px; 
 
} 
 

 
nav#menu { 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
    padding: 0px; 
 
    margin: 0px font-size: 20px; 
 
    text-align: center; 
 
} 
 

 
nav#menu ul { 
 
    background-color: red; 
 
    padding: 0px; 
 
    margin: 0px; 
 
    list-style: none; 
 
    display: inline; 
 
} 
 

 
nav#menu ul li { 
 
    padding: 0px; 
 
    margin: 0px; 
 
    display: inline; 
 
    vertical-align: middle; 
 
} 
 

 
nav#menu ul li a { 
 
    padding: 0px; 
 
    margin: 0px; 
 
    width: 60px; 
 
    display: inline-block; 
 
    color: white; 
 
}
<div id="banner"> 
 

 
    <div id="title"> 
 
    <h1>The Title</h1> 
 
    </div> 
 

 
    <nav id="menu"> 
 
    <ul> 
 
     <li><a href="index.html">Home</a></li> 
 
     <li><a href="about.html">About</a></li> 
 
     <li><a href="contact.html">Contact</a></li> 
 
    </ul> 
 
    </nav> 
 

 
</div>

0

Fügen Sie einfach ein paar Zeilen hinzu und ändern Sie dies in ein Flexbox-Layout. Auf diese Weise haben Sie viel mehr Kontrolle über die Dimensionierung und Positionierung der Navigation.

div#banner { 
 
    background-color: green; 
 
    height: 100px; 
 
    display: flex; <- this 
 
    align-items: center; <- and this 
 
} 
 

 
div#title { 
 
    float: left; 
 
    width: 300px; 
 
    color: white; 
 
    font-size: 20px; 
 
} 
 

 
nav#menu { 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
    padding: 0px; 
 
    margin: 0px font-size: 20px; 
 
    text-align: center; 
 
} 
 

 
nav#menu ul { 
 
    background-color: red; 
 
    padding: 0px; 
 
    margin: 0px; 
 
    list-style: none; 
 
    display: inline; 
 
} 
 

 
nav#menu ul li { 
 
    padding: 0px; 
 
    margin: 0px; 
 
    display: inline; 
 
    vertical-align: middle; 
 
} 
 

 
nav#menu ul li a { 
 
    padding: 0px; 
 
    margin: 0px; 
 
    width: 60px; 
 
    display: inline-block; 
 
    color: white; 
 
}
<div id="banner"> 
 

 
    <div id="title"> 
 
    <h1>The Title</h1> 
 
    </div> 
 

 
    <nav id="menu"> 
 
    <ul> 
 
     <li><a href="index.html">Home</a></li> 
 
     <li><a href="about.html">About</a></li> 
 
     <li><a href="contact.html">Contact</a></li> 
 
    </ul> 
 
    </nav> 
 

 
</div>

0

Bearbeiten Sie Ihre CSS mit diesem:

div#banner { 
    background-color: green; 
    height: 100px; 
    display: flex; 
    align-items: center; 
} 

div#title { 
    float: left; 
    width: 300px; 
    color: white; 
    font-size: 20px; 
} 

nav#menu { 
    display: inline-block; 
    vertical-align: middle; 
    padding: 0px; 
    margin: 0px font-size: 20px; 
    text-align: center; 
} 

nav#menu ul { 
    background-color: red; 
    padding: 0px; 
    margin: 0px; 
    list-style: none; 
    display: inline; 
} 

nav#menu ul li { 
    padding: 0px; 
    margin: 0px; 
    display: inline; 
    vertical-align: middle; 
} 

nav#menu ul li a { 
    padding: 0px; 
    margin: 0px; 
    width: 60px; 
    display: inline-block; 
    color: white; 
} 
0

Fügen Sie die folgenden Zeilen # Menü nav:

nav#menu { 
    position: relative; 
    top: 50%; 
    transform: translateY(-50%); 
}