Historisch gesehen haben wir gelernt, width
statt left & right
zu verwenden, da IE6 nicht zugleich die beiden Eigenschaften der gleichen Achse
<div style="top:0;bottom:0;position:absolute;">modern browsers</div>
<div style="top:0;height:100%;position:absolute;">MSIE6</div>
<div style="left:0;right:0;position:absolute;">modern browsers</div>
<div style="left:0;width:100%;position:absolute;">MSIE6</div>
<div style="left:0;right:0;top:0;bottom:0;position:absolute;">modern browsers</div>
<div style="left:0;top:0;height:100%;width:100%;position:absolute;">MSIE6</div>
auch unterstützt hat, ist diese Technik nicht auf einigen Elementen arbeiten (including on modern browsers, by spec
)
<!-- these will not work -->
<!-- edit: on some browsers they may work,
but it's not standard, so don't rely on this -->
<iframe src="" style="position:absolute;top:0;bottom:0;left:0;right:0;"></iframe>
<textarea style="position:absolute;top:0;bottom:0;left:0;right:0;"></textarea>
<input type="text" style="position:absolute;left:0;right:0;">
<button ... ></button>
and possibly others... (some of these can't even be display:block)
Aber, zu analysieren, was in der normalen statischen Strömung geschieht die 012.357.258 mitEigenschaft
<div style="width:auto;padding:20px;margin:20px;background:lime;">a</div>
Sie werden sehen, es ist sehr ähnlich ist zu ...
<div style="width:auto;padding:20px;margin:20px;background:lime;
position:absolute;top:0;left:0;bottom:0;right:0;">b</div>
... gleichen Eigenschaften mit den gleichen Werten! Das ist wirklich nett! Sonst sieht es so aus:
Das ist auch anders, weil das innere div die y-Achse nicht füllt. Um dies zu beheben, benötigen wir css calc()
oder box-sizing
und unnötige Kopfschmerzen.
Meine Antwort ist, left + right | top + bottom
sind wirklich cool, da sie am nächsten an der statischen Positionierung sind width:auto
und es gibt keinen Grund, sie nicht zu verwenden. Sie sind viel einfacher zu benutzen als die Alternative und sie bieten viel mehr Funktionalität (zB margin-left
, padding-left
und left
gleichzeitig ein einzelnes Element).
left + right | top + bottom
deutlich besser von den Browsern unterstützt im Vergleich zu der alternativen width:100% + box-sizing | calc()
und es ist auch einfacher zu bedienen!
Natürlich, wenn Sie nicht brauchen (wie in Ihrem Beispiel), um das Element auch in der y-Achse zu wachsen, width:100%
einige verschachtelten Elemente für die Polsterung verwendet wird, ist es die einzige Lösung Unterstützung zur Archivierung auch für MSIE6
Also, hängt von Ihren Bedürfnissen ab. Wenn Sie MSIE6 unterstützen möchten (dies ist der einzige Grund, dies zu tun), sollten Sie with:100%
verwenden, andernfalls verwenden Sie left + right
!
In der Hoffnung, hilfreich zu sein.
Mit 'left: 0' und' right: 0' funktioniert in jedem Browser außer IE6 (und IE7 ohne den richtigen Doctype). Ich würde sagen, gehen Sie mit "links" und "rechts", da es einfacher ist, den Code auf lange Sicht zu pflegen (zum Beispiel die Größe des Containers ändern). – BenM
Ich würde mich nicht mehr um IE6-Unterstützung sorgen ... – Xarcell
Viele Leute sind immer noch gezwungen, IE6 bei der Arbeit zu verwenden, also hängt es wirklich von der Implementierung und Zielgruppe ab – Baumr