28173 sujets

CSS et mise en forme, CSS3

modèle 16 : pas de float dans partie centrale :'(

Bonjour,

J'utilise le modèle 16 d'alsa pour le site de ma boite.
Il fonctionne parfaitement sauf pour une chose :

On ne peut pas utiliser de "flotant" dans la partie centrale.

En effet, si l'on met un "hr.clearBoth" après le "flotant",
le "hr.clearBoth" se positionne non pas après le "flotant",
mais après le "menu de gauche" qui lui aussi est un flotant.

J'ai fait des recherchs sur le phorum, ce sujet a déja été posé,
mais jamais résolu Smiley bawling

Je rappel pour info que l'intérêt du modèle 16 est d'avoir un site
à 3 colonnes, étirable, et que, lorsque l'une des 3 colonne est plus
grande que les 2 autres, elle pousse le footer.

Bref, c'est ce qu'il me faut, car je suis en train de migrer un site
(coder à l'origine en HTML4 => Tableau de mise en forme...très dégueux)
en full XHTML/CSS pour le rendre accessible aux handicapés divers.
Ma boîte vise le label argent d'accessiweb.org.
Et je voudrais éviter d'utiliser un tableau à 3 colonne.

.....trops de BlaBla, un peu de code vous fera tout comprendre


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
    <title>Largeur fluide, header/menu haut/menu gauche flottant/menu droite flottant/contenu/footer.</title>
    <style type="text/css">
    /* CSS issu des tutoriels modéle 16 de css.alsacreations.com */
    body {
        font-family:Verdana, Arial, Helvetica, sans-serif;
        font-size: 0.8em;
        margin: 0;
        padding: 0;
    }
    #header {
        height: 50px;
        background-color: #99CCCC;
    }
    #haut {
        height: 30px;
        background-color:#CCCCFF;
    }
    #conteneur {
        position: absolute;
        width: 100%;
        /*background-color:#CCCCFF;*/
    }
    .centre {
        /*background-color:#9999CC;*/
        margin-left: 150px;
        margin-right: 150px;
    }
    .centreSansSlotDroit {
        margin-right: 0px;
    }
    .centreSansSlotGche {
        margin-left: 0px;
    }
    #gauche {
        background-color:#9999CC;
        float:left;
        width: 150px;
    }
    #droite {
        background-color:#9999CC;
        float:right;
        width: 150px;
    }
    #pied {
        clear:both;
        height: 30px;
        background-color: #99CC99;
    }
    #menuhaut {
        list-style-type: none;
        margin: 0;
        padding:0;
    }
    #menuhaut li {
        display: inline;
    }
    #menuhaut a {
        margin: 0 2px;
        color: #000000;
        text-decoration: underline;
    }
    #menuhaut a:hover {
        text-decoration: none;
    }
    #menugauche {
        list-style-type: none;
        margin: 0;
        padding:0;
    }
    #menugauche li {
        margin-bottom: 5px;
    }
    #menugauche a {
        margin: 0 2px;
        color: #000000;
        text-decoration: underline;
    }
    #menugauche a:hover {
        text-decoration: none;
    }
    #menudroit {
        list-style-type: none;
        margin: 0;
        padding:0;
    }
    #menudroit li {
        margin-bottom: 5px;
    }
    #menudroit a {
        margin: 0 2px;
        color: #000000;
        text-decoration: underline;
    }
    #menudroit a:hover {
        text-decoration: none;
    }
    p {
        margin: 0px 0px 0px 0px;
    }   
    hr{font-size:0;line-height:0;clear:both;}
    .floatLeft{    
        float: left;
        width: 100px;
        height: 100px;
        background: red;
    }
</style>
</head>
<body>
    <div id="conteneur">
      <div id="header">
        header <a href="http://css.alsacreations.com/Modeles-de-mise-en-page-en-CSS">
        (voir tous les modèles)</a>
      </div>
      <div id="haut">
        <ul id="menuhaut"><li><a href="#">Menu 1</a> </li><li><a href="#">Menu 2</a> </li><li><a href="#">Menu 3</a> </li><li><a href="#">Menu 4</a> </li></ul>
      </div>
      <div id="gauche">
        <p>menu gauche</p>        
        <p>largeur fixe : 150px avec utilisation de la propriété <code>float:left;</code></p>
        <ul id="menugauche"><li><a href="#">Menu 1</a></li><li><a href="#">Menu 2</a></li><li><a href="#">Menu 3</a></li><li><a href="#">Menu 4</a></li><li><a href="#">Menu 1</a></li><li><a href="#">Menu 2</a></li><li><a href="#">Menu 3</a></li><li><a href="#">Menu 4</a></li><li><a href="#">Menu 1</a></li><li><a href="#">Menu 2</a></li><li><a href="#">Menu 3</a></li><li><a href="#">Menu 4</a></li></ul>
      </div>
      <div id="droite">
        <p>menu droit</p>        
        <p>largeur fixe : 150px avec utilisation de la propriété <code>float:right;</code></p>
        <ul id="menudroit"><li><a href="#">Menu 1</a></li><li><a href="#">Menu 2</a></li><li><a href="#">Menu 3</a></li><li><a href="#">Menu 4</a></li></ul>
      </div>      
      <div class="centre">
        <div class="floatLeft">div en float left</div>
        <p>Même avec contenu central court, l'utilisation des flottants combinés à l'utilisation de la propriété <code>clear:both;</code>
        sur le pied de page, permet à ce dernier de "pousser" le conteneur pour
        intégrer les éléments en float. Le pied de page est correctement
        positionné à la suite des parties en float les plus longues.</p>
        <p>Si le contenu central est plus long que les menus latéraux, il "pousse" également le pied de page vers le bas.</p>
        
        <strong>bug : le hr applique son clear:both non pas à la div.floatLeft mais au menu de gauche qui lui aussi est en float:left </strong><br>
        <hr/>
        
        <p>Même avec contenu central court, l'utilisation des flottants combinés à l'utilisation de la propriété <code>clear:both;</code>
        sur le pied de page, permet à ce dernier de "pousser" le conteneur pour
        intégrer les éléments en float. Le pied de page est correctement
        positionné à la suite des parties en float les plus longues.</p>
        <p>Si le contenu central est plus long que les menus latéraux, il "pousse" également le pied de page vers le bas.</p>
        <p>Même avec contenu central court, l'utilisation des flottants combinés à l'utilisation de la propriété <code>clear:both;</code>
        sur le pied de page, permet à ce dernier de "pousser" le conteneur pour
        intégrer les éléments en float. Le pied de page est correctement
        positionné à la suite des parties en float les plus longues.</p>
        <p>Si le contenu central est plus long que les menus latéraux, il "pousse" également le pied de page vers le bas.</p>
      </div>
      <div id="pied">
        pied de page (se place en dessous des éléments flottants grâce à <code>clear:both;</code>)
      </div>
    </div>
  </body></html>


@++

Smiley cligne
Salut

modififie ton CSS .centre

    .centre {
	[#darkblue]_height: 1%;zoom: 1; /* pour IE */
	display: table-cell;     /* pour les autre */[/#]
        margin-left: 150px;
	margin-right: 150px;
    }


Le code en rouge peux être retirer il n'apporte rien

    #conteneur {
 [#red]    position: absolute;
        width: 100%;[/#] 
        /*background-color:#CCCCFF;*/
    }



A+
Merci gege71 Smiley cligne

Tu m'a remis sur la piste d'un tuto que j'avais vu avant de poster
le message.(http://www.blog-and-blues.org/articles/Float,_clear_et_contextes_de_formatage)

Cependant, pour mon site, ce qui marche pour moi, c'est :


.centre{
        padding-left        :10px;
        padding-right       :10px;
        height              :1%;zoom: 1; /* pour IE */
        overflow            :hidden;/* pour les autre */
}


C'est bizarre car je n'ai plus de margin-left/right: 160px;
, et pourtant, le .centre est poussé par les 2 flottants #gauche et
#droite.
Si tu a une explication ? Smiley biggol

En tous cas, ça marche dans IE5.5, firefox et safari.

Je redonne le code pour, qui sait, faire évoluer le modèle 16.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
    <title>Largeur fluide, header/menu haut/menu gauche flottant/menu droite flottant/contenu/footer.</title>
    <style type="text/css">
    /* CSS issu des tutoriels modéle 16 de css.alsacreations.com */
    body {
        font-family:Verdana, Arial, Helvetica, sans-serif;
        font-size: 0.8em;
        margin: 0;
        padding: 0;
    }
    #header {
        height: 50px;
        background-color: #99CCCC;
    }
    #haut {
        height: 30px;
        background-color:#CCCCFF;
    }
    .centre {
        /*background-color:#9999CC;*/
        /*margin-left: 185px;
        margin-right: 185px;*/
        
        padding-left        :10px;
        padding-right       :10px;
        height              :1%;zoom: 1; /* pour IE */
        overflow            :hidden;/* pour les autre */        
        
        /*display: table-cell;/*pour les autre */
    }
    .centreSansSlotDroit {
        margin-right: 0px;
    }
    .centreSansSlotGche {
        margin-left: 0px;
    }
    #gauche {
        background-color:#9999CC;
        float:left;
        width: 150px;
    }
    #droite {
        background-color:#9999CC;
        float:right;
        width: 150px;
    }
    #pied {
        clear:both;
        height: 30px;
        background-color: #99CC99;
    }
    #menuhaut {
        list-style-type: none;
        margin: 0;
        padding:0;
    }
    #menuhaut li {
        display: inline;
    }
    #menuhaut a {
        margin: 0 2px;
        color: #000000;
        text-decoration: underline;
    }
    #menuhaut a:hover {
        text-decoration: none;
    }
    #menugauche {
        list-style-type: none;
        margin: 0;
        padding:0;
    }
    #menugauche li {
        margin-bottom: 5px;
    }
    #menugauche a {
        margin: 0 2px;
        color: #000000;
        text-decoration: underline;
    }
    #menugauche a:hover {
        text-decoration: none;
    }
    #menudroit {
        list-style-type: none;
        margin: 0;
        padding:0;
    }
    #menudroit li {
        margin-bottom: 5px;
    }
    #menudroit a {
        margin: 0 2px;
        color: #000000;
        text-decoration: underline;
    }
    #menudroit a:hover {
        text-decoration: none;
    }
    p {
        margin: 0px 0px 0px 0px;
    }   
    hr{font-size:0;line-height:0;clear:both;}
    .floatLeft{    
        float: left;
        width: 100px;
        height: 100px;
        background: red;
    }
</style>
</head>
<body>
    
      <div id="header">
        header <a href="http://css.alsacreations.com/Modeles-de-mise-en-page-en-CSS">
        (voir tous les modèles)</a>
      </div>
      <div id="haut">
        <ul id="menuhaut"><li><a href="#">Menu 1</a> </li><li><a href="#">Menu 2</a> </li><li><a href="#">Menu 3</a> </li><li><a href="#">Menu 4</a> </li></ul>
      </div>
      <div id="gauche">
        <p>menu gauche</p>        
        <p>largeur fixe : 150px avec utilisation de la propriété <code>float:left;</code></p>
        <ul id="menugauche"><li><a href="#">Menu 1</a></li><li><a href="#">Menu 2</a></li><li><a href="#">Menu 3</a></li><li><a href="#">Menu 4</a></li><li><a href="#">Menu 1</a></li><li><a href="#">Menu 2</a></li><li><a href="#">Menu 3</a></li><li><a href="#">Menu 4</a></li><li><a href="#">Menu 1</a></li><li><a href="#">Menu 2</a></li><li><a href="#">Menu 3</a></li><li><a href="#">Menu 4</a></li></ul>
      </div>
      <div id="droite">
        <p>menu droit</p>        
        <p>largeur fixe : 150px avec utilisation de la propriété <code>float:right;</code></p>
        <ul id="menudroit"><li><a href="#">Menu 1</a></li><li><a href="#">Menu 2</a></li><li><a href="#">Menu 3</a></li><li><a href="#">Menu 4</a></li></ul>
      </div>      
      <div class="centre">
        <div class="floatLeft">div en float left</div>
        <p>Même avec contenu central court, l'utilisation des flottants combinés à l'utilisation de la propriété <code>clear:both;</code>
        sur le pied de page, permet à ce dernier de "pousser" le conteneur pour
        intégrer les éléments en float. Le pied de page est correctement
        positionné à la suite des parties en float les plus longues.</p>
        <p>Si le contenu central est plus long que les menus latéraux, il "pousse" également le pied de page vers le bas.</p>
        
        <strong>bug : le hr applique son clear:both non pas à la div.floatLeft mais au menu de gauche qui lui aussi est en float:left </strong><br/>
        <hr/>
        
        <p>Même avec contenu central court, l'utilisation des flottants combinés à l'utilisation de la propriété <code>clear:both;</code>
        sur le pied de page, permet à ce dernier de "pousser" le conteneur pour
        intégrer les éléments en float. Le pied de page est correctement
        positionné à la suite des parties en float les plus longues.</p>
        <p>Si le contenu central est plus long que les menus latéraux, il "pousse" également le pied de page vers le bas.</p>
        <p>Même avec contenu central court, l'utilisation des flottants combinés à l'utilisation de la propriété <code>clear:both;</code>
        sur le pied de page, permet à ce dernier de "pousser" le conteneur pour
        intégrer les éléments en float. Le pied de page est correctement
        positionné à la suite des parties en float les plus longues.</p>
        <p>Si le contenu central est plus long que les menus latéraux, il "pousse" également le pied de page vers le bas.</p>
      </div>
      <div id="pied">
        pied de page (se place en dessous des éléments flottants grâce à <code>clear:both;</code>)
      </div>
</body></html>


++ Smiley biggrin
Modifié par accessibility (18 May 2006 - 12:06)