Comment faire un div sensible hauteur entre en-tête et pied de page avec CSS?
J'ai une page HTML avec hauteur fixe-tête et pied de page et d'un élément dans entre.
Je veux l'élément pour avoir toujours la hauteur totale de l'écran (à l'exclusion de l'en-tête et le pied de page). Par exemple, disons que la hauteur totale de l'écran est 1000px et chaque en-tête/pied de page a hauteur fixe de 60px --> l'élément div hauteur doit être 880px.
Le défi, maintenant, j'ai à faire pour l'adapter à n'importe quelle est la taille de l'écran, le comportement doit être tel que décrit) SANS utiliser de JavaScript/JQuery. CSS uniquement.
J'ai commencé par utiliser des "height: 100%", mais ne savez pas comment procéder...
<html>
<head></head>
<body>
<header class="header">my header</header>
<div class="content">content</div>
<footer class="footer">my footer</footer>
</body>
</html>
http://codepen.io/anon/pen/QbGZgL
Remarque: IE 10, doit être pris en charge aussi bien...
Que j'ai considéré comme flexbox, mais ne savait pas exactement comment je peux l'utiliser pour mes besoins. Disons que j'ai un peu de texte et quelques images dans le contenu de la page. Je ne veux pas un contenant vertical déroulant s'affiche lorsque l'écran est plus petit, je veux que l'ensemble du contenu à rétrécir, donc il va remplir toute la hauteur disponible.
Ne CSS3 fenêtre d'affichage unités: vh/vw/vmin/vmax peut m'aider ici?
- Utiliser des requêtes de média, la hauteur de 100% est un début, mais penser à de petits écrans, redimensionner votre pied de page/le pousser vers le bas lorsque les utilisateurs ont des écrans plus petits de sorte que le pied de page n'est pas à emporter tous le contenu de l'espace
- quelque chose comme codepen.io/anon/pen/XbNxqR ?
- Quel est le vh unité? snook.ca/archives/html_and_css/vm-vh-unités? hauteur: calc(100vh - 120px) serait votre solution.
- Avez-vous regardé le flexbox fonctionnalité CSS? Cela est partiellement pris en charge sur IE10, probablement suffisant pour vos besoins. Plus de détails à ce sujet ici
Vous devez vous connecter pour publier un commentaire.
C'est une configuration simple avec ce que je pense que vous voulez accomplir. IE10 prise en charge est possible que vous avez à préfixe /utiliser l'ancienne syntaxe pour le flex de la propriété.
Nous avons un élément wrapper pour laquelle nous disons: vous êtes maintenant un flex élément et votre enfant les éléments peuvent être flex(ible) éléments avec display: flex;
Pour la direction que nous utilisons colonne, la valeur par défaut est "rangée", mais nous voulons d'eux, sous les uns des autres.
Enfin, nous définissons les hauteurs de l'en-tête et pied de page et donc de l'élément principal: vous avez le flex de la propriété '1'. Qui va remplir l'espace qui reste entre les éléments.
CSS:
HTML:
Vous pouvez utiliser le positionnement absolu à atteindre cet objectif.
Essayez ce qui suit
CSS
Donner à votre en-tête d'une hauteur fixe.
Donner à votre pied de page d'une hauteur fixe et
position:absolute
avec unbottom:0
,left:0;
et unright:0;
.Rendre votre contenu div
position:absolute
et de lui donner unleft:0;
et unright:0;
. Le haut de la position est égale à la hauteur de votre en-tête et le bas de l'écran est égale à la hauteur de votre pied de page.http://jsfiddle.net/z4h64juf/1/
Espère que ça aide.
vous pouvez le faire avec du css calc:
Bien sûr, vous avez à changer de 120px pour ce qui est de la somme du pied de page et l'en-tête de la hauteur. Et n'oubliez pas le vendeur de préfixes.
Plus d'infos: https://developer.mozilla.org/es/docs/Web/CSS/calc
Un conseil: n'oubliez pas d'utiliser les unités à l'intérieur de la () et n'oubliez pas d'utiliser les espaces autour de l' - + * signes ou il ne fonctionnera pas.
Je vous conseille la Flexible Box Module De Mise En Page, qui a un bon soutien dans votre cas (IE10+). De nombreux problèmes classiques avec CSS peut être facilement résolu avec elle, jetez un oeil à la Résolu par Flexbox liste.
Une approche simple pour faire face à votre problème serait de code HTML suivant:
Avec un simple CSS:
Faire attention à ce que la spec a changé trois fois depuis 2009, donc il y a peu de différences dans les sintax et les besoins des vendeurs de préfixes. Les liens que je t'ai montré en parler trop. Bien sûr, il n'a pas d'importance si vous choisissez d'utiliser autoprefixer.
Fixer les deux d'en-tête et pied de page à l'aide de
position:fixed;
et pour l'utilisation du contenuhttp://codepen.io/anon/pen/xGRyNW
CSS:
HTML:
Approche 1: La
flexbox
solution, qui fonctionne pour les deux connu/inconnu de la hauteur de l'en-tête et pied de page. Prise en charge du navigateur: IE10+JsFiddle Démo
CSS:
HTML:
Approche 2: Le CSS
table
solution, qui fonctionne pour les deux connu/inconnu de la hauteur de l'en-tête et pied de page. Prise en charge du navigateur: IE8+JsFiddle Démo
CSS:
HTML:
Approche 3: La
position
solution ne fonctionne que pour connaître la hauteur de l'en-tête et pied de page. Prise en charge des navigateurs: IE7+JsFiddle Démo
CSS:
HTML:
À l'aide des valeurs fixes pour l'en-tête et pied de page est simple. Disons que vous avez une valeur de 60px à en-tête et pied de page et la position de leur collant (fixe) en haut et en bas, vous avez le code suivant:
Si vous avez besoin de l'en-tête et pied de page en %, alors vous avez besoin de régler la hauteur de l'html et du corps à 100% et le jeu en haut et en bas pour .contenu selon les % des valeurs. Vous pouvez ajouter du html et du corps dans la première partie de votre code css, juste pour suivre la cascade de la règle de vos éléments dans la page. Et le corps doit être margin: 0;
De travail avec l'absolu et de positions fixes et ajout de gauche: 0 et la droite: de 0 à tous vos éléments, vous passez les valeurs de largeur.
Un exemple avec le trop-plein est ici: http://codepen.io/desginarti/pen/OVbBoe
Voici une petite astuce pour créer des éléments sensibles qui conservent leur aspect ratio à plus grande échelle.
Cependant, lorsque nous spécifier un padding-bottom de la valeur pour le même élément, le rembourrage de mesure est calculée par rapport à la largeur de l'élément:
Rapport d'aspect Correct
Vous remarquerez que j'ai mis de l'élément de propriété de hauteur de 0, pour s'assurer que la hauteur des éléments enfants ne seront pas ajoutés à la valeur de remplissage lorsque la hauteur visible est calculé.
D'une note sur les éléments enfants
Si vous aussi vous souhaitez spécifier le pourcentage en fonction des hauteurs pour un enfant de l'élément, vous devrez attribuer une valeur absolue ou relative de la position de la valeur à la fois le parent et l'enfant:
Voir Une Démo
Essayer cela,
HTML
CSS
https://jsfiddle.net/rtwLe6zu/