Ich habe eine Seite mit einer Zeile von ca. 10 img
s. Zur besseren Lesbarkeit des HTML-Codes möchte ich zwischen jedem img
Tag einen Zeilenumbruch einfügen, aber dadurch wird ein Leerzeichen zwischen den Bildern gerendert, was ich nicht möchte. Kann ich etwas anderes tun, als in der Mitte der Tags zu brechen, anstatt zwischen ihnen?
Bearbeiten: Hier ist ein Screenshot von dem, was ich bisher habe. Ich möchte, dass die Bilder des Buchrückens in zufälligen Kombinationen mit PHP angezeigt werden. Deshalb brauche ich separate img
Tags.
{strip}
. Andere Template-Engines sollten ähnliche Tags haben.Antworten:
Sie könnten CSS verwenden. Wenn Sie display: block oder float: links auf den Bildern einstellen, können Sie Ihren eigenen Abstand definieren und den HTML-Code nach Ihren Wünschen formatieren, das Layout jedoch auf eine Weise beeinflussen, die möglicherweise angemessen ist oder nicht.
Andernfalls handelt es sich um Inline-Inhalte, sodass die HTML-Formatierung wichtig ist, da sich die Bilder effektiv wie Wörter verhalten.
quelle
Entschuldigung, wenn dies alt ist, aber ich habe gerade eine Lösung gefunden.
Versuchen Sie, den
font-size
Wert auf 0 zu setzen. Daher sind die Leerzeichen zwischen den Bildern 0 breit und die Bilder sind nicht betroffen.Ich weiß nicht, ob dies in allen Browsern funktioniert, aber ich habe es mit Chromium und einigen
<li>
Elementen mit versuchtdisplay: inline-block;
.quelle
em
Einheiten verwenden , beschädigt werden .font-size
Sie den Wert auf 0 setzen, können Sie dasem
Gerät nach diesem Zeitpunkt nicht mehr für skalierbares Design verwenden. Für manche Menschen ist diese Antwort nutzlos.Sie könnten Kommentare verwenden.
Ich würde mir allerdings Sorgen um die Semantik machen, eine Reihe von Bildern nebeneinander zu haben.
quelle
font-size:0
ist in vielen Fällen schrecklich, weil Sie die Erbschaft verlieren. Ja, Sie könntenrem
Einheiten verwenden, aber dennoch werden Ihre Medienabfragen die Funktion für dieses Element stoppen und Sie müssen sie alle ändernSie haben zwei Möglichkeiten, ohne ungefähre Aufgaben mit CSS zu erledigen. Die erste Option besteht darin, Javascript zu verwenden, um nur untergeordnete Leerzeichen aus Tags zu entfernen. Eine schönere Option ist jedoch die Tatsache, dass Leerzeichen in Tags vorhanden sein können, ohne dass diese eine Bedeutung haben. Wie so:
quelle
Flexbox kann dieses alte Problem leicht beheben:
Weitere Informationen zu Flexbox: https://css-tricks.com/snippets/css/a-guide-to-flexbox/
quelle
{ flex-direction: row; flex-wrap: nowrap; }
könnte für mehr Lesbarkeit hinzugefügt werden.flex-direction: row
undflex-wrap: nowrap
sie sind sowieso die Standardeinstellung. Halten Sie es einfach ist in der Regel am besten! Außerdem wird der Benutzer in den meisten Fällen tatsächlich dies wünschenflex-wrap: wrap
.Nach viel zu viel Recherche, Versuch und Irrtum habe ich einen Weg gefunden, der gut zu funktionieren scheint und bei dem die Schriftgröße für die untergeordneten Elemente nicht manuell neu eingestellt werden muss, sodass ich eine standardisierte em-Schriftgröße für das gesamte Dokument habe .
In Firefox ist dies ziemlich einfach. Legen Sie einfach
word-spacing: -1em
das übergeordnete Element fest. Aus irgendeinem Grund ignoriert Chrome dies (und soweit ich es getestet habe, ignoriert es den Wortabstand unabhängig vom Wert). Abgesehen davon füge ichletter-spacing: -.31em
den Eltern undletter-spacing: normal
den Kindern hinzu. Dieser Bruchteil eines Em ist NUR WENN die Größe Ihres Em standardisiert ist . Firefox ignoriert seinerseits negative Werte für den Buchstabenabstand, sodass es nicht zum Wortabstand hinzugefügt wird.Ich habe dies auf Firefox 13 (Win / Ubuntu, 14 auf Android), Google Chrome 20 (Win / Ubuntu), Android Browser auf ICS 4.0.4 und IE 9 getestet. aber ich weiß es nicht wirklich ...
Hier ist eine Demo http://jsbin.com/acucam
quelle
word-spacing: -1em
Stil scheint Wörter in der aktuellen Version von Chrome überlappen zu lassen.Ich bin zu spät (ich habe gerade eine Frage gestellt und finde sie in einem verwandten Abschnitt dünn), aber ich denke, Anzeige: Tabellenzelle; ist eine bessere Lösung
Das einzige Problem ist, dass es unter IE 7 und früheren Versionen nicht funktioniert, aber das kann mit einem Hack behoben werden
quelle
display: table-*
semantisch und lesen vor, als würde der Benutzer in einer Tabelle navigieren.Verwenden Sie das CSS-Stylesheet, um dieses Problem wie im folgenden Code zu lösen.
Alternativtext http://rabu4g.bay.livefilestore.com/y1pWoAOBMiLumd2iQTAreYjQCDIkHImh2g_b2g9k4AnxtDNrCjvzL6bK7skG8QKMRNWkMG7N8e5Xm7pgle3Gn
Testen auf Firefox 3.5 Final!
PS. Ihr HTML sollte dies gefallen.
quelle
Nicht wirklich. Da
<img>
s Inline-Elemente sind, werden Leerzeichen zwischen diesen Elementen vom HTML-Renderer als echte Leerzeichen in Text betrachtet. Redundante Leerzeichen (und Zeilenumbrüche) werden abgeschnitten, einzelne Leerzeichen werden jedoch in die Zeichendaten des Textelements eingefügt.Das Positionieren der
<img>
Tags kann dies absolut verhindern, aber ich würde davon abraten, da dies bedeuten würde, jedes der Bilder manuell auf ein Pixelmaß zu positionieren, was eine Menge Arbeit bedeuten kann.quelle
Eine andere Lösung wäre die Verwendung unkonventioneller Zeilenumbrüche an Stellen von Räumen. Dies ähnelt den ersten paar Antworten und ist eine alternative Möglichkeit, Elemente auszurichten. Es ist auch eine Super-Edge-Optimierungstechnik, da Leerzeichen in Ihrem Markup durch Wagenrückläufe ersetzt werden.
Beachten Sie, dass in keinem dieser Codes Leerzeichen enthalten sind. Stellen, an denen normalerweise Leerzeichen in HTML verwendet werden, werden durch Zeilenumbrüche ersetzt. Es ist weniger ausführlich als die Verwendung von Kommentaren und Leerzeichen, wie von Paul de Vrieze empfohlen.
Dank an tech.co für diesen Ansatz.
quelle
Leerraum: initial; Funktioniert bei mir.
quelle
Das Leerzeichen zwischen den Elementen wird vom HTML-Editor nur zu visuellen Formatierungszwecken dort abgelegt. Sie können jQuery verwenden, um das Leerzeichen zu entfernen:
Dadurch werden die untergeordneten Elemente entfernt und verbleibende Leerzeichen gelöscht, bevor die untergeordneten Elemente wieder hinzugefügt werden.
Im Gegensatz zu den anderen Antworten auf diese Frage stellt die Verwendung dieser Methode sicher, dass das geerbte CSS
display
und die geerbtenfont-size
Werte beibehalten werden. Es gibt auch keine Notwendigkeit zu verwendenfloat
und die umständlicheclear
, die dann erforderlich ist. Natürlich müssen Sie jQuery verwenden.quelle
Persönlich mag ich die akzeptierte Antwort, dass es keinen genauen Weg gibt, dies zu tun, ohne einen Trick irgendeiner Form anzuwenden.
Für mich ist es ein ärgerliches Problem, bei dem Sie manchmal eine Stunde damit verschwenden können, sich zu fragen, warum beispielsweise eine Reihe von Kontrollkästchen nicht alle richtig ausgerichtet sind. Daher musste ich schnell bei Google und mir selbst überprüfen, ob es eine CSS-Regel gab das habe ich nicht erinnert ... aber scheint nein :(
Was die nächstbeste Antwort auf die Verwendung der Schriftgröße betrifft ... für mich ist dies ein böser Hack, der Sie später beißen wird, wenn Sie sich fragen, warum Ihr Text nicht angezeigt wird.
Ich entwickle im Allgemeinen viel mit PHP und wenn ich ein Raster von Kontrollkästchen generiere, beseitigt der von PHP generierte Inhalt dieses Problem, da keine Abstände / Unterbrechungen eingefügt werden.
Ich würde einfach vorschlagen, entweder die Bilder in einer einzigen Zeile zusammen zu bearbeiten oder ein serverseitiges Skript zu verwenden, um den Inhalt / die Bilder zu generieren.
quelle
Anstatt ein CR / LF zwischen Elementen zu entfernen, verwende ich die SGML-Verarbeitungsanweisung, da Minifahrer häufig die Kommentare entfernen, nicht jedoch den XML-PI. Wenn der PHP-PI von PHP verarbeitet wird, hat dies den zusätzlichen Vorteil, dass der PI zusammen mit dem dazwischen liegenden CR / LF vollständig entfernt wird, wodurch mindestens 8 Bytes eingespart werden. Sie können einen beliebigen gültigen Befehlsnamen verwenden, z. B. zwei Bytes in X (HT) ML speichern.
quelle
Inspiriert von Quentins Antwort können Sie auch das schließende> neben dem Anfang des nächsten Tags platzieren.
quelle
Wäre es semantisch gesehen nicht am besten, eine geordnete oder ungeordnete Liste zu verwenden und sie dann mithilfe von CSS entsprechend zu gestalten?
Mit CSS können Sie dies nach Ihren Wünschen gestalten und das Leerzeichen zwischen den Büchern entfernen.
quelle