Dans le balisage ci-dessous, j'essaie de faire en sorte que la division de contenu s'étire jusqu'au bas de la page, mais elle ne s'étire que s'il y a du contenu à afficher. La raison pour laquelle je veux faire cela est que la bordure verticale apparaît toujours en bas de la page même s'il n'y a aucun contenu à afficher.
Voici mon HTML :
<body>
<form id="form1">
<div id="header">
<a title="Home" href="index.html" />
</div>
<div id="menuwrapper">
<div id="menu">
</div>
</div>
<div id="content">
</div>
Et mon CSS :
body {
font-family: Trebuchet MS, Verdana, MS Sans Serif;
font-size:0.9em;
margin:0;
padding:0;
}
div#header {
width: 100%;
height: 100px;
}
#header a {
background-position: 100px 30px;
background: transparent url(site-style-images/sitelogo.jpg) no-repeat fixed 100px 30px;
height: 80px;
display: block;
}
#header, #menuwrapper {
background-repeat: repeat;
background-image: url(site-style-images/darkblue_background_color.jpg);
}
#menu #menuwrapper {
height:25px;
}
div#menuwrapper {
width:100%
}
#menu, #content {
width:1024px;
margin: 0 auto;
}
div#menu {
height: 25px;
background-color:#50657a;
}
Réponses:
Votre problème n'est pas que le div n'est pas à 100% de hauteur, mais que le conteneur qui l'entoure ne l'est pas.Cela aidera dans le navigateur que je suppose que vous utilisez:
Vous devrez peut-être également ajuster le remplissage et les marges, mais cela vous permettra d'atteindre 90% du chemin. Si vous devez le faire fonctionner avec tous les navigateurs, vous devrez vous en occuper un peu.
Ce site contient d'excellents exemples:
http://www.brunildo.org/test/html_body_0.html
http://www.brunildo.org/test/html_body_11b.html
http://www.brunildo.org/test/index.html
Je recommande également d'aller sur http://quirksmode.org/
la source
Je vais essayer de répondre à la question directement dans le titre, plutôt que de vouloir coller un pied de page au bas de la page.
Faites en sorte que div s'étende au bas de la page s'il n'y a pas assez de contenu pour remplir la fenêtre de navigateur verticale disponible:
Démo à (faites glisser la poignée du cadre pour voir l'effet): http://jsfiddle.net/NN7ky
(à l'envers: propre, simple. Inconvénient: nécessite flexbox - http://caniuse.com/flexbox )
HTML:
CSS:
ta-da - ou j'ai juste trop sommeil
la source
Essayez de jouer avec la règle css suivante:
Modifiez la hauteur en fonction de votre page. la hauteur est mentionnée deux fois pour la compatibilité entre navigateurs.
la source
vous pouvez en quelque sorte le pirater avec la déclaration min-height
la source
Essayez la solution "Sticky Footer" de Ryan Fait,
http://ryanfait.com/sticky-footer/
http://ryanfait.com/resources/footer-stick-to-bottom-of-page/
Fonctionne avec IE, Firefox, Chrome, Safari et soi-disant Opera aussi, mais je n'ai pas testé cela. C'est une excellente solution. Très simple et fiable à mettre en œuvre.
la source
La propriété min-height n'est pas prise en charge par tous les navigateurs. Si vous avez besoin que votre #contenu étende sa hauteur sur des pages plus longues, la propriété de hauteur la coupera court.
C'est un peu un hack mais vous pouvez ajouter un div vide avec une largeur de 1px et une hauteur de par exemple 1000px à l'intérieur de votre div #content. Cela forcera le contenu à avoir une hauteur d'au moins 1000 pixels et permettra toujours à un contenu plus long d'étendre la hauteur en cas de besoin.
la source
Bien qu'il ne soit pas aussi élégant que du CSS pur, un petit peu de javascript peut aider à accomplir ceci:
la source
Essayer:
Je ne l'ai pas encore testé ...
la source
Pied de page collant à hauteur fixe:
Schéma HTML:
CSS:
la source
Essayez http://mystrd.at/modern-clean-css-sticky-footer/
Le lien ci-dessus est en panne, mais ce lien https://stackoverflow.com/a/18066619/1944643 est correct. :RÉ
Démo:
la source
Vous pouvez utiliser l'unité de longueur "vh" pour la propriété min-height de l'élément lui-même et de ses parents. Il est pris en charge depuis IE9:
CSS:
la source
Je pense que le problème serait résolu en faisant simplement remplir le html à 100% également, peut-être que le corps remplit 100% du html, mais le html ne remplit pas 100% de l'écran.
Essayez avec:
la source
Vous pourriez également aimer ceci: http://matthewjamestaylor.com/blog/ultimate-2-column-left-menu-pixels.htm
Ce n'est pas tout à fait ce que vous avez demandé, mais cela pourrait également répondre à vos besoins.
la source
Je n'ai pas le code, mais je sais que je l'ai fait une fois en utilisant une combinaison de hauteur: 1000px et margin-bottom: -1000px; Essayez ça.
la source
En fonction du fonctionnement de votre mise en page, vous pouvez vous en sortir en définissant l'arrière-plan de l'
<html>
élément, qui correspond toujours au moins à la hauteur de la fenêtre.la source
Il n'est pas possible d'accomplir cela en utilisant uniquement des feuilles de style (CSS). Certains navigateurs n'accepteront pas
comme valeur supérieure au point de vue de la fenêtre du navigateur.
Javascript est la solution multi-navigateurs la plus simple, même si, comme mentionné, elle n'est ni propre ni belle.
la source
Je sais que ce n'est pas la meilleure méthode, mais je ne pourrais pas le comprendre sans gâcher mes positions d'en-tête, de menu, etc. Alors ... J'ai utilisé une table pour ces deux colonnes. C'était une solution RAPIDE. Aucun JS nécessaire;)
la source
Ce n'est ni la meilleure ni la meilleure implémentation des plus grands standards, mais vous pouvez changer le DIV pour un SPAN ... C'est une solution pas si recommandable mais rapide = P =)
la source