Antwort an „Rolf B“ verfassen

Hallo Eric,

eine Navigation als eine Zone fester Breite am linken Rand erzeugt man mit Flexbox oder Grid - eigentlich ist Grid das bessere Werkzeug, weil man damit das gesamte Basislayout der Seite steuern kann und bei schmalen Viewports sehr gezielt die Seitenbereiche neu anordnen kann.

Einen festbreiten Nav-Bereich links erreichst Du mit Flexbox so, dass Du dafür flex-grow und flex-shrink auf 0 setzt und flex-basis auf die gewünschte Breite. Du kannst sogar "auto" als Basis nehmen, dann orientiert er sich am Inhalt des Nav-Bereichs. Du kannst max-width hinzu nehmen, damit zu lange Navigationselemente nicht das Layout zerreißen, sondern umbrechen. Der Hauptteil bekommt flex-grow 1, flex-shrink 1 und flex-basis setzt Du auf einen Breite, die der Hauptteil mindestens haben soll. Wird sie unterschritten, soll er in die Folgezeile. Dazu setzt Du auf der Flexbox noch flex-wrap:wrap, bzw. nimm flex-flow, das kombiniert flex-direction und flex-wrap.

.nav-main {
   display: flex;
   column-gap: 1em;     /* Abstand zwischen nav und main */
   flex-flow: row wrap;
   justify-content: center;  /* Bei Umbruch soll nav zentriert sein */
}
.nav-main nav {
  flex: 0 0 8em;
}
.nav-main main {
  flex: 1 0 30em;
}

HTML dazu:

<div class="nav-main">
   <nav>
      ...
   </nav>
   <main>
      ...
   </main>
</div>

Damit hast Du aber ein div im HTML, das nur für's Layout da ist. Unschön.

Eine Steuerung mit @media (width >= 40em) (yep, width >= 40em geht heutzutage, nicht mehr min-width:40em) und Grid-Layout wird heute eher empfohlen. Ich empfehle dafür diesen Teil des Wiki als Gute-Nacht Lektüre.

Rolf

--
sumpsi - posui - obstruxi
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen