IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

Taille div parente


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 54
    Par défaut Taille div parente
    Bonjour,

    Voila j'aurais besoin que l'on m'explique le comportement suivant :

    J'ai une div parent et a l'intérieur deux divs enfants qui sont côte à côte avec la caractéristique float.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div id="parent">
    <div id="enfant1" style="float:left;height:100px;"></div>
    <div id="enfant2" style="float:right;height:100px;"></div>
    </div>
    Lorsque j'inspecte la div parent avec firebug, je m'aperçoie quelle fait 0px de hauteur, alors qu'elle contient deux div de 100px.

    J'ai donc tenter la solution de mettre sur la div parente un overflow:hidden qui résout le problème, mais je ne comprend pas la logique, quelqu'un pourrais m'expliquer ?

    Merci

  2. #2
    Membre extrêmement actif
    Avatar de Muchos
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 704
    Billets dans le blog
    6
    Par défaut
    La div parent fait effectivement 0px de hauteur puisqu'elle n'a pas de hauteur fixée (d'autant plus que les div enfants sont en float). Je propose deux solutions (j'ai mis un border et des couleurs pour mieux visualiser le rendu) :

    1. Fixer une height sur la div parent.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <div id="parent" style="border: medium solid black; height: 100px; width: 100%;">
    	<div id="enfant1" style="float: left; width: 50%; height: 100px; background-color: blue;"></div>
    	<div id="enfant2" style="float: right; width: 50%; height: 100px; background-color: red;"></div>	
    </div>
    </body>

    2. Utiliser des table css (j'adore cette méthode).
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div id="parent" style="display: table; border: medium solid black; width: 100%;">
    	<div id="enfant1" style="display: table-cell; width: 50%; height: 100px; background-color: blue;"></div>
    	<div id="enfant2" style="display: table-cell; width: 50%; height: 100px; background-color: red;"></div>	
    </div>

  3. #3
    Membre émérite Avatar de pop_up
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 877
    Par défaut
    1. Fixer une height sur la div parent.
    Au lieu de faire ça, il faut réellement comprendre pourquoi tu as une hauteur de 0px.

    Tu te retrouves avec ce comportement car en réalité, tu as sortis tes éléments du flux normal de la page. Je m'explique, en mettant enfant1 et enfant2 en flottant, tu les sorts du flux (ils deviennent flottant comme l'indique la propriété)

    Ainsi, si on met des bordures à tes conteneurs et des largeurs aux enfant on à ça :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr" lang="fr-fr">
    	<head>
    	  <title>test</title>
    	</head>
    		<body>
    		<div id="parent" style="border:1px solid blue;">
    			<div id="enfant1" style="float:left;height:100px;width:100px;border:1px solid red;"></div>
    			<div id="enfant2" style="float:right;height:100px;width:100px;border:1px solid red;"></div>
    		</div>
    	</body>
    </html>

    Conteneur bleu (parent) sans hauteur
    Conteneurs rouges (enfants) avec la hauteur et largeur qu'on leur a assigné

    Pour les remettre dans le flux, il faut utiliser la propriété "overflow" sur ton conteneur. On se retrouve avec :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr" lang="fr-fr">
    	<head>
    	  <title>test</title>
    	</head>
    		<body>
    		<div id="parent" style="border:1px solid blue;overflow:auto;">
    			<div id="enfant1" style="float:left;height:100px;width:100px;border:1px solid red;"></div>
    			<div id="enfant2" style="float:right;height:100px;width:100px;border:1px solid red;"></div>
    		</div>
    	</body>
    </html>
    ton conteneur bleu "voit" bien le flux de tes éléments qui sont dedans.

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 54
    Par défaut
    Citation Envoyé par pop_up Voir le message
    Au lieu de faire ça, il faut réellement comprendre pourquoi tu as une hauteur de 0px.

    Tu te retrouves avec ce comportement car en réalité, tu as sortis tes éléments du flux normal de la page. Je m'explique, en mettant enfant1 et enfant2 en flottant, tu les sorts du flux (ils deviennent flottant comme l'indique la propriété)

    Ainsi, si on met des bordures à tes conteneurs et des largeurs aux enfant on à ça :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr" lang="fr-fr">
    	<head>
    	  <title>test</title>
    	</head>
    		<body>
    		<div id="parent" style="border:1px solid blue;">
    			<div id="enfant1" style="float:left;height:100px;width:100px;border:1px solid red;"></div>
    			<div id="enfant2" style="float:right;height:100px;width:100px;border:1px solid red;"></div>
    		</div>
    	</body>
    </html>

    Conteneur bleu (parent) sans hauteur
    Conteneurs rouges (enfants) avec la hauteur et largeur qu'on leur a assigné

    Pour les remettre dans le flux, il faut utiliser la propriété "overflow" sur ton conteneur. On se retrouve avec :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr" lang="fr-fr">
    	<head>
    	  <title>test</title>
    	</head>
    		<body>
    		<div id="parent" style="border:1px solid blue;overflow:auto;">
    			<div id="enfant1" style="float:left;height:100px;width:100px;border:1px solid red;"></div>
    			<div id="enfant2" style="float:right;height:100px;width:100px;border:1px solid red;"></div>
    		</div>
    	</body>
    </html>
    ton conteneur bleu "voit" bien le flux de tes éléments qui sont dedans.
    Merci l'explication que je cherché est la !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. forcer agrandir taille div
    Par calitom dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 07/04/2008, 16h54
  2. Réponses: 1
    Dernier message: 08/09/2007, 16h16
  3. Réduire taille DIV sous IE
    Par acheda dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 02/02/2007, 11h31
  4. [CSS] Créer un style en fonction du div parent
    Par titoumimi dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/02/2006, 09h33
  5. [CSS + HTML 4.01] Texte debordant de son div parent
    Par prgasp77 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 06/01/2005, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo