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 :

problème avec float:left et overflow:auto


Sujet :

CSS

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 57
    Points : 42
    Points
    42
    Par défaut problème avec float:left et overflow:auto
    Bonjour,

    soit le code HTML suivant :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
     
     
    <style type="text/css">
    .blocks {
    border:0px;
    margin:0 20px 20px 0;
    padding:10px;
    border:3px solid #a6ce39;
    }
     
    /* BLOCK PREVIEW */
    #block_preview {
    background-color:#FFFFFF;
    border:3px solid #a6ce39;
    width:420px;
    overflow:auto;
    }
     
    #preview {
    /*max-height: 20px;*/
    width:auto;
    float:left;
    position:relative;
     
    list-style-type:none;
    padding:0px;
     
    border:1px solid black;
     
    }
     
    #preview li {
    float:left;
    }
     
    #preview_text {
    padding:0px;
     
    border:1px solid red;
    }
    #preview_logo {
    cursor:move;
    width:auto;
     
    border:1px solid green;
    width:50px;
    height:50px;
     
    background:#00FF00;
    }
     
    /* BLOCK PREVIEW END */
    </style>
     
    </head>
     
    <body>
     
    <div class="blocks ui-corner-all right" id="block_preview">
    	<ul id="preview">
    		<li id="preview_logo"></li>
    		<li id="preview_text" style="font-size:50px;">Tapez votre texte ici</li>
    	</ul>
    </div>
     
     
     
    </body>
    </html>
    qui donne ceci : Qui donne ceci : http://wir3d.net/tests/test.php

    J'ai un <ul> de largeur fixe (420px), et en overflow:auto;

    Et à l'intérieur, 2 <li>, en float:left;, et dont la somme des largeurs est supérieure à la largeur du <ul>. Ce que je ne comprend pas, c'est pourquoi les <li> se mettent l'un en dessous de l'autre, au lieu de s'aligner l'un sur l'autre, comme le voudrait le float:left; créant ainsi l'overflow.

    Que dois-je faire pour arriver à ce résultat ?

  2. #2
    Membre éclairé Avatar de c_s_s
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 619
    Points : 747
    Points
    747
    Par défaut
    Bonjour,

    Tes éléments ne pourront se mettre l'un à côté de l'autre que si il y a la largeur suffisante.
    Dans ton cas il n'y a pas assez de place. Donc il y a un retour à la ligne.

    Si tu veux éviter le retour à la ligne, il faut spécifier une hauteur. Ainsi, grace à la propriété overflow:auto, une barre de défilement sera générée.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Mince, ça ne m'arrange pas vraiment ça.

    Mais je viens d'essayer de fixer une hauteur sur le le <ul id="preview">, et ça ne change pas grand chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #preview {
    /*max-height: 20px;*/
    width:auto;
    float:left;
    position:relative;
     
    list-style-type:none;
    padding:0px;
     
    border:1px solid black;
     
    height:90px;
    }
    qui donne http://wir3d.net/tests/test.php

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Bon j'ai finalement réussi à aligner mes deux <li> en spécifiant une width au <ul>, via un calcul de la somme des width des 2 <li>.

    je passe les détails, mais plus ou moins obligé de passer par là, c'est une application assez complexe, et la largeur du <ul> est amenée à être modifiée à chaque action de l'utilisateur.

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

Discussions similaires

  1. menu déroulant, problème avec float : left
    Par inouekun dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 22/07/2013, 15h15
  2. Opera avec float:left et width:auto
    Par pop_up dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 24/04/2008, 16h01
  3. Problème de positionnement avec float left
    Par Neuromancien2 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 24/08/2007, 00h04
  4. probleme de div avec float: left sous FF
    Par Toutouffe dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/06/2007, 16h08
  5. Problème avec float.
    Par Paulinho dans le forum Débuter
    Réponses: 1
    Dernier message: 29/11/2005, 10h27

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