2013-07-10 2 views
1

J'ai une div parente avec un ensemble hauteur/largeur max. Je me demandais s'il est possible de régler les deux divs enfants pour ajuster automatiquement leur taille en fonction d'un pourcentage en utilisant simplement CSS?Définition de plusieurs divs par pourcentage de hauteur pour remplir la division parente

HTML:

<div id="parent"> 
    <div id="top"></div> 
    <div id="bottom"></div> 
</div> 

CSS:

html, body { 
    height: 100%; 
    width: 100%: 
}  

#parent { 
    max-width: 400px; 
    max-height: 600px; 
} 

#top { 
    height: 30%; 
} 

#bottom { 
    height: 70%; 
} 

La mise en œuvre prévue de ce serait pour un affichage mobile qui remplit la hauteur de l'écran proportionnellement sans forcer un défilement vertical.

EDIT: Je réalise maintenant que les pourcentages de hauteur du parent fonctionneront si vous avez une hauteur parentale fixe. La question est toujours de savoir s'il existe un moyen d'utiliser CSS pour permettre une hauteur flexible qui correspond à la taille de l'écran. Il semble que ce ne sera pas possible uniquement en utilisant CSS et nécessite une intervention de JS.

+1

Vous devez régler la hauteur du parent: http://jsfiddle.net/dimitardanailov/T5yg7 seulement avec max hauteur ne fonctionne pas –

+0

Ah, donc il y a pas moyen (sans utiliser js) de l'ajuster et de le redimensionner sans définir explicitement la hauteur en css? – Josh

+0

#parent doit avoir une certaine valeur pour la hauteur. –

Répondre

3

Il n'y a rien de mal avec votre code. Juste ajouter une hauteur de 100% ainsi que la largeur aux divs donne ce que vous voulez. La largeur maximale/hauteur ne force aucune valeur (quitte la hauteur/largeur à l'auto). Voici un violon de travail:

http://jsfiddle.net/b6HVa/

#parent { 
    width: 100%; 
    height: 100%; 
    max-height: 600px; 
    max-witdh: 400px; 
} 
+0

Alors que ce que vous dites est 100% correct, ma question est un peu différente. Que faire si ma taille d'écran tombe en dessous de 600px. Si je définis la hauteur de 600px, le défilement se produira (ce que je ne veux pas). – Josh

+0

J'ai mis à jour ma réponse avec une solution. –

+0

Cela semble fonctionner :) Laissez-moi essayer un peu et nous verrons ce qui se passe. – Josh

0

Je pense que vous faites bien, si quelque chose ne va pas, s'il vous plaît montrer une démo. Ou essayez de définir

#top{max-height: 30%;} 
#bottom{max-height: 70%;} 

Ou ajoutez min-height: {some value}px; à votre div.

+0

Min-height ne fonctionne pas pour cet exemple: http://jsfiddle.net/dimitardanailov/T5yg7/1/ –

+0

Comme dans votre commentaire, vous êtes intéressant sans seeting hauteur de votre div parent, donc j'ai placé min-height, mais vous devez également définir min-height pour vos enfants divs. Par conséquent, il est recommandé de définir la hauteur dans votre div parent. –

Questions connexes