Grundsätzlich haben Sie Ihrem Code mehr Unordnung hinzugefügt, was zu mehr Verwirrung führt. Daher versuche ich zunächst, Unordnung zu beseitigen, die das Verständnis des eigentlichen Problems behindert.
Zunächst müssen wir feststellen, was die eigentliche Frage ist.
Deshalb wird das inline-block
Element " " nach unten gedrückt.
Jetzt beginnen wir es zu verstehen und beseitigen zuerst die Unordnung.
1 -
Warum nicht allen drei Divs die gleiche Randbreite geben?
Lass es uns geben.
2 - Hat das Floating-Element eine Verbindung zum Inline-Block-Element, das nach unten gedrückt wird? Nein, das hat nichts damit zu tun.
Also haben wir dieses Div komplett entfernt . Und Sie erleben dasselbe Verhalten, wenn das Inline-Block-Element nach unten gedrückt wird.
Hier ist die Literatur an der Reihe , die Idee von Zeilenumbrüchen zu verstehen und wie sie in derselben Zeile angeordnet sind. Lesen Sie den letzten Absatz sorgfältig durch, da dort die Antwort auf Ihre Frage liegt.
Die Basislinie eines 'Inline-Blocks' ist die Basislinie seines letzten Zeilenfelds im normalen Fluss, es sei denn, es hat entweder keine In-Flow-Zeilenfelder oder seine 'Überlauf'-Eigenschaft hat einen anderen berechneten Wert als' sichtbar 'in In diesem Fall ist die Grundlinie die untere Randkante.
Wenn Sie sich über die Grundlinie nicht sicher sind, finden Sie hier eine kurze Erklärung in einfachen Worten.
Alle Zeichen außer 'gjpqy' werden auf die Grundlinie geschrieben. Sie können sich die Grundlinie so vorstellen, als ob Sie eine einfache horizontale Linie zeichnen, die der Unterstreichung direkt unter diesen "zufälligen Zeichen" entspricht. Dann ist dies die Grundlinie, aber wenn Sie jetzt eines von 'gjpqy' schreiben. Zeichen in derselben Zeile, dann würde der untere Teil dieser Zeichen unter die Zeile fallen.
Wir können also sagen, dass alle Zeichen außer 'gjpqy' vollständig über der Grundlinie geschrieben sind, während ein Teil dieser Zeichen unter der Grundlinie geschrieben ist.
3 - Warum nicht überprüfen, wo sich die Basislinie unserer Linie befindet? Ich habe einige Zeichen hinzugefügt , die die Grundlinie unserer Linie zeigen.
4 - Warum nicht auch einige Zeichen in unsere Divs einfügen, um ihre Basislinien im Div zu finden? Hier werden einige Zeichen in divs hinzugefügt, um die Grundlinie zu verdeutlichen .
Wenn Sie sich mit der Grundlinie vertraut gemacht haben, lesen Sie die folgende vereinfachte Version über die Grundlinie von Inline-Blöcken.
i) Wenn für den fraglichen Inline-Block die Überlaufeigenschaft auf sichtbar gesetzt ist (dies ist standardmäßig so, dass keine Einstellung erforderlich ist). Dann wäre seine Grundlinie die Grundlinie des enthaltenden Linienblocks.
ii) Wenn für den fraglichen Inline-Block die Überlaufeigenschaft auf ANDERE ALS sichtbar gesetzt ist. Dann würde sich sein unterer Rand auf der Grundlinie der Zeile des enthaltenen Kastens befinden.
Schauen Sie sich das jetzt noch einmal an, um Ihr Konzept zu verdeutlichen, was mit green div passiert . Wenn noch Verwirrung herrscht, werden hier weitere Zeichen in der Nähe von grünem Div hinzugefügt, um die Grundlinie des enthaltenen Blocks festzulegen, und die grüne Grundlinie wird ausgerichtet.
Nun, ich behaupte jetzt, dass sie die gleiche Grundlinie haben? RICHTIG?
5 - Warum überlappen Sie sie dann nicht und prüfen Sie, ob sie richtig zueinander passen? Also bringe ich den dritten Teil links: 35px; um zu überprüfen, ob sie jetzt die gleiche Grundlinie haben ?
Jetzt haben wir unseren ersten Punkt bewiesen.
Nun, nach der Erklärung des ersten Punktes ist der zweite Punkt leicht verdaulich und Sie sehen, dass der untere Rand des ersten Divs, dessen Überlaufeigenschaft auf nicht sichtbar (versteckt) eingestellt ist, auf der Basislinie der Linie liegt.
Jetzt können Sie einige Experimente durchführen, um dies weiter zu veranschaulichen.
- Stellen Sie den ersten Div-Überlauf ein: sichtbar (oder entfernen Sie ihn ganz) .
- Stellen Sie den zweiten Div-Überlauf ein: nicht sichtbar .
- Stellen Sie beide divs Überlauf: andere als sichtbar .
Bringen Sie jetzt Ihre Unordnung zurück und sehen Sie, ob alles für Sie in Ordnung ist.
- Bringen Sie Ihr schwebendes Div zurück (natürlich muss
die Körperbreite vergrößert werden). Sie sehen, dass es keine Wirkung hat.
- Bringen Sie die gleichen ungeraden Ränder zurück .
- Setzen Sie grünes Div auf Überlauf: sichtbar, wie Sie es in Ihrer Frage festgelegt haben (diese Fehlausrichtung ist auf die Vergrößerung der Rahmenbreite von 1 Pixel auf 5 Pixel zurückzuführen. Wenn Sie also das negative Links links anpassen, sehen Sie, dass es kein Problem gibt).
- Nun zusätzliche Zeichen entferne ich zu Hilfe hinzugefügt zu verstehen . (und natürlich das negative linke entfernen)
- Reduzieren Sie schließlich die Körperbreite, da wir keine breitere mehr benötigen.
Und jetzt sind wir wieder da, wo wir angefangen haben.
Hoffentlich habe ich deine Frage beantwortet.