Ich habe mehrere gleiche HTML-Elemente nacheinander:
<span>1</span>
<span>2</span>
<span>3</span>
Ich suche nach der besten Möglichkeit, Platz zwischen den Elementen nur mit CSS hinzuzufügen
[no space] [1] [space 10px] [2] [space 10px] [3] [no space]
Zusätzlich:
- Bitte notieren Sie sich die Browserkompatibilität Ihrer Belege
AKTUALISIEREN
Es sieht so aus, als wäre ich unklar. Ich möchte KEIN ZUSÄTZLICHES HTML-MARKUP wie verwenden
<span></span> <span></span> <span class="last_span"></span>
Ich möchte keine Tabellen verwenden
Ich möchte, dass die erste und letzte Spanne automatisch von CSS erfasst werden
Ich möchte kein Javascript verwenden
Optionale Anforderung: Die letzte Spanne kann NICHT LETZTES KIND des übergeordneten Tags sein, aber es ist die LETZTE SPAN des übergeordneten Tags. Zwischen Spans befinden sich keine weiteren Tags.
text
span
s variabel?span
Elemente werden von dem Webdienst generiert, auf den ich keinen Zugriff habe. Ich kann das Markup also nicht ändern. Ich kann jedoch CSS vollständig nutzenAntworten:
Ein guter Weg, dies zu tun, ist folgender:
Jeder,
span
dem ein vorangestellt istspan
(also jederspan
außer dem ersten), wird habenmargin-left: 10px
.Hier ist eine detailliertere Antwort auf eine ähnliche Frage: Trennzeichen zwischen Elementen ohne Hacks
quelle
.sidebar-img + .sidebar-text { margin-left: 40px; }
Verwenden Sie einfach Rand oder Polsterung.
In Ihrem speziellen Fall könnten Sie
margin:0 10px
nur am 2. verwenden<span>
.AKTUALISIEREN
Hier ist eine schöne CSS3-Lösung ( jsFiddle ):
Erweiterte Elementauswahl unter Verwendung von Selektoren wie
:nth-child()
,:last-child
,:first-of-type
usw. unterstützt , da Internet Explorer 9.quelle
span
manuell anzugeben ? Dies sollte die Aufgabe des CSS seinmargin-left
auf die letztespan
, was nicht genau das ist, was OP wollte.span
s unddiv
s (die Blockelemente sind) verwenden wird. Ihre Lösung ist trotzdem gültig, wenn Siediv
s als Inline-Elemente definieren ...Fügen Sie diese Regeln zum übergeordneten Container hinzu:
Gute Referenz: https://cssreference.io/
Browserkompatibilität: https://gridbyexample.com/browsers/
quelle
grid-auto-columns="max-content"
kann auch nützlich sein. Dadurch wird die Größe des Rasterelements an den Inhalt angepasst. Auch die Browserkompatibilität sollte kein Problem mehr sein: caniuse.com/#feat=css-gridDas ist so einfach.
Sie können Elemente so gestalten, dass Sie das erste ausschließen, nur in einer Codezeile:
und fertig, ohne dass die Klasse manipuliert.
quelle
span.Showing ~ span.Showing
stattdessen "span.Showing + span.Showing
.~
ist der allgemeine Geschwister-Selektor, bei dem man nicht direkt einem anderen folgen muss.Sie können die Tatsache nutzen, dass
span
es sich um ein Inline-Element handeltDiese Lösung wird jedoch unterbrochen, wenn Sie mehr als ein Textwort in Ihrer Spanne haben
quelle
quelle
Sie können so schreiben:
quelle
<span>
ist ein Inline-Element, sodass Sie keinen Abstand festlegen können, ohne die Blockebene festzulegen. Versuche diesHorizontal
Vertikale
Kompatibel mit allen Browsern.
quelle
Sie sollten Ihre Elemente in einen Container einschließen , dann neue CSS3-Funktionen wie CSS- Raster und kostenlosen Kurs verwenden und dann
grid-gap:value
die für Ihr spezifisches Problem erstellten verwendenquelle
Anstatt den Rand festzulegen und ihn nicht zu überschreiben, können Sie ihn auch sofort mit der folgenden Kombination richtig einstellen:
quelle
:first-of-type
und:last-of-type
CSS-Selektoren.not
Unterstützung für Ausdrucksbrowser prüfenquelle
Wenn Sie verschiedene Elemente ausrichten möchten und an allen Seiten den gleichen Rand haben möchten, können Sie Folgendes verwenden. Jedes Element
container
, unabhängig vom Typ, erhält den gleichen umgebenden Rand.Wenn Sie Elemente in einer Reihe ausrichten möchten, das erste Element jedoch den äußersten linken Rand berührt
container
und alle anderen Elemente gleich weit voneinander entfernt sind, können Sie Folgendes verwenden:quelle