Ich habe in den letzten paar Stunden daran gearbeitet, und das Web und den Stackoverflow zu durchsuchen, war nicht viel Unterstützung. Wie fülle ich #gradient
und #holes
die gesamte Seite aus?
Ich habe die Funktion "Element prüfen" in Safari verwendet. Wenn ich das Körperelement hervorhole, füllt es nicht das gesamte Fenster aus.
alt text http://img534.imageshack.us/img534/9955/screenshot20100201at215.png
HTML:
<body>
<div id="gradient"></div>
<div id="holes"></div>
<div id="header">Header Text</div>
</body>
CSS:
html, body {
height:100%;
margin:0;
padding:0;
}
body {
background-image:url(../Images/Tile.png);
background-color:#7D7D7D;
background-repeat:repeat;
}
#gradient {
background-image:url(../Images/Background.png);
background-repeat:repeat-x;
position:absolute;
top:0px;
left:0px;
height:100%;
right:0px;
}
#holes {
background-image:url(../Images/Holes.png);
background-repeat:repeat;
position:absolute;
top:2px;
left:2px;
height:100%;
right:0px;
}
#header {
background-image:url(../Images/Header.png);
background-repeat:repeat-x;
position:absolute;
top:0px;
left:0px;
width:100%;
padding-top:24px;
height:49px; /* 73 - padding */
color:rgb(113, 120, 128);
font-family:Helvetica, Arial;
font-weight:bold;
font-size:24px;
text-align:center;
text-shadow:#FFF 0px 1px 0px;
}
Nun, es scheint mir, dass Ihr Element mit dem gesamten Inhalt schwebend ist. Wenn dies der Fall ist, wird der Körper nicht ausgedehnt, wenn er nicht gelöscht wird.
Beachten Sie, dass die height -Eigenschaft, die in percent angegeben ist, berechnet in Bezug auf den enthaltenden Block .. was nicht unbedingt der unmittelbare Vorfahr sein muss - "Der umschließende Block für eine positionierte Box wird durch den nächsten positionierten Vorfahren oder festgelegt Ist dies nicht der Fall, enthält die Initiale den Block " . Ich wette, dies ist der Fall des Fragestellers, da es keinen positionierten Vorfahren gibt (der mit position:
, der entweder auf relative
oder absolute
gesetzt ist).
Der "enthaltende Block" wird also in den anfänglichen enthaltenden Block aufgelöst, der den Abmessungen des Ansichtsfensters (Fensters) entspricht. Wenn Sie position:relative
auf body
setzen, wird die Höhe von body
berücksichtigt und der absolut positionierte Inhalt wird entlang von body
vollständig gestreckt.
Ich hatte das gleiche Problem. Fixiert durch Ändern der Position: absolut in Position: fest.
[update]
neuer Ansatz
Das sollte es tun ..
verwenden Sie display:table
für Ihre 2 Elemente. (funktioniert in meinen Tests). (aber Sie müssen jetzt Breitenwerte zuweisen ..
Ich bin mir jedoch nicht sicher, ob Sie verschachtelte Elemente als Tabellenzellen usw. definieren sollten.
Versuchen Sie es doch einmal ..
#gradient
und #holes
folgendes ausprobiert?#gradient {
height:auto!important;
height:100%;
min-height:100%;
..
..
}
#holes{
height:auto!important;
height:100%;
min-height:100%;
..
..
}
$('div.class').css({'height':(($(document).height()))+'px'});
Hast du versucht, das so einzurichten?
#holes {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
Streckt das Element so, dass es den gesamten Seitenbereich ausfüllt
Am besten verwenden Sie Javascript. min-height wird nicht von jedem Browser unterstützt.
Javascript mit Prototyp:
<script type="text/javascript">
var height = $(document.body).getHeight();
document.write('<div id="yourdiv" style="height:'+height+'px;width:100%;"></div>');
</script>
Wenden Sie die CSS-Stile auf #gradient & #holes an und fügen Sie das Skript nach Ihrem DIV ein.
.background-overlay{
position: absolute;
left: 0;
right: 0;
z-index: -1;
}
<body>
<div id="gradient"></div>
<div id="holes"></div>
<script type="text/javascript">
$(document).ready(function() {
var bodyHeight = $("body").height();
$('#gradient,#holes').height(bodyHeight);
})
</script>
<div id="header">Header Text</div>
Ich denke, du hast es richtig gemacht. Dies funktioniert in Chrome (auch WebKit!) Und in IE7/8/Quirks, wenn Sie width setzen: 100% für #gradient und #holes. Safari kann auf Mac derzeit nicht getestet werden (nur zu Hause), aber theoretisch Sie sollten es richtig sehen.
Das heißt, vielleicht ist das eine Doctype-Sache, versuchen Sie es mit anderen?
Um ehrlich zu sein, denke ich, overflow:auto
meine Inhalte, so dass die gesamte Seite nicht durchlaufen werden muss