div avec la dynamique min-hauteur en fonction de la hauteur de la fenêtre du navigateur
J'ai trois div
éléments: l'un comme en-tête, comme un pied de page, et le contenu du centre de div
.
la div
dans le centre de l'augmenter automatiquement avec le contenu, mais je voudrais un min-height
tels que le fond div
toujours au moins atteint le bas de la fenêtre, mais n'est pas fixe, il y a sur les pages plus longues.
Par exemple:
<div id="a" style="height: 200px;">
<p>This div should always remain at the top of the page content and should scroll with it.</p>
</div>
<div id="b">
<p>This is the div in question. On longer pages, this div needs to behave normally (i.e. expand to fit the content and scroll with the entire page). On shorter pages, this div needs to expand beyond its content to a height such that div c will reach the bottom of the viewport, regardless of monitor resolution or window size.
</div>
<div id="c" style="height: 100px;">
<p>This div needs to remain at the bottom of the page's content, and scroll with it on longer pages, but on shorter pages, needs to reach the bottom of the browser window, regardless of monitor resolution or window size.</p>
</div>
InformationsquelleAutor Bryan | 2011-09-23
Vous devez vous connecter pour publier un commentaire.
Il suffit de regarder pour mon solution sur jsfiddle, il est basé sur csslayout
CSS:
HTML:
padding-bottom: 50px
parce que mon pied de page a été 50px de haut.J'ai trouvé cette courtoisie de ryanfait.com. C'est en fait très simple.
Afin de faire flotter un pied de page en bas de la page lorsque le contenu est plus courte que la fenêtre-hauteur, ou sur le fond du contenu lorsqu'il est plus long que la hauteur, utiliser le code suivant:
HTML de base structure:
Remarque: Rien ne doit être placé en dehors de la '#content' et '#footer' divs, sauf si elle est en position absolue.
Remarque: Rien ne doit être placé à l'intérieur de la '#push' div comme il sera caché.
Et le CSS:
À faire les en-têtes ou pieds de page durée de la largeur d'une page, vous devez absolument la position de l'en-tête.
Remarque: Si vous ajoutez une page à largeur de l'en-tête, j'ai trouvé nécessaire d'ajouter un adaptateur supplémentaire div #contenu. L'extérieur div contrôles espacement horizontal tandis que l'intérieur div contrôles de l'espacement vertical. On m'a demandé de le faire, car j'ai trouvé que " min-height:' ne fonctionne que sur le corps d'un élément et qui ajoute un rembourrage à la hauteur.
*Edit: point-virgule manquant
min-height
au lieu deheight
pourhtml, body
, parce que sinon il ne serait pas étirer l'arrière-plan de site complet de la hauteur, si le contenu de débordement sur la fenêtre de la taille d'Si
#top
et#bottom
ont hauteurs fixes, vous pouvez utiliser:mise à jour
Si vous voulez
#central
pour étirer vers le bas, vous pouvez:calc()
;min-height
.Avec
calc()
:Avec jQuery il pourrait être quelque chose comme:
#central
- delà de son contenu...ça va?Pas de piratage ou js nécessaires. Il suffit d'appliquer la règle suivante à la racine de votre élément:
Il va automatiquement choisir le plus grand des deux, comme sa hauteur, ce qui signifie que si le contenu est plus long que le navigateur, il sera a la hauteur du contenu, sinon, la hauteur du navigateur. C'est la norme css.
Comme mentionné ailleurs, la fonction CSS calc() peut fonctionner bien ici. C'est maintenant la plupart du temps pris en charge. Vous pouvez utiliser comme:
calc
méthode est vraiment utile. merci pour le partage.Vous probablement avoir à écrire du JavaScript, car il n'y a aucun moyen d'estimer la hauteur de tous les utilisateurs de la page.
Il est difficile de le faire.
Il y a un
min-height:
de style css, mais ça ne fonctionne pas dans tous les navigateurs. Vous pouvez l'utiliser, mais le plus gros problème, c'est que vous aurez besoin de mettre quelque chose comme 90% ou des chiffres comme ça (en pourcentage), mais le haut et le bas de la vrd utiliser des tailles de pixel, et vous ne serez pas en mesure de les concilier.Je sais
a
etc
ont hauteurs fixes, mais je plutôt de mesurer dans le cas où ils changer plus tard.Aussi, je suis à la mesure de la hauteur de
b
(je ne veux pas faire est de taille après tout), mais si il y a une image qui n'a pas la charge de la hauteur peut changer, donc attention à des choses comme ça.Il peut être plus sûr de le faire:
Qui ajoute simplement un élément div avec la bonne hauteur - qui agit efficacement comme min-height, même pour les navigateurs qui ne l'ont pas fait. (Vous pouvez ajouter l'élément dans votre balisage, et puis il suffit de contrôler la hauteur de celui-ci via javascript au lieu de faire également l'ajout de cette façon, de cette façon, vous pouvez prendre cela en compte lors de la conception de la mise en page.)
min-height:
de la propriété et de la façon dont ie n'aime pas jouer gentiment (c'est pourquoi j'utilise chrome), mais je sais que vous pouvez utiliser longueurs fixes avecmin-height:
.<SCRIPT type="text/javascript">CODE GOES HERE</SCRIPT>
placé dans la section d'en-tête du code html. Mais vous aurez besoin d'une deuxième balise de script pour la bibliothèque jQuery avant qu'il fonctionne.)height: 100%;
.