Neue Methode zum Zeichnen von Trennlinien in CSS: `CSS Gap Decorations`
(blogs.windows.com)- Das Hinzufügen von Trennlinien zwischen Abschnitten auf einer Webseite ist eine gängige Designtechnik, um Inhalte klar zu strukturieren und die Lesbarkeit zu verbessern
- Mit bestehenden CSS-Techniken wie
borderlassen sich Trennlinien hinzufügen, allerdings gibt es Einschränkungen wie Größenänderungen und zusätzlichen Code - CSS Gap Decorations löst diese Probleme, indem Eigenschaften wie
column-ruleundrow-ruleergänzt werden
Bisherige CSS-Techniken für Trennlinien und ihre Grenzen
- Die Eigenschaft
borderist eine übliche Methode zum Hinzufügen von Trennlinien, kann aber folgende Probleme verursachen- Durch das Hinzufügen von
borderkann sich die Elementgröße ändern - Für das erste und letzte Element muss zusätzlicher Code geschrieben werden
- Wenn in einem Flexbox-Layout Zeilenumbrüche auftreten, decken die Trennlinien möglicherweise nicht den gesamten Bereich ab
- Durch das Hinzufügen von
- Mit den Pseudoelementen
::beforeund::afterlassen sich ebenfalls Trennlinien hinzufügen, allerdings mit folgenden Einschränkungen- Zusätzlicher Code für das erste und letzte Element erforderlich
- Komplexer Code mit absoluter Positionierung notwendig
- Trennlinien lassen sich auch nachbilden, indem auf den Grid-Container eine Hintergrundfarbe und auf die Elemente ebenfalls eine Hintergrundfarbe angewendet wird
- Die Länge der Trennlinien lässt sich nicht anpassen
- Bei leeren Zellen ist die Hintergrundfarbe sichtbar
- Wenn Elemente die Zellen nicht vollständig ausfüllen, ist die Hintergrundfarbe sichtbar
- Funktioniert nicht, wenn der Seitenhintergrund nicht einfarbig ist
- In Multi-Column-Layouts lassen sich Trennlinien mit der Eigenschaft
column-rulehinzufügen, allerdings mit folgenden Einschränkungen- Funktioniert nur in Multi-Column-Layouts
- Keine Steuerung der Inline-Richtung des Inhalts möglich
Vorschlag für CSS Gap Decorations
- CSS Gap Decorations ist ein neuer Vorschlag, um die oben genannten Probleme zu lösen
- Zentrale Punkte des Vorschlags
- Erweiterung der Eigenschaft
column-rule, sodass sie auch auf Grid- und Flexbox-Layouts angewendet werden kann - Einführung der neuen Eigenschaft
row-rule - Unterschiedliche Trennlinieneinstellungen für einzelne Container-Bereiche möglich
- Erweiterung der Eigenschaft
- Mit der Eigenschaft
row-rule-colorlässt sich die Farbe der Trennlinien ändern.alternate-red-blue { display: grid; grid-template: repeat(auto-fill, 30px) / repeat(6, 100px); gap: 10px; row-rule: 1px solid; row-rule-color: red blue; } - Es lassen sich Trennlinien mit unterschiedlicher Stärke und Farbe festlegen
.varying-widths { display: grid; grid-template: repeat(auto-fill, 30px) / repeat(6, 100px); row-gap: 10px; row-rule: 5px solid black / repeat(auto, 1px solid #666) / 3px solid black; } - Das Verhalten der Trennlinien an Kreuzungspunkten lässt sich steuern
- Eigenschaften wie
*-rule-breakund*-rule-outsetkönnen verwendet werden - Start- und Endpositionen der Trennlinien an Kreuzungspunkten lassen sich festlegen
- Feine Anpassung von Trennlinienlänge und Offset möglich
- Eigenschaften wie
Bitte um Feedback zum Vorschlag
- Der Vorschlag für CSS Gap Decorations soll auf Basis von Entwickler-Feedback weiter verbessert werden
- Weitere Informationen gibt es im offiziellen Explainer
- Feedback kann über GitHub-Issues eingereicht werden
- Besonders willkommen ist Feedback zum Verhalten der Trennlinien an Kreuzungspunkten
1 Kommentare
Hacker-News-Kommentar
Ich hätte gern ein neues Pseudoelement: .container:gap { background-color: red; }
{ padding: 2px }könnte man am Ende des Trennelements Abstand festlegen:gap-horzund:gap-vertließen sich vertikale und horizontale Abstände getrennt festlegen.container:gap:nth-gap(2n) { color: blue; }könnte man abwechselnde Farben bekommenDesign by Committee ist nicht ideal, aber als Nicht-Muttersprachler vermittelt der vorgeschlagene Eigenschaftenname die Bedeutung nicht besonders gut
Ich hoffe, man hat auch den Anwendungsfall anpassbarer Panels berücksichtigt
Fügt man einen Rahmen hinzu, ändert sich die Größe des Elements, was unerwünscht sein kann
* { box-sizing: border-box; }Interessant. Ich arbeite in letzter Zeit vor allem mit QML an UIs, und dort wird fast jedes Problem abgedeckt
Gute Idee, aber vor etwa 10 Jahren wäre das nützlicher gewesen
.things .thing:not(:last-child) { border-bottom: 1px solid gray; }Das war lange ein schmerzhaftes Problem. Schön zu sehen, dass jemand etwas dagegen unternimmt
display: gridund nicht Elemente mit nicht festgelegter Breite|zwischen Links am Ende der ersten oder am Anfang der zweiten Zeile erscheinenDas erinnert mich an ein Sprichwort deutscher Designer: "Wenn dem Designer nichts mehr einfällt, fügt er ein paar Linien hinzu"
Ich stoße oft auf dieses Problem und hätte gern eine bessere Lösung als
<hr/>Hoffentlich wird das angenommen ... KI zu nutzen, um meine Wissenslücken bei Flexbox zu beheben, war ein Segen, aber das hier fühlt sich wie eine echte Lösung an