Listen sind ein grundlegender Bestandteil von HTML! Sie sind nützlich in Dingen wie Blogbeiträgen zum Auflisten von Schritten, Rezepten zum Auflisten von Zutaten oder Elementen in einem Navigationsmenü. Sie sind nicht nur eine Gelegenheit zum Stylen, sondern haben auch Auswirkungen auf die Barrierefreiheit. Zum Beispiel wird die Anzahl der Elemente in einer Liste von einem Screenreader angekündigt, um etwas Kontext zu der Liste zu geben.
Konzentrieren wir uns hier auf das Styling von Listen, hauptsächlich auf geordnete und ungeordnete Listen (mit Entschuldigungen dafür, dass wir unseren Freund, die Definitionsliste, vernachlässigen) und etwas ungewöhnliche Styling-Situationen.
Die Grundlagen
Bevor Sie etwas allzu Ausgefallenes tun, sollten Sie wissen, dass es recht wenige Einstellungen für list-style-type gibt, die Ihre Bedürfnisse sofort abdecken könnten.
Der Bruch in der Mitte
Geordnete Listen können bei jeder gewünschten Zahl starten.
Die verschachtelten Dezimalzahlen
Die umgekehrte Top-10-Liste
Ein einzelnes Attribut reversed erledigt die Aufgabe.
Bild-Aufzählungszeichen
Am besten verwendet man ein background-image auf einem Pseudo-Element. Man könnte denken, dass list-style-image der richtige Weg ist, aber es ist extrem begrenzt. Zum Beispiel kann man es nicht positionieren oder sogar skalieren.
Emoji-Aufzählungszeichen
Handverlesene „zufällige“ Reihenfolge
Das Attribut value weist einem Listenelement das entsprechende Aufzählungszeichen für diese Position zu.
Benutzerdefinierte Textzähler
Kann für die meiste Kontrolle mit Pseudo-Elementen durchgeführt werden, aber es gibt auch list-style-type: '-';
Innen vs. Außen
Mit list-style-position: outside; (dem Standardwert) passen die Dinge besser, aber die Listenzeichen werden außerhalb der Box gerendert, daher muss man vorsichtig sein, sie nicht abzuschneiden. Sie könnten vom Rand des Browserfensters abstehen, oder overflow: hidden; wird sie komplett ausblenden. Die letzten beiden Beispiele hier enthalten einen Trick, um die schönere Ausrichtung zu imitieren, während sie innerhalb des Elements gerendert werden.
Farbige Aufzählungszeichen
Drei Wege hier
::marker(am neuesten und einfachsten)- Klassisches Pseudo-Element-Styling
background-image(dieses ist eine SVG-Daten-URL, sodass Sie die Farbe aus dem CSS manipulieren können)
Kolonisierte Liste
Die Anzahl der Spalten kann automatisch sein.
Farbige Kreis-Zahlen
Benutzerdefinierte wechselnde Listensymbole
Einzelne Elemente können mit list-style: symbols() und wiederverwendbare Sets mit @counter-style erstellt und dann verwendet werden. Beachten Sie, dass dies zum Zeitpunkt der Erstellung nur in Firefox unterstützt wird.
Man kann die Aufzählungszeichen der Liste mit Farbverläufen stylen, wie Eric Meyer demonstriert. https://meyerweb.com/eric/css/tests/list-style-gradient.html
Sie müssen den Browser-Support im Auge behalten. Definitiv nichts, worauf man sich (noch) verlassen kann.
Wow – wie konnte ich nie von „list-style-position“ wissen!
Danke!
So ein nützlicher Beitrag! Danke, Chris!
Hervorragende Ressource und Erinnerung an die Möglichkeiten mit Listen, Chris. Danke!
Frage/Herausforderung: Ist es möglich, (1) einen Attributwert im
<li>-Element für den Aufzählungszeichen-Inhalt zu verwenden, (2) während die Textausrichtung von<li>erhalten bleibt?Die Rezepte mit ::before können (1) tun, aber nicht (2).
Ich habe dazu eine StackOverflow-Frage, aber ich dachte, die Leute hier hätten vielleicht Einblicke.
SO-Frage mit mehr Details, als Referenz: https://stackoverflow.com/questions/61637876/list-bullets-is-it-possible-to-use-1-an-attribute-for-the-content-while-2-p
Geben Sie dem li einen Innenabstand und setzen Sie ::before absolut. Jetzt können Sie das Bild mit einem negativen Offset oder Margin positionieren.
All diese werden von den meisten neueren Firefox-Versionen unterstützt.
Außerdem habe ich bei Chrome 64bit v81 (aktualisiert auf die neueste verfügbare automatische Update-Version) festgestellt, dass Chrome
::marker,@supportsoder@counter-stylesnicht unterstützt (obwohl@supportvon Chrome-Versionen v83 bis v85 unterstützt wird).Kein Weg! Das hat mir so sehr geholfen! Vielen Dank, von einem Coder bei Khan Academy