Leerzeichen in dem HTML-Quellcode
In dem HTML-Quellcode, wenn Sie Textzeilen oder Bilder haben, oder Elemente, die inline-block
sind, wenn es irgendwelche Leerzeichen zwischen ihnen (Leerzeichen, Tabulatoren sind, oder neue Zeilen), wird ein einzelnes Leerzeichen zwischen ihnen hinzugefügt, wenn die Seite gerendert wird. Zum Beispiel in der folgenden HTML, wird ein Leerzeichen zwischen jedem der vier Teilen des Inhalts erscheinen:
one
two
<img src="three.png"/>
<span style="display: inline-block;">four<span>
Dies ist sehr hilfreich für die Textzeilen, und für kleine Bilder oder HTML-Elemente, die in einer Zeile angezeigt werden von Text. Aber es wird ein Problem, wenn inline-block
für Layout-Zwecke verwendet wird, anstatt als Möglichkeit, Inhalt in einem Textabschnitt hinzuzufügen.
den zusätzlichen Platzes Entfernen
Der sicherste, Cross-Browser-Weg, um die zusätzliche 4px oder so von Raum zu vermeiden, die zwischen inline-block
Elementen hinzugefügt wird, ist jede Leerzeichen in dem HTML-Quellcode zwischen den HTML-Tags zu entfernen .
Zum Beispiel, wenn Sie ein ul
mit 3 schwebte li
tags:
<-- No space, tabs, or line breaks between </li> and <li> -->
<ul>
<li>...</li><li>...</li><li>...</li>
</ul>
Leider ist dies schadet der Wartbarkeit der Website. Abgesehen davon, dass der Code unlesbar gemacht wird, beeinträchtigt er die Trennung von Daten und Formatierung.
Wenn ein anderer Programmierer später kommt und beschließt, jedes li
Tag in eine separate Zeile im Quellcode zu setzen (nicht bewusst, warum die Tags in der gleichen Zeile waren oder möglicherweise durch HTML Tidy und nicht einmal eine Chance) (HTML-Kommentare), plötzlich hat die Website einen Formatierungsfehler, der möglicherweise schwer zu identifizieren ist.
Betrachten Schwimmelemente anstelle
Das Leerzeichen Verhalten legt nahe, dass es unangemessen sein kann inline-block
für allgemeines Layout Zwecke zu verwenden, um es für etwas anderes als Inhalt innerhalb des Strömungs eines Absatzes von Text hinzufügen .
Plus, in einigen Fällen inline-block
Inhalt ist sehr schwierig, vollständig zu stylen und auszurichten, vor allem auf älteren Browsern.
Kurze Zusammenfassung von anderen Lösungen
- Setzen Sie die enge Tag auf der gleichen Linie wie die nächsten offenen Tag, ohne Leerzeichen zwischen ihnen.
- Verwenden Sie HTML-Kommentare, um alle Leerzeichen zwischen dem geschlossenen Tag und dem nächsten offenen Tag zu füllen (wie von @Arbel vorgeschlagen).
- Fügen Sie jedem Element einen negativen linken Rand hinzu (normalerweise -3px oder -4px, basierend auf der Schriftgröße). Ich empfehle diesen besonderen Ansatz nicht.
- Setzen Sie
font-size
für das Containerelement auf 0 oder 0.01em. Dies funktioniert nicht in Safari 5 (nicht sicher über spätere Versionen), und es kann Responsive Design Websites stören, oder jede Website, die eine font-size
Einheit außer px
verwendet.
- Entfernen Sie leere Textknoten aus dem Container mithilfe von JavaScript oder jQuery. Dies funktioniert nicht in IE8 und früheren Versionen, da Textknoten in diesen Browsern nicht erstellt werden, wenn zwischen den Elementen nur Leerzeichen vorhanden sind, obwohl zwischen den Elementen noch Leerzeichen eingefügt werden.
- Set
letter-spacing
und word-spacing
für den Container (wie @PhillipWills vorgeschlagen). Further info. Dies erfordert die Standardisierung em
Größen auf der Website, die möglicherweise keine sinnvolle Option für alle Websites sein.
- Fügen Sie
text-space-collapse: discard;
dem Container hinzu (zuvor genannt). Leider wird this CSS3 style von keinem Browser unterstützt und der Standard wurde nicht vollständig definiert.
Suche nach "CSS content box model". Verknüpfen Sie außerdem http://jsfiddle.net und fügen Sie den minimalen Beispielfall in die Frage selbst ein. –
Haben Sie 'float: left' versucht? –
verwenden Sie einen Rahmen mit divs, geben Sie Ihren Code – XTGX