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 :

Propriété float dans un container


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut Propriété float dans un container
    Bonjour,

    J'ai un élément "container" qui contient un élément "blog-content" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #container{
       position: relative;
       max-width: 980px;
       width: 100%;
       margin-right: auto;
       margin-bottom: 10px;   
       margin-left: auto;
       border-top: 1px solid #cdcdcd;   
       border-right: 1px solid #cdcdcd;   
       border-bottom: 1px solid #cdcdcd;   
       border-left: 1px solid #cdcdcd;               
       box-shadow: 0 0 5px #cccccc;       
       background-color: #ffffff;  
       height: auto;   
       }
     
    #blog_content {
    float: none;
    width: 500px;
    margin-bottom: 20px;
    }


    Maintenant, je voudrais ajouter un 2ème élément "sidebar" dans mon container.

    J'ai cru bon de modifier la propriété float de blog_content comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #blog_content {
    float: left;
    width: 500px;
    margin-bottom: 20px;
    }
     
    .sidebar {
    float: right;
    width: 225px;
    margin: 20px 0 20px 25px;
    }
    Mais ceci ne marche pas, mon les éléments blog_content et sidebar apparaissent sous mon container qui est donc vide.

    Où est l'erreur ?

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 227
    Par défaut
    Bonjour,
    le code HTML de ta structure serait un réel plus pour que l'on puisse t'aider

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Comme il y a beaucoup de code qui, a priori n'a rien à voir avec mon pb, je vais élaguer au risque de supprimer des choses qui peuvent expliquer :

    index.php :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div id="container">
    <div id="blog_content">
    ...
    </div> /* fin div blog_content */
    <?php get_sidebar(); ?> 
    >/div> /* fin div container */
    <?php get_footer(); ?>

    sidebar.php :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="sidebar">
    ...
    </div>

    footer.php :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="footer">
    ...
    </div>

    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #footer{
       clear: both;
       margin: 10px 0;
       padding-top: 10px;
       border-top: 1px dotted #cccccc;                             
       overflow: hidden;  
       text-align: center; 
       display: block; 
    }
    Il y a quand même un truc bizarre : les éléments blog_content apparaissent bien centrés comme si le le float left et le float right était bien pris en compte, mais ils sont quand même sous le container.

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    En cherchant sur le Net je suis tombé par hasard sur une solution qui marche.
    Il faut rajouter la ligne en rouge :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="container">
    <div id="blog_content">
    ...
     
    </div> /* fin div blog_content */
    <?php get_sidebar(); ?>
    <div style="clear: both;"></div>
    </div> /* fin div container*/

    Mais je ne m'explique pas pourquoi ça marche parce que, après ma sidebar, l'élément suivant est "footer" dont la propriété commence justement par un clear: both

    Si qqun peut m'expliquer. J'aime pas trouver des solutions sans les comprendre.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 227
    Par défaut
    Ton soucis vient du fait que la DIV container n'a pas de réelle hauteur, les éléments en float étant retirés partiellement du flux, c'est un problème de dépassement des flottants.

    Tu aurais également pu résoudre ton problème en ajoutant overflow:hidden; sur ton bloc #container.

    Petite remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    border-top: 1px solid #cdcdcd;
    border-right: 1px solid #cdcdcd;
    border-bottom: 1px solid #cdcdcd;
    border-left: 1px solid #cdcdcd;
    peut simplement s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    border: 1px solid #cdcdcd;

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Merci pour cette réponse.
    La solution overflow: hidden me semble beaucoup plus académique. Je la prends !

    Toutefois, si ce n'est pas trop abuser, j'aurais 3 questions pour bien comprendre et éviter de refaire l'erreur la prochaine fois :
    - Pourquoi la div container n'a pas de hauteur ? Y a-t-il des éléments qui en ont, d'autres pas, et à quoi on les reconnaît ?
    - tu écris :
    les éléments en float étant retirés partiellement du flux, c'est un problème de dépassement des flottants.
    J'ai rien compris Tu peux reformuler ?

    Enfin, peux-tu expliquer ce que signifie overflow: hidden ? J'utilise souvent ce site pour avoir des explications sur une propriété CSS, mais là, je reste sec, sans doute en raison de mes limites en anglais (overflow est un terme assez flou qui peut se traduire par plein de choses)

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

Discussions similaires

  1. [JSP]probleme d'insertion float dans une table
    Par karamazov994 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/04/2005, 12h49
  2. Formater un float dans une requete
    Par Cedced dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/11/2004, 17h48
  3. Ajout d'un Component dans un Container
    Par willowII dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 07/09/2004, 19h08
  4. [LDAP] recherche dans differents container LDAP avec Java
    Par touinth dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 01/07/2004, 17h06
  5. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 16h59

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