Fast immer box-sizing: border-box
kann eine Berechnungsregel ersetzt werden, wie calc(100% - 500px)
sie für das Layout verwendet wird.
Zum Beispiel:
Wenn ich folgendes Markup habe:
<div class="sideBar">sideBar</div>
<div class="content">content</div>
Anstatt dies zu tun: (Angenommen, die Seitenleiste ist 300px breit)
.content {
width: calc(100% - 300px);
}
Mach das:
.sideBar {
position: absolute;
top:0;
left:0;
width: 300px;
}
.content {
padding-left: 300px;
width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
* {
margin: 0;
padding: 0;
}
html,
body,
div {
height: 100%;
}
.sideBar {
position: absolute;
top: 0;
left: 0;
width: 300px;
background: orange;
}
.content {
padding-left: 300px;
width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: wheat;
}
<div class="sideBar">sideBar</div>
<div class="content">content</div>
PS: Ich werde nicht in IE 5.5 (hahahaha) arbeiten, aber es wird in IE8 + funktionieren, allen mobilen und allen modernen Browsern ( caniuse )
Breite Demo
Höhe Demo
Ich habe gerade diesen Beitrag aus Paul Irishs Blog gefunden, in dem er auch die Boxgröße als mögliche Alternative für einfache calc () - Ausdrücke vorführt: (fett ist meins)
Einer meiner bevorzugten Anwendungsfälle, den Border-Box gut löst, sind Spalten. Ich möchte mein Raster vielleicht mit 50% oder 20% Spalten aufteilen, aber über px oder em Auffüllen hinzufügen. Ohne das bevorstehende calc () von CSS ist dies nicht möglich ... es sei denn, Sie verwenden ein Rahmenfeld .
NB: Die obige Technik sieht tatsächlich genauso aus wie eine entsprechende calc () - Anweisung. Es gibt jedoch einen Unterschied. Wenn Sie eine calc () -Regel verwenden, ist der Wert der Breite des Inhalts div tatsächlich. 100% - width of fixed div
Bei der obigen Technik entspricht die tatsächliche Breite des Inhalts div jedoch der vollen Breite von 100%, es sieht jedoch so aus, als würde er sich füllen. die verbleibende Breite. (was wahrscheinlich gut genug ist, um die meisten Leute hier zu wollen)
Das heißt, wenn es wichtig ist, dass die Breite des Inhaltsdiv tatsächlich 100% - fixed div width
ist, kann eine andere Technik verwendet werden, die Blockformatierungskontexte verwendet (siehe hier und hier für die wichtigsten Details):
1) schweben die feste Breite div
2) setzen overflow:hidden
oderoverflow:auto
auf den Inhalt div