Benutzerdefiniertes Aufzählungszeichen für <li> Elemente in <ul>, das ein reguläres Zeichen und kein Bild ist


125

Mir ist klar, dass man eine benutzerdefinierte Grafik als Ersatz-Aufzählungszeichen mithilfe des CSS-Attributs angeben kann:

list-style-image

Und dann eine URL geben.

In meinem Fall möchte ich jedoch nur das Symbol '+' verwenden. Ich möchte dafür keine Grafik erstellen und dann darauf zeigen müssen. Ich möchte die ungeordnete Liste lieber anweisen, ein Pluszeichen als Aufzählungszeichen zu verwenden.

Kann das gemacht werden oder bin ich gezwungen, zuerst eine Grafik daraus zu machen?

Antworten:


81

Folgendes wird aus den Zähmungslisten zitiert :

Es kann vorkommen, dass Sie eine Liste haben, aber keine Aufzählungszeichen möchten oder ein anderes Zeichen anstelle des Aufzählungszeichens verwenden möchten. Auch hier bietet CSS eine einfache Lösung. Fügen Sie einfach den Listenstil hinzu: keine; zu Ihrer Regel und zwingen Sie die LIs, mit hängenden Einrückungen anzuzeigen. Die Regel sieht ungefähr so ​​aus:

ul {
   list-style: none;
   margin-left: 0;
   padding-left: 1em;
   text-indent: -1em;
}

Entweder der Abstand oder der Rand müssen auf Null gesetzt werden, der andere auf 1em. Abhängig von dem von Ihnen ausgewählten „Aufzählungszeichen“ müssen Sie diesen Wert möglicherweise ändern. Der negative Texteinzug bewirkt, dass die erste Zeile um diesen Betrag nach links verschoben wird, wodurch ein hängender Einzug entsteht.

Der HTML-Code enthält unser Standard-UL, jedoch mit jedem Zeichen oder jeder HTML-Entität, die Sie anstelle des Aufzählungszeichens vor dem Inhalt des Listenelements verwenden möchten. In unserem Fall verwenden wir », das rechte Doppelwinkel-Zitat:».

»Punkt 1
» Punkt 2
»Punkt 3
» Punkt 4
»Punkt 5 werden wir
   etwas länger machen, damit
   es sich einwickelt


1
Ihre Lösung funktionierte in Kombination mit dem Pseudo-Selektor: before, auf den Sie und @Tieson T. beide verweisen. Es hat mir gefallen, dass Sie darauf hingewiesen haben, wie die verschiedenen Attribute von <UL> zusammenarbeiten, um die Einrückung von Aufzählungszeichen nachzuahmen.
idStar

9
So habe ich es zusammengestellt, was funktioniert hat: ul {font-size: 14px; Zeilenhöhe: 16px; Listenstil: keine; Rand links: 0; Polsterung links: 1em; Texteinzug: -1em; } li: before {content: "+"; } Ich musste ein Leerzeichen nach dem + -Symbol setzen, aber es sieht ziemlich gut ausgerichtet aus.
idStar

6
Leider wird bei dieser Methode das Aufzählungszeichen in die Auswahl aufgenommen, was bei normalen Aufzählungszeichen nicht der Fall ist.
Konrad Höffner

169

Dies ist eine späte Antwort, aber ich bin gerade darauf gestoßen ... Um die Einrückung in Zeilen, die umbrochen werden, korrekt zu machen, versuchen Sie es folgendermaßen:

ul {
  list-style: none;
  margin-left: 0;
  padding-left: 0;
}

li {
  padding-left: 1em;
  text-indent: -1em;
}

li:before {
  content: "+";
  padding-right: 5px;
}

1
Für mich ist es besser, ch als Maßeinheit zu verwenden, insbesondere text-indent: -2chdas + -Zeichen und das Leerzeichen danach zu berücksichtigen und dann padding-right: 1chdieses Leerzeichen hinzuzufügen. Trotzdem eine große +1.
Cobaltduck

44

So viele Lösungen.
Aber ich denke immer noch, dass es Raum für Verbesserungen gibt.

Vorteile:

  • sehr kompakter Code
  • funktioniert mit jeder Schriftgröße
    (keine absoluten Pixelwerte enthalten)
  • richtet Zeilen perfekt aus
    (keine leichte Verschiebung zwischen der ersten und der folgenden Zeile)

ul {
	position: relative;
	list-style: none;
	margin-left: 0;
	padding-left: 1.2em;
}
ul li:before {
	content: "+";
	position: absolute;
	left: 0;
}
<ul>
  <li>Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Pellentesque in ipsum id orci porta dapibus.</li>
  <li>Nulla porttitor accumsan tincidunt. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Aliquet quam id dui posuere blandit. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus.</li>
</ul>


2
Dies ist das Beste
Benutzer3168511

1
Dies ist meiner Meinung nach eine bessere Antwort, da sie darauf hinweist, wie Sie auch andere Details anpassen können. Und es hat auch das "Run Code Snippet" angehängt!
Ionuț Ciuta

1
Dies sollte die Antwort sein. Sauber und einfach
EvilDr

1
Ich suchte nach einer Lösung mit einem Bild und versuchte viele Antworten, aber diese funktionierte am besten für mich! Ich konnte content: url('link-to-my-asset.svg');die Bildbreite und den Abstand zwischen Aufzählungszeichen und Inhalt verwenden und einstellen. Vielen Dank!
AnnieP

Das ist eine gute Antwort. Ich brauchte jedoch eine Lösung, die auch die Spaltenanzahl unterstützen konnte
Kushagr Arora

29

Dies ist die W3C-Lösung. Funktioniert in Firefox und Chrome.

ul { list-style-type: "🔔"; }
/* Sets the marker to a 🔔 emoji character */

http://dev.w3.org/csswg/css-lists/#marker-content

ul { list-style-type: "🔔 "; }
  <ul><li>item</li></ul>


2
Obwohl es in aktuellen Versionen von Firefox zu funktionieren scheint , ist das Ergebnis äußerst hässlich: Benutzerdefinierte Aufzählungszeichen werden direkt vor dem Textinhalt platziert (einrasten), fast so, als ob li:before {content:"…";}sie ohne andere Einrückung und Ausrichtung verwendet würden.
Anton Samsonov

19

Hier ist die beste Lösung, die ich bisher gefunden habe. Es funktioniert hervorragend und ist browserübergreifend (IE 8+).

ul {
    list-style: none;
    margin-left: 0;
    padding-left: 1.2em;
    text-indent: -1.2em;
}

li:before {
    content: "►";
    display: block;
    float: left;
    width: 1.2em;
    color: #ff0000;
}

Wichtig ist, dass sich das Zeichen in einem schwebenden Block mit einer festen Breite befindet, damit der Text ausgerichtet bleibt, wenn er zu lang ist, um in eine einzelne Zeile zu passen. 1.2em ist die Breite, die Sie für Ihren Charakter wünschen, ändern Sie sie für Ihre Bedürfnisse.


Dies ist mit Sicherheit die beste Lösung, die ich gefunden habe.
Charles Roper

Wiedergebrauch von floatwieder? ... naah.


10

Meine Lösung verwendet die Positionierung, um umbrochene Linien automatisch korrekt auszurichten. Sie müssen sich also keine Gedanken darüber machen, wie Sie die Polsterung direkt auf dem li: before einstellen.

ul {
  margin-left: 0;
  padding-left: 0;
  list-style-type: none;
}

ul li {
  position: relative;
  margin-left: 1em;
}

ul li:before {
  position: absolute;
  left: -1em;
  content: "+";
}
<ul>
  <li>Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
  <li>Item 2 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
  <li>Item 3 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>


8

Es ist ratsam, das Styling des zu qualifizieren, <li>damit es keine Auswirkungen auf <ol>Listenelemente hat. So:

ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

ul li {
    padding-left: 1em;
    text-indent: -1em;
}

ul li:before {
    content: "+";
    padding-right: 5px;
}

8

Font-awesome bietet eine großartige Lösung:

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" />

<ul class='fa-ul'>
  <li><i class="fa-li fa fa-plus"></i> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</li>
  <li><i class="fa-li fa fa-plus"></i> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</li>
</ul>


4

.list-dash li, .list-bullet li {
    position: relative;
    list-style-type: none; /* disc circle(hollow) square none */
    text-indent: -2em;
}
.list-dash li:before {
    content: '—  '; /* em dash */
}
.list-bullet li:before {
    content: '• '; /*copy and paste a bullet from HTML in browser into CSS (not using ASCII codes) */
}
<ul class="list-dash">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
</ul>


Up stimmte dies nur wegen / * Kopieren und Einfügen eines Aufzählungszeichens aus HTML im Browser in CSS (ohne Verwendung von ASCII-Codes) * /
Kheya

2

Em Dash-Stil:

ul.emdash {
  list-style-type: none;
  list-style-position: inside;
  text-indent: -1.25em;
}
ul.emdash > li:before {
  content: "\2014\00A0"; /* em dash + space*/
}

1

Ich bevorzuge die Verwendung einer negativen Marge, gibt Ihnen mehr Kontrolle

ul {
  margin-left: 0;
  padding-left: 20px;
  list-style: none;
}

li:before {
  content: "*";
  display: inline;
  float: left;
  margin-left: -18px;
}

1

Interessanterweise glaube ich nicht, dass eine der veröffentlichten Lösungen gut genug ist, da sie auf der Tatsache beruhen, dass das verwendete Zeichen 1em breit ist, was nicht unbedingt erforderlich ist (mit Ausnahme von John Magnolias Antwort, die jedoch Floats verwendet, die dies können Dinge auf andere Weise komplizieren). Hier ist mein Versuch:

ul {
  list-style-type: none;
  margin-left: 0;
  padding-left: 30px; /* change 30px to anything */
  text-indent: -30px;
}
ul li:before {
  content: "xy";
  display: inline-block; 
  width: 30px;
  text-indent: 0;
  text-align: center; /* change this for different bullet position */
}
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>

Dies hat folgende Vorteile (gegenüber anderen Lösungen):

  1. Es hängt nicht von der Breite des Symbols ab, wie Sie im Beispiel sehen. Ich habe zwei Zeichen verwendet, um zu zeigen, dass es auch mit breiten Kugeln funktioniert. Wenn Sie dies in anderen Lösungen versuchen, wird der Text falsch ausgerichtet (in höheren Zooms ist er sogar mit dem Symbol * sichtbar).
  2. Sie haben die vollständige Kontrolle über den von Aufzählungszeichen genutzten Platz . Sie können 30px durch alles ersetzen (sogar 1em usw.). Vergessen Sie nur nicht, es an allen drei Stellen zu ändern.
  3. Wenn Sie die vollständige Kontrolle über die Positionierung des Geschosses haben . Ersetzen Sie das einfach text-align: center;durch etwas nach Ihren Wünschen. Zum Beispiel können Sie es versuchen color: red; text-align: right; padding-right: 5px; box-sizing: border-box; oder wenn Sie nicht gerne mit dem Rahmen spielen, subtrahieren Sie einfach die Polsterung (5 Pixel) von der Breite (dh Breite: 25 Pixel in diesem Beispiel). Es gibt viele Möglichkeiten.
  4. Es werden keine Schwimmer verwendet, sodass es überall enthalten sein kann.

Genießen.


1

.single-before {
  list-style: "👍";
  list-style-position: outside!important;
}
<ul class="single-before">
  <li> is to manifest perfection already in man.</li>
  <li> is to bring out the best facets of our students personalities.</li>
</ul>


Vielen Dank - Dies ist sehr sauber und ich habe das vergessen !important, was wichtig war, damit mein benutzerdefiniertes CSS in Blogspot funktioniert
velkoon

-2

Versuche dies

    ul.a {
        list-style-type: circle;
    }
    
    ul.b {
        list-style-type: square;
    }
    
    ol.c {
        list-style-type: upper-roman;
    }
    
    ol.d {
        list-style-type: lower-alpha;
    }
    
<!DOCTYPE html>
    <html>
    <head>
    
    </head>
    <body>
    
    <p>Example of unordered lists:</p>
    <ul class="a">
      <li>Coffee</li>
      <li>Tea</li>
      <li>Coca Cola</li>
    </ul>
    
    <ul class="b">
      <li>Coffee</li>
      <li>Tea</li>
      <li>Coca Cola</li>
    </ul>
    
    <p>Example of ordered lists:</p>
    <ol class="c">
      <li>Coffee</li>
      <li>Tea</li>
      <li>Coca Cola</li>
    </ol>
    
    <ol class="d">
      <li>Coffee</li>
      <li>Tea</li>
      <li>Coca Cola</li>
    </ol>
    
    </body>
    </html>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.