Seit 2020 wurden in CSS3 viele neue Funktionen und Eigenschaften eingeführt, die das Layout, die Gestaltung und die Animationen von Webinhalten erheblich verbessern. Hier sind einige der bemerkenswertesten neuen CSS3-Befehle und -Eigenschaften, die seitdem hinzugekommen sind:
1. container queries
Container Queries ermöglichen es, Styles auf Basis der Größe eines Containers und nicht der Viewport-Größe anzuwenden. Dies ist besonders nützlich für responsive Design-Komponenten.
.container {
container-type: inline-size;
container-name: myContainer;
}
@container myContainer (min-width: 400px) {
.child {
font-size: 1.5rem;
}
}
2. accent-color
Mit accent-color
kann die Akzentfarbe für Formularelemente wie Checkboxen, Radiobuttons und Schieberegler festgelegt werden.
input[type="checkbox"] {
accent-color: #ff6347; /* Tomatenrot */
}
3. scroll-timeline
und view-timeline
Diese Eigenschaften ermöglichen es, CSS-Animationen basierend auf dem Scrollfortschritt zu steuern.
@keyframes scrollAnimation {
0% {
transform: translateX(0);
}
100% {
transform: translateX(100%);
}
}
.element {
scroll-timeline-name: my-timeline;
animation: scrollAnimation 1s infinite;
}
4. subgrid
(für CSS Grid Layouts)
Die subgrid
-Funktion ermöglicht es, einem Kind-Element eines CSS-Grids die gleiche Spalten- oder Reihenstruktur wie seinem Eltern-Grid zu verwenden.
.parent {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
}
.child {
display: grid;
grid-template-columns: subgrid; /* Übernimmt die Spaltenstruktur des Eltern-Grid */
}
5. aspect-ratio
aspect-ratio
ermöglicht die Festlegung eines Verhältnisses von Breite zu Höhe für Elemente, was insbesondere für responsive Bilder und Videos nützlich ist.
.box {
width: 100%;
aspect-ratio: 16 / 9; /* 16:9 Seitenverhältnis */
background: #ddd;
}
6. inset
(Shorthand für top, right, bottom, left)
inset
ist eine Kurzform, die gleichzeitig die Eigenschaften top
, right
, bottom
und left
definiert.
.element {
position: absolute;
inset: 10px 20px 30px 40px; /* top right bottom left */
}
7. min()
, max()
, clamp()
Diese Funktionen bieten mehr Flexibilität bei der Größenberechnung, um responsive Layouts besser zu kontrollieren.
.element {
width: min(50vw, 400px); /* Wählt den kleineren Wert */
font-size: clamp(1rem, 2.5vw, 2rem); /* Zwischen 1rem und 2rem, aber skaliert */
}
8. backdrop-filter
backdrop-filter
ermöglicht es, grafische Effekte wie Unschärfe oder Farbverschiebungen auf den Hintergrund eines Elements anzuwenden.
.overlay {
backdrop-filter: blur(5px); /* Macht den Hintergrund unscharf */
}
9. color-contrast()
Diese Funktion ist neu in CSS und wird verwendet, um die kontrastreichste Farbe basierend auf einer Liste von Kandidaten auszuwählen. Dies ist nützlich, um die Barrierefreiheit zu verbessern.
element {
color: color-contrast(#fff vs #000, #ff6347); /* Wählt die kontrastreichste Farbe zu #fff */
}
10. has()
(Parent-Selector)
has()
ermöglicht es, ein Element basierend auf seinen Kind-Elementen zu stylen.
div:has(> img) {
border: 2px solid blue; /* Fügt eine blaue Umrandung hinzu, wenn das div ein direktes img-Kind hat */
}
11. is()
und where()
Diese Pseudo-Klassen vereinfachen komplexe Selektoren und bieten eine bessere Lesbarkeit und Wartbarkeit.
/* Wendet die Styles auf jedes der angegebenen Elemente an */
:is(h1, h2, h3) {
color: #333;
}
/* Wendet die Styles an, aber ohne Spezifitätserhöhung */
where(article, section) {
margin-bottom: 20px;
}
12. :focus-visible
Diese Pseudo-Klasse zielt auf fokussierte Elemente ab, aber nur, wenn sie eine sichtbare Fokusanzeige benötigen (z. B. bei Tastaturbedienung).
button:focus-visible {
outline: 2px solid #ff6347; /* Zeigt nur bei Tastaturfokus eine Umrandung */
}
13. scroll-snap-stop
scroll-snap-stop
sorgt dafür, dass beim Scrollen an einem bestimmten Punkt gestoppt wird, was bei der Implementierung von Scroll-Snap-Layouts nützlich ist.
.snap-point {
scroll-snap-stop: always; /* Scrollt immer zu diesem Punkt */
}
14. place-content
, place-items
, place-self
Diese Shorthands kombinieren align-
und justify-
Eigenschaften, um die Platzierung von Inhalten und Elementen in Grids und Flexboxen zu vereinfachen.
.container {
display: grid;
place-items: center; /* Zentriert Inhalte sowohl horizontal als auch vertikal */
}
.item {
place-self: start; /* Startet die Platzierung von Elementen am Anfang */
}
Diese neuen CSS3-Eigenschaften und -Befehle erweitern die Möglichkeiten der Webgestaltung erheblich, insbesondere in Bezug auf Layouts, Animationen und responsives Design. Sie bieten mehr Flexibilität und Kontrolle, um moderne, ansprechende und barrierefreie Webanwendungen zu erstellen.