Wenn ein untergeordnetes element überläufe horizontal, warum ist die richtige Polsterung von den Eltern ignoriert?
Gegeben, diese einfache Struktur:
<div id="parent">
<div id="child">Lorem ipsum</div>
</div>
mit diesem CSS:
#parent {
width: 200px;
height: 200px;
padding: 20px;
overflow-x: scroll;
}
#child {
width: 500px;
}
Live-demo: http://jsfiddle.net/523me/5/
Beachten Sie, dass die Eltern eine 20px
Polsterung und, dass das Kind überläufe horizontal (weil es breiter ist). Wenn Sie Bildlauf im übergeordneten ganzen Weg auf der rechten Seite, werden Sie sehen, dass das Kind berührt den rechten Rand des übergeordneten Elements.
So, die Eltern sollten das Recht haben, die Polsterung, aber es wird ignoriert. Es scheint, dass, wenn das Kind hat eine Feste Breite, die richtige Polsterung der Eltern nicht gelten. (Ist dies angegeben durch eine Norm? Ich würde es gerne wissen. Bitte lassen Sie mich wissen, wenn Sie nichts finden!)
Gibt es eine Möglichkeit zu zwingen, die richtige Polsterung ist in diesem Szenario angewendet ohne mit zu entfernen, die Elemente aus dem Fluss (durch floating oder positioning)?
Abbildung 1 - Die richtige Polsterung wird ignoriert. Dies ist, wie alle aktuelle Browser Verhalten.
Abbildung 2 - rechts Polsterung gilt. Dies ist, was ich versuche zu erreichen. (Btw, der screenshot ist von IE7, das ist der einzige browser, der nicht zu ignorieren, die rechts-Polsterung.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du leidest unter diese problem.
Ich würde es lösen, indem Sie eine Marge, um das Kind (und nicht eine Polsterung der Eltern):
CSS:
HTML:
inline-block
zu arbeiten, alsblock
tut es nicht, aber man würde denken, es würde. +1 für den link, zeigt die Forschung.block
und sein Kumpelinline-block
teilen sollte alle seine box-Modell-Eigenschaften und unterscheiden sich nur durch inline-block Weg, nicht behindern Seite, die Strömung und die Vermischung mit inline-Zeug. Würde ich sicherlich gerne, um herauszufinden, mehr über dieses bestimmte Verhalten.min-width
.display
ist eine riesige graue Fläche, von der Spezifikation bis zu Ihrer Umsetzung in Browsern.inline-block
Felsen so viel wie es saugt. Wenn Sie spielen, um mitwhite-space
Sie können auch das erwartete Verhalten. Wieder Grau-Bereich!Weiß nich aber hinzufügen:
Scheint es fix: http://jsfiddle.net/523me/6/
Habe ich nur getestet in der neuesten Chrome, kann nicht cross-browser -
:(
Nein, die Polsterung ist nicht ignoriert, aber es ist immer noch in der übergeordneten.
Sehen aktualisiert jsFiddle, wo Sie sehen können, dass die Polsterung hat sich nicht bewegt von seiner ursprünglichen position.
Edit: Hm, gibt es einige Auffälligkeiten. Wenn Sie geben dem inneren div ein rechten Rand, das wird genauso ignoriert. Hm. Upvoting Ihre Frage stellen.
Könnten Sie ändern die Polsterung um eine Grenze.
zu
Gelten padding-right zum überlaufen-element selbst, und bewegen Sie den hintergrund, um seine direkt untergeordneten element.
http://jsfiddle.net/523me/9/