Ich habe eine (XHTML Strict) Seite, auf der ich ein Bild neben regulären Textabschnitten schwebe. Alles geht gut, außer wenn eine Liste anstelle von Absätzen verwendet wird. Die Aufzählungszeichen der Liste überlappen das schwebende Bild.
Das Ändern des Randes der Liste oder der Listenelemente hilft nicht. Der Rand wird von der linken Seite berechnet, aber der Schwimmer drückt die Listenelemente nach rechts innerhalb der li
selbst. Der Rand hilft also nur, wenn ich ihn breiter als das Bild mache.
Das Schweben der Liste neben dem Bild funktioniert auch, aber ich weiß nicht, wann sich die Liste neben einem Float befindet. Ich möchte nicht jede Liste in meinem Inhalt schweben lassen, nur um dies zu beheben. Wenn Sie nach links schweben, wird das Layout durcheinander gebracht, wenn ein Bild nach rechts statt nach links in der Liste verschoben wird.
Durch die Einstellung werden li { list-style-position: inside }
die Aufzählungszeichen zusammen mit dem Inhalt verschoben, aber es wird auch veranlasst, dass Zeilen, die umbrochen werden, mit dem Aufzählungszeichen ausgerichtet werden, anstatt mit der obigen Zeile ausgerichtet zu werden.
Das Problem wird offensichtlich dadurch verursacht, dass die Kugel außerhalb der Box gerendert wird und der Schwimmer den Inhalt der Box nach rechts drückt (nicht die Box selbst). So gehen IE und FF mit der Situation um und soweit ich weiß, nicht falsch gemäß Spezifikation. Die Frage ist, wie kann ich das verhindern?
Hinzufügen einer Verbesserung zu Glen E. Iveys Lösung :
http://jsfiddle.net/mblase75/TJELt/
Ich bevorzuge diese Technik, da sie funktioniert, wenn die Liste um das schwebende Bild herum fließen muss, während die
overflow: hidden
Technik dies nicht tut. Es ist jedoch auch notwendig, die zu ergänzen, umpadding-right: 1em
zu verhindernli
, dass sie ihren Behälter überlaufen.quelle
position: relative;
, entsteht ein Stapelproblem mit dem schwebenden Inhalt. Ich habe festgestellt (in Chrome und Firefox), dass es schwierig ist, mit dem Mauszeiger über Links im schwebenden Inhalt zu klicken. Die Lösung für mich bestand darinposition: relative; z-index: 1;
, das schwebende Element zu erweitern, wodurch das Stapelproblem behoben zu werden schien.ul {overflow: hidden;}
dieses Problem in allen Browsern behoben wurde, war die obige Lösung das einzige funktionierende Mittel gegen dieses Problem mit Prince XML , einem Konverter von XHTML + CSS3 in PDF.Hier kommt die Eigenschaft "display" zur Geltung. Stellen Sie das folgende CSS ein, damit die Liste neben dem schwebenden Inhalt funktioniert.
Anzeige: Tabelle; arbeitet neben schwebenden Inhalten (füllt die Lücke), ohne jedoch Inhalte dahinter zu verbergen. Ähnlich wie ein Tisch :-)
BEARBEITEN: Denken Sie daran, eine Klasse hinzuzufügen, um zu isolieren, für welche Listen Sie dies tun möchten. ZB "ul.in-content" oder allgemeiner ".content ul"
quelle
Versuchen Sie es mit list-style-position: inside , um das Layout der Aufzählungszeichen zu ändern.
quelle
list-style-position:inside
Dies wäre eine großartige Lösung, führt jedoch dazu, dass Linien, die umbrochen werden, mit dem Aufzählungszeichen ausgerichtet werden, anstatt mit der obigen Linie ausgerichtet zu werden.Unter http://archivist.incutio.com/viewlist/css-discuss/106382 habe ich einen Vorschlag gefunden, der für mich funktioniert hat: Gestalten Sie die 'li'-Elemente mit:
Wo Sie "1em" durch die Breite des linken Abstandes / Randes ersetzen, den Ihre Listenelemente hätten, wenn der Float nicht vorhanden wäre. Dies funktioniert in meiner Anwendung hervorragend, selbst wenn der untere Teil des Gleitkommas in der Mitte der Liste liegt - die Aufzählungszeichen werden wieder auf den (lokalen) linken Rand genau nach rechts verschoben.
quelle
Warum
overflow: hidden
funktioniertDie Lösung ist so einfach wie:
Ein
overflow:
anderes Blockfeld als erstelltvisible
einen neuen Blockformatierungskontext für seinen Inhalt. W3C-Empfehlung: http://www.w3.org/TR/CSS2/visuren.html#block-formattingBeispiel
Die Schaltflächen auf meiner Website , die sich
<li>
verkleiden, sind wie folgt gestaltet. Verkleinern Sie das Ansichtsfenster (Fenster) Ihres Browsers, um den Einzug in Aktion zu sehen .Verwandte Antworten
Artikel mit Beispielen
quelle
Durch Hinzufügen
overflow: auto;
zu Ihremul
Sie zumindest für mich Werken .Aktualisieren
Ich habe meine jsfiddle aktualisiert, um zu visualisieren, was los ist. Wenn Sie das
ul
neben dem Floating habenimg
, wird der Inhalt desul
vom Float verschoben, nicht jedoch vom eigentlichen Container. Durch Hinzufügenoverflow: auto
der gesamtenul
Box wird der Float anstelle nur des Inhalts verschoben.quelle
Sie könnten zuweisen
position: relative; left: 10px;
zu demli
. (Möglicherweise möchten Sie es zusätzlich mit einem versehenmargin-right: 10px;
, da es sonst auf der rechten Seite zu breit wird.)Oder wenn Sie
float
für dieul
- wie von anderen vorgeschlagen - verwenden möchten, können Sie wahrscheinlich verhindern, dass der Rest rechts von der Ul schwebt, indem Sieclear: left
das Element verwenden, das der Ul folgt.quelle
Ich benutze dies, um dieses Problem zu lösen:
quelle
Haftungsausschluss
Listen neben schwebenden Elementen verursachen Probleme. Meiner Meinung nach besteht der beste Weg, um diese Art von schwebenden Problemen zu vermeiden, darin, schwebende Bilder zu vermeiden, die sich mit Inhalten überschneiden. Dies ist auch hilfreich, wenn Sie Responsive Design unterstützen müssen.
Ein einfaches Design mit zentrierten Bildern zwischen Absätzen sieht sehr attraktiv aus und ist viel einfacher zu unterstützen als der Versuch, zu ausgefallen zu werden. Es ist auch einen Schritt von einem entfernt
<figure>
.Aber ich möchte wirklich schwebende Bilder!
Ok, wenn Sie
verrücktgenug sind, um diesen Weg fortzusetzen, gibt es ein paar Techniken, die verwendet werden können.Am einfachsten ist die Liste Gebrauch zu machen
overflow: hidden
oderoverflow: scroll
so , dass die Liste im Wesentlichen eingeschrumpft , welche auf die Polsterung zurück zieht , wo es nützlich ist :Diese Technik hat jedoch einige Probleme. Wenn die Liste lang wird, wird sie nicht wirklich um das Bild gewickelt, was den gesamten Zweck der Verwendung
float
auf dem Bild ziemlich zunichte macht.Aber ich möchte wirklich Listen einpacken!
Ok, wenn Sie noch
verrückterund hartnäckiger sind und diesen Weg unbedingt fortsetzen müssen , gibt es eine andere Technik, mit der Sie die Listenelemente umschließen und Aufzählungszeichen verwalten können.Anstatt das aufzufüllen
<ul>
und zu versuchen, es dazu zu bringen, sich gut mit Kugeln zu verhalten (was es anscheinend nie zu wollen scheint), nehmen Sie diese Kugeln vom<ul>
und nehmen Sie sie dem<li>
s. Kugeln sind gefährlich und die<ul>
einfach nicht verantwortlich genug, um sie richtig zu handhaben.Dieses Umhüllungsverhalten kann bei komplexen Inhalten seltsame Dinge bewirken, daher empfehle ich nicht, es standardmäßig hinzuzufügen. Es ist viel einfacher, es als etwas einzurichten, für das man sich entscheiden kann, als als etwas, das überschrieben werden muss.
quelle
Versuchen Sie Folgendes auf Ihrem UL-Tag. Dies sollte sich um die Kugeln kümmern, die Ihr Bild überlagern, und Sie müssen Ihre durch verursachte Linksausrichtung nicht durcheinander bringen
list-position: inside
.quelle
Ich habe selbst damit gekämpft. Das Beste, was ich geschafft habe, ist Folgendes:
Der Text ist nicht wirklich eingerückt, aber die Kugel zeigt.
quelle
Bearbeitet, um basierend auf dem Kommentar von OP zu aktualisieren
ok, dann zerlege es einfach in 2 zusammen verschachtelte Divs
Versuchen Sie, die ul li css auf zu ändern
ul {float: left; Hintergrund: blau; }}
quelle
Nachdem ich in mehreren Projekten mit diesem interessanten Problem gekämpft und untersucht habe, warum es passiert, glaube ich endlich, dass ich beides gefunden habe: eine funktionierende und eine reaktionsschnelle Lösung.
Hier ist der Zaubertrick, Live-Beispiel: http://jsfiddle.net/superKalo/phabbtnx/
quelle
display: flex;
zuli
, so dass die vertikal Bulletpoint zentriert ist, wenn ich die Schriftgröße des ändern:before
Teil.Bei der Arbeit in einem LMS ohne Zugriff auf den Dokumentenkopf war es einfacher,
margin-right: 20px
einen Inline-Stil für das Bild zu verwenden. Was ich dieser Seite schulde .quelle
Versuche dies:
Wenn Sie möchten, dass sie nach links gehen, geben Sie einfach einen - ## px-Wert ein.
quelle
oder Sie könnten dies tun:
und dann entfernen Sie das gesamte Styling von der li
quelle
Wie wäre es damit?
quelle
Rand-Links: Auto bewirkt, dass das Element selbst rechtsbündig ausgerichtet wird. Stellen Sie die Höhe und Breite des gewünschten Elements ein - in meinem Fall handelt es sich um ein Hintergrundbild in einem Div im Inneren
quelle
Sie können auch versuchen, das
ul
nach links zu schweben und ein geeignetes zu definierenwidth
zu , damit sie neben dem Bild schwebt.So etwas wie diese Geige ?
quelle
Ich habe es mit behoben
quelle
quelle
Hinzufügen
display:table;
zuul
:quelle