_news.scss
Nachrichtenlisten
Section titled “Nachrichtenlisten”Die Module erhalten zwei Klassen: eine für die Raster- bzw. Listendarstellung, und eine für die Teaser.
- Raster- bzw. Listendarstellung
.grid-auto-fit(dynamische Spaltenanzahl: Breite nach Platzangebot).grid-auto-fill(dynamische Spaltenanzahl: fixe Breite, so viele wie reinpassen).grid-2c(zwei Spalten).grid-3c(drei Spalten).grid-4c(vier Spalten).grid-1c(eine Spalte, Listendarstellung)
- Teaser
.card(klassische Kartendarstellung, Bild oben, Text unten).list(Bild links, Teasertext rechts)
Dynamische Spaltenanzahl
Section titled “Dynamische Spaltenanzahl”Die Anzeige orientiert sich an der Breite der Grid-Columns, d.h., es ist keine fixe Anzahl an Spalten vorgegeben.
Die Breite der Beiträge orientiert sich an der Bildbreite, d.h., sowohl eine breitere Figcaption (siehe _html-elements.scss) als auch ein breiterer Teaser wird mit CSS Containment eingefangen. Damit wird verhindert, dass eine Hintergrundfarbe für .layout-latest breiter ist als das Teaserbild. Containment in CSS
Bildgröße
Section titled “Bildgröße”Die Größe des Teaserbildes wird in Contao verwaltet, da die Bilder dort responsive ausgegeben werden können.
@use "../abstracts/" as *;
// Container.mod_newslist,.mod_newsarchive,.mod_newsreader { container-type: inline-size; container-name: newsContainer;}
// flexibles Grid.grid-auto-fit { .gridcontainer { // --min: Bildbreite / 2 - $column-gap --min: 216px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min($min, 100%), 1fr)); column-gap: $column-gap; row-gap: $row-gap; }}.grid-auto-fill { .gridcontainer { display: grid; grid-template-columns: repeat(auto-fill, minmax(min($min, 100%), 1fr)); column-gap: $column-gap; row-gap: $row-gap; }}
// grid mit fixer Spaltenanzahl.grid-2c { .gridcontainer { display: grid; grid-template-columns: 1fr; grid-template-rows: auto; column-gap: $column-gap; row-gap: $row-gap; @container newsContainer (width > #{$tweakpoint-53}) { grid-template-columns: 1fr 1fr; } }}
.grid-3c { .gridcontainer { display: grid; grid-template-columns: 1fr; grid-template-rows: auto; column-gap: $column-gap; row-gap: $row-gap; @container newsContainer (width > #{$tweakpoint-30}) { grid-template-columns: 1fr 1fr; } @container newsContainer (width > #{$tweakpoint-53}) { grid-template-columns: 1fr 1fr 1fr; } }}
.grid-4c { .gridcontainer { display: grid; column-gap: $column-gap; row-gap: $row-gap; @container contentElementGroup (width > #{$tweakpoint-30}) { grid-template-columns: 1fr 1fr; } @container contentElementGroup (width > #{$tweakpoint-53}) { grid-template-columns: 1fr 1fr 1fr 1fr; } }}
// einspaltige Liste.grid-1c { .gridcontainer { display: grid; grid-template-columns: 1fr; grid-row-gap: $row-gap; }}
// Bildunterschrift innerhalb vom Bild positionieren.layout_latest { figure { position: relative; figcaption { position: absolute; inline-size: 100%; left: 0.5rem; bottom: 0.125rem; color: white; } }}
// Template layout_latest Card.card { .layout_latest { inline-size: fit-content; display: grid; grid-template-columns: 1fr; grid-template-rows: auto 1fr; .teaser { contain: inline-size; display: flex; flex-direction: column; gap: 0.25lh; .headline { margin-block-start: 0.5lh; } p.more { margin-block-start: auto; } } }}
// Template layout_latest Liste.list { .layout_latest { display: grid; grid-template-columns: auto 1fr; column-gap: 1rem; img { height: 100%; object-fit: cover; } .teaser { display: flex; flex-direction: column; gap: 0.25lh; p.more { margin-block-start: auto; } } }}