72 votes

Comment faire une div pour envelopper deux div float à l'intérieur?

Je ne sais pas si c'est un problème commun, mais je ne trouve pas la solution dans le web jusqu'à présent. Je voudrais avoir deux divs le tout enveloppé dans une autre div, cependant, ces deux divs à l'intérieur doivent être aligner au même niveau (par exemple: à gauche on prend 20%de la largeur de la wrappedDiv, droit de prendre un autre 80%). Pour atteindre cet objectif, j'ai utilisé l'exemple suivant CSS. Cependant, maintenant, l'écharpe DIV n'a pas enveloppez ces divs. L'écharpe Div a une petite hauteur que ces deux divs contenues à l'intérieur. Comment ai-je pu assurez-vous que l'écharpe Div a la plus grande hauteur que les contenus divs? Merci!!!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <title>liquid test</title>
    <style type="text/css" media="screen">
        body
        {
            margin: 0;
            padding: 0;
            height:100%;
        }
        #nav
        {
            float: left;
            width: 25%;
            height: 150px;
            background-color: #999;
            margin-bottom: 10px;
        }

        #content
        {
            float: left;
            margin-left: 1%;
            width: 65%;
            height: 150px;
            background-color: #999;
            margin-bottom: 10px;
        }       
        #wrap
        {
          background-color:#DDD;
          height:100%;
        }

</style>
</head>
<body>
<div id="wrap">
    <h1>wrap1 </h1>
    <div id="nav"></div>
    <div id="content"><a href="index.htm">&lt; Back to article</a></div>
</div>
</body>
</html>

118voto

Mikael S Points 2973

Mis à part le hack clear: both , vous pouvez ignorer l'élément supplémentaire et utiliser overflow: hidden sur l'emballage div :

 <div style="overflow: hidden;">
    <div style="float: left;"></div>
    <div style="float: left;"></div>
</div>
 

72voto

Meep3D Points 2061

C'est un problème commun quand vous avez deux flotteurs à l'intérieur d'un bloc. La meilleure façon de le réparer consiste à utiliser clear:both après le deuxième div .

 <div style="display: block; clear: both;"></div>
 

Cela devrait forcer le conteneur à avoir la bonne hauteur.

8voto

jerjer Points 5585

Cela devrait le faire:

 <div id="wrap">
  <div id="nav"></div>
  <div id="content"></div>
  <div style="clear:both"></div>
</div>
 

8voto

Thomas J Bradley Points 1538

overflow:hidden (comme mentionné par @Mikael S) ne fonctionne pas dans toutes les situations, mais cela devrait fonctionner dans la plupart des situations.

Une autre option consiste à utiliser le truc :after :

 <div class="wrapper">
  <div class="col"></div>
  <div class="col"></div>
</div>

.wrapper {
  min-height: 1px; /* Required for IE7 */
  }

.wrapper:after {
  clear: both;
  display: block;
  height: 0;
  overflow: hidden;
  visibility: hidden;
  content: ".";
  font-size: 0;
  }

.col {
  display: inline;
  float: left;
  }
 

Et pour IE6:

 .wrapper { height: 1px; }
 

4voto

Alex Lane Points 31

Flottez tout.

Si vous avez un flotta div dans un non flotta div , tout devient tout çela. C'est pourquoi la plupart des infrastructures CSS telles que Blueprint et 960.gs utilisent toutes des conteneurs flottants et divs .

Pour répondre à votre question particulière,

 <div class="container">
<!--
.container {
  float: left;
  width: 100%;
}
-->
  <div class="sidebar">
  <!--
  .sidebar {
    float: left;
    width: 20%;
    height: auto;
  }
  -->
  </div>
  <div class="content">
  <!--
  .sidebar {
    float: left;
    width: 20%;
    height: auto;
  }
  -->
  </div>
</div>
 

devrait bien fonctionner, tant que vous float:left; tout votre <div> s.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X