• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Spaltenaufteilung einer Seite

Kniffel

Neues Mitglied
Hallo,
wie erreiche ich eine Aufteilung einer Seite in drei Spalten, und zwar so dass die Aufteilung auch bleibt, wenn man nach unten scrollt?
 
 
Danke für die Antworten.
Sind grid- und flex-Layout gleich modern und gleich effektiv?
Welches der beiden ist für einen Anfänger besser geeignet, da leichter verständlich?
 
Welches der beiden ist für einen Anfänger besser geeignet, da leichter verständlich?
Weniger was die Technik betrifft, aber die Doku: SelfHTML ist für Anfänger weniger geeignet, da umständlich und weitschweifig erklärt und das Wesentliche, bzw. der Kern der Sache, geht darin unter.
 
grid- und flex-Layout haben unterschiedliche Aufgaben.

Um eine Webseite oder einzelne Container aufzuteilen ist grid gedacht. Von daher würde ich dir zu grid raten.

flex wurde vor grid entwickelt und war sinnvoller einzusetzen als die bis dahin bekannten Möglichkeiten. Grade auch beim Umgang mit flexiblen Webseiten.

Es war aber nicht dazu gedacht Webseiten ganz oder teilweise anzuordnen. Es war zu seiner Zeit halt nur die beste Möglichkeit.

Für seine Aufgaben der Einteilung von Webseiten und Containern hat grid deshalb geeignetere Möglichkeiten, die mit flex überhaupt nicht möglich sind, da flex dafür nie gedacht war.
 
Sind grid- und flex-Layout gleich modern und gleich effektiv?
Welches der beiden ist für einen Anfänger besser geeignet, da leichter verständlich?
Der Kern des Unterschiedes: Flex ist eindimensional, d. h. die Elemente werden in einer Richtung, x oder y angeordnet. Wie in deinem Fall mit den drei Spalten. Grid ist dagegen zweidimensional, die Elemente werden in Form eines Gitters in x- und y-Richtung angeordnet.
Die Abgrenzung Flex gegenüber Grid wird auch auf kulturbanause.de gut beschrieben:
Das Flexbox-Layoutmodell erfreut sich großer Beliebtheit, weshalb häufig gefragt wird, worin der Vorteil von CSS Grids besteht. Flexbox bietet sich besser für lineare Strukturen an, CSS Grids für komplexe verschachtelte Konstruktionen. Die Kombination beider Techniken ist sinnvoll und gewünscht. Es kommt auf den Anwendungsfall an, welches Layoutmodell sich besser eignet.
 
Auch ich habe eine ähnliche Frage, erhoffe aber ein konkretes grid-Beispiel.
Die Aufteilung soll zunächst so sein:
Linker Bereich 1/4, rechter Bereich 3/4, also nach meinem ersten Grundwissen:
grid-template-columns: 1fr 3fr;
Dann aber verlässt sich mein Geisst!
Der rechte Bereich soll zentriert sein und ein Bild (50px), einen Text und wieder ein Bild (50px) enthalten,
also so:
1.jpg
 
Solche Theoriebeispiele taugen erfahrungsgemäß nicht für die Praxis. Ich habe mal ein einfaches Beispiel nach deinen Vorgaben erstellt, das zwei grid-Bereiche enthält:

Code:
<!DOCTYPE html>
<html lang="de">
<head>
   <meta charset="utf-8">
   <title>Spaltenlayout</title>
   <meta name="description" content="Platzhalter - Ein kurze Beschreibung des Inhalts in Satzform">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <style>
      body {
         padding: 0.5rem;
         margin: 0rem auto 0rem auto;
         display: grid;
         grid-template-columns: 1fr 3fr;
         gap: 0.5rem;
      }
      aside {
         border: 1px solid grey;
         padding: 0.5rem;
         border-radius: 0.5rem;
      }
      main {
         border: 1px solid grey;
         padding: 0.5rem;
         border-radius: 0.5rem;
         display: grid;
         grid-template-columns: auto 1fr auto;
      }
      main h1 {
         text-align: center;
      }
      figure {
         margin: 1rem 0;
      }
      img {
         max-width: 50px;
      }
   </style>
</head>
<body>
   <aside>
      <h1>NASA</h1>
   </aside>
   <main>
      <figure>
         <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/255px-NASA_logo.svg.png" alt="Logo NASA">
      </figure>
      <h1>Text zwischen Bildern</h1>
      <figure>
         <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/255px-NASA_logo.svg.png" alt="Logo NASA">
      </figure>
   </main>
</body>
</html>
 
Zuletzt bearbeitet:
Danke für das Beispiel und wie schnell!
Das Ergebnis sieht nun so
1.jpg
bzw. so aus:
2.jpg

Ich wollte es jetzt so haben
3.jpg
Aber auch beim breiten Bildschrim sieht es schon so aus:
4.jpg
Was mache ich hie falsch? Geändert habe ich in main und in figure.
Hier der Text:
CSS:
<!DOCTYPE html>
<html lang="de">
<head>
   <meta charset="utf-8">
   <title>Spaltenlayout</title>
   <meta name="description" content="Platzhalter - Ein kurze Beschreibung des Inhalts in Satzform">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <style>
      body {
         padding: 0.5rem;
         margin: 0rem auto 0rem auto;
         display: grid;
         grid-template-columns: 1fr 3fr;
         gap: 0.5rem;
      }
      aside {
         border: 1px solid grey;
         padding: 0.5rem;
         border-radius: 0.5rem;
      }
      main {
         border: 1px solid grey;
         padding: 0.5rem;
         border-radius: 0.5rem;
         display: grid;
         grid-template-columns: auto min-content auto;
      }
      main h1 {
         text-align: center;
      }
      figure:first-child{
         text-align: right;
         margin-right: 1em;
      }
      figure:last-child{
         margin-left: 1em;
     }
      img {
         max-width: 50px;
      }
   </style>
</head>
<body>
   <aside>
      <h1>NASA</h1>
   </aside>
   <main>
      <figure>
         <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/255px-NASA_logo.svg.png" alt="Logo NASA">
      </figure>
      <h1>Text zwischen Bildern</h1>
      <figure>
         <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/255px-NASA_logo.svg.png" alt="Logo NASA">
      </figure>
   </main>
</body>
</html>
 

Anhänge

  • 3.jpg
    3.jpg
    22,5 KB · Aufrufe: 1
Mit

Code:
grid-template-columns: auto min-content auto;

wird die mittlere Spalte grade so breit wie das "längste" Wort, also "zwischen". Die mittlere Spalte soll aber so breit sein wie der Text, aber ohne Zeilenumbruch. Dafür ist "auto" gedacht.

Bei drei Spalten müssen die Bilder den restlichen Platz ausnutzen. Also jeweils "1fr".

Code:
grid-template-columns: 1fr auto 1fr;

Nun muss nur noch das linke Bild im figure-Element rechtsbündig ausgerichtet werden. Ganz klassisch mittels

Code:
figure:nth-child(1) {
   text-align: right;
}

Insgesamt also:

Code:
<!DOCTYPE html>
<html lang="de">
<head>
   <meta charset="utf-8">
   <title>Spaltenlayout</title>
   <meta name="description" content="Platzhalter - Ein kurze Beschreibung des Inhalts in Satzform">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <style>
      body {
         padding: 0.5rem;
         margin: 0rem auto 0rem auto;
         display: grid;
         grid-template-columns: 1fr 3fr;
         gap: 0.5rem;
      }
      aside {
         border: 1px solid grey;
         padding: 0.5rem;
         border-radius: 0.5rem;
      }
      main {
         border: 1px solid grey;
         padding: 0.5rem;
         border-radius: 0.5rem;
         display: grid;
         grid-template-columns: 1fr auto 1fr;
      }
      main h1 {
         text-align: center;
      }
      figure {
         margin: 1rem 0;
      }
      figure:nth-child(1) {
         text-align: right;
      }
      img {
         max-width: 50px;
      }
   </style>
</head>
<body>
   <aside>
      <h1>NASA</h1>
   </aside>
   <main>
      <figure>
         <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/255px-NASA_logo.svg.png" alt="Logo NASA">
      </figure>
      <h1>Text zwischen Bildern</h1>
      <figure>
         <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/255px-NASA_logo.svg.png" alt="Logo NASA">
      </figure>
   </main>
</body>
</html>

Das ist aber nur eine von mehreren Möglichkeiten. Wenn andere Inhalte hinzukommen können die besser geeignet sein.
 
Zuletzt bearbeitet:
Mit

Code:
grid-template-columns: auto min-content auto;

wird die mittlere Spalte grade so breit wie das "längste" Wort, also "zwischen". Die mittlere Spalte soll aber so breit sein wie der Text, aber ohne Zeilenumbruch. Dafür ist "auto" gedacht.

Bei drei Spalten müssen die Bilder den restlichen Platz ausnutzen. Also jeweils "1fr".

Code:
grid-template-columns: 1fr auto 1fr;

Nun muss nur noch das linke Bild im figure-Element rechtsbündig ausgerichtet werden. Ganz klassisch mittels

Code:
figure:nth-child(1) {
   text-align: right;
}

Insgesamt also:

Code:
<!DOCTYPE html>
<html lang="de">
<head>
   <meta charset="utf-8">
   <title>Spaltenlayout</title>
   <meta name="description" content="Platzhalter - Ein kurze Beschreibung des Inhalts in Satzform">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <style>
      body {
         padding: 0.5rem;
         margin: 0rem auto 0rem auto;
         display: grid;
         grid-template-columns: 1fr 3fr;
         gap: 0.5rem;
      }
      aside {
         border: 1px solid grey;
         padding: 0.5rem;
         border-radius: 0.5rem;
      }
      main {
         border: 1px solid grey;
         padding: 0.5rem;
         border-radius: 0.5rem;
         display: grid;
         grid-template-columns: 1fr auto 1fr;
      }
      main h1 {
         text-align: center;
      }
      figure {
         margin: 1rem 0;
      }
      figure:nth-child(1) {
         text-align: right;
      }
      img {
         max-width: 50px;
      }
   </style>
</head>
<body>
   <aside>
      <h1>NASA</h1>
   </aside>
   <main>
      <figure>
         <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/255px-NASA_logo.svg.png" alt="Logo NASA">
      </figure>
      <h1>Text zwischen Bildern</h1>
      <figure>
         <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/255px-NASA_logo.svg.png" alt="Logo NASA">
      </figure>
   </main>
</body>
</html>

Das ist aber nur eine von mehreren Möglichkeiten. Wenn andere Inhalte hinzukommen können die besser geeignet sein.
Danke, genau so passt es!
 
Zurück
Oben