Welchen Befehl brauche ich (HTML, CSS)?
Hallo welchen css Befehl brauche ich damit wenn ich nach unten scrolle dass der weiße Kasten hinter der Menüleiste oben ist und nicht vor?
Danke!
3 Antworten
Du solltest bei solchen Fragen möglichst immer deinen Quellcode anfügen, da sich je nach Aufbau unterschiedliche Lösungsansätze mehr oder weniger anbieten. Ich würde die Position der Navigationsleiste lediglich mit position: sticky festlegen.
HTML:
<header class="page-header">
<nav> <!-- navbar comes here... --> </nav>
</header>
<main class="page-content">
<div class="container">
<-- content comes here...
</div>
</main>
CSS:
*, *::before, *::after {
box-sizing: border-box;
padding: 0;
margin: 0;
}
.container {
width: min(100% - 1em, 75em);
margin-inline: auto;
}
.page-header {
width: 100%;
height: 72px;
position: sticky;
top: 0;
background-color: grey;
color: white;
}
.page-content {
/* for visual testing only */
height: 3000px;
background-color: red;
}
Wenn du anstelle von position: sticky mit position: fixed arbeiten möchtest, sowohl dem <main> Element (page-content) ein padding-top oder margin-top zuweist und dem <header> Element (page-header) einen höheren i-index zuweist.
CSS:
.page-header {
--_header-h: 72px;
width: 100%;
height: var(--_header-h);
position: fixed;
top: 0;
z-index: 1000;
}
.page-content {
margin-top: var(--_header-h);
}
LG medmonk
Die Menüleiste wirst du wahrscheinlich mithilfe von `position: sticky` oder `position: fixed` o.ä. oben platzieren. An dieser Stelle im CSS fügst du einfach noch die Zeile
z-index: 1000;
hinzu. Das sorgt dafür, dass die Menüleiste eine höhere z-Position hat, also vor den anderen Elementen mit niedrigerem z-index ist.
z-index
Wenn ein Element mit position: sticky positioniert wird, muss kein z-index gesetzt werden. Andernfalls würde sticky wenig Sinn ergeben. Lediglich beim fixen Positionieren müsste der z-index und ggf. ein margin/padding nach oben gesetzt werden.