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 :

Div contenant des élements float : comment gérer la hauteur ?


Sujet :

Dimensionnement en CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Par défaut Div contenant des élements float : comment gérer la hauteur ?
    Bonjour,

    sur mon site, je met un peu d'ajax par-ci par là, notamment pour les formulaires (pour éviter d'avoir à recharger toute la page).

    Pour que ce soit compatible avec Internet Explorer, je dois hélas me passer de <table> là où il devrait y en avoir. De mon formulaire qui contient plusieurs lignes de tableaux de la forme [nom d'un champ] : [input text ou autre],
    je transforme :
    <table> par <div class="form_ps">
    <tr> par <div class="form_ligne">
    <th> par <div class="form_titre">
    <td> par <div class="form value">


    Voici ce que ça donne au final (j'ai simplifié parce qu'il y a des trucs qui encombraient):

    Code xhtml : 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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    <style>
    .nice_block{
            margin-bottom : 15px;
            margin-top : 10px;
            height : auto;
            clear : both;
    }
     
    .form_ps div{
            -moz-border-radius : 0;
    }
    .form_ps{
            float : left;
            margin-top : 5px;
            margin-bottom : 5px;
            width : 100%;
            padding : 0;
            margin : 0;
            clear : both;
    }
    .form_ligne{
            float : left;
            clear : left;
            height : 22px;
            border-width : 1px 1px 0 1px;
            padding : 0;
            margin : 0;
            width : 100%;
    }
    .form_ligne .form_titre{
            float : left;
            width : 250px;
            height : 100%;
            padding : 0;
            margin : 0;
            padding-right : 3px;
            padding-left : 3px;
    }
    .form_ligne .form_value{
            float : left;
            width : auto;
            height : 100%;
            padding : 0;
            margin : 0;
    }
    </style>
     
    	<div class="nice_block">
    	<h1>{$l_calculate}</h1>
    		<form name="ps" action="ajax.php" class="my_real_form" method="post">
    		<input type="hidden" name="is_ps" value="1"/>
    		<div class="form_ps">
    			<div class="form_ligne">
    				<div class="form_titre">{$l_date1}</div>
    				<div class="form_value">
    						<input type="text" name="ps_date1" id="ps_date1" value="{$ps_date1Ymd}" size="12" />
    						<img src="{$jscalendar_path}/calendar3.gif" id="ps_trigger1" 
    						style="cursor: pointer; border: 1px solid white;" 
    						alt="Calendar" title="" border="0" onmouseover="this.style.border='1px solid green';" onMouseOut="this.style.border='1px solid white'" />
    				</div>
    			</div>
     
    			<div class="form_ligne">
    				<div class="form_titre">{$l_date2}</div>
    				<div class="form_value">
    					<input type="text" name="ps_date2" id="ps_date2" value="{$ps_date2Ymd}" size="12" />
    					<img src="{$jscalendar_path}/calendar3.gif" id="ps_trigger2" 
    					style="cursor: pointer; border: 1px solid white;" alt="Calendar" title="" border="0" 
    					onmouseover="this.style.border='1px solid green';" 
    					onMouseOut="this.style.border='1px solid white'" />
    				</div>
    			</div>
     
    			<div class="form_ligne">
    				<div class="form_titre">{$l_ps_nb_people}</div>
    				<div class="form_value">
    				<input type="text" size="12" maxlength="3" name="ps_no_people" value="{$ps_no_people}">
    				</div>
    			</div>
    			<div class="form_ligne">
    				<div class="form_value">
    <input type="hidden" name="action" value="ps"/>
     <input type="submit" value="run" onclick="return ps(this);" />
    				</div>
    			</div>
    		</div>
    		</form>
     
    	</div>

    Quelques explications :
    - ps() est une fonction java qui renvoie faux si elle s'effectue correctement. elle met à jour un div plus bas
    - ce formulaire permet de choisir 2 dates en cliquant sur des calendriers, c'est pas intéressant et c'est un très vieux truc. (/* Copyright Mihai Bazon, 2002-2005 | www.bazon.net/mishoo * The DHTML Calendar, version 1.0 "It is happening again" * Details and latest version at:
    * www.dynarch.com/projects/calendar */)
    - les termes entre { } sont remplacés dans le traitement via Smarty (c'est pas moi qui ait décidé ça, mais c'est plutot sympa en fait).


    Mon problème est que l'élément dont la classe est "nice_block" ne prend pas en compte son contenu en ce qui concerne la hauteur (ni FF, ni IE), ce qui a pour effet qu'un margin-top dans l'élément d'en dessous (ou margin-bottom pour celui là) n'a aucun effet.

    Quelqu'un a-t-il une solution pour me sauver ?

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Ajout d'une div cachée, exemple :
    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
     
        <div class="nice_block">
        <h1>{$l_calculate}</h1>
            <form name="ps" action="ajax.php" class="my_real_form" method="post">
            <input type="hidden" name="is_ps" value="1"/>
            <div class="form_ps">
                <div class="form_ligne">
                    <div class="form_titre">{$l_date1}</div>
                    <div class="form_value">
                            <input type="text" name="ps_date1" id="ps_date1" value="{$ps_date1Ymd}" size="12" />
                            <img src="{$jscalendar_path}/calendar3.gif" id="ps_trigger1" 
                            style="cursor: pointer; border: 1px solid white;" 
                            alt="Calendar" title="" border="0" onmouseover="this.style.border='1px solid green';" onMouseOut="this.style.border='1px solid white'" />
                    </div>
                </div>
     
                <div class="form_ligne">
                    <div class="form_titre">{$l_date2}</div>
                    <div class="form_value">
                        <input type="text" name="ps_date2" id="ps_date2" value="{$ps_date2Ymd}" size="12" />
                        <img src="{$jscalendar_path}/calendar3.gif" id="ps_trigger2" 
                        style="cursor: pointer; border: 1px solid white;" alt="Calendar" title="" border="0" 
                        onmouseover="this.style.border='1px solid green';" 
                        onMouseOut="this.style.border='1px solid white'" />
                    </div>
                </div>
     
                <div class="form_ligne">
                    <div class="form_titre">{$l_ps_nb_people}</div>
                    <div class="form_value">
                    <input type="text" size="12" maxlength="3" name="ps_no_people" value="{$ps_no_people}">
                    </div>
                </div>
                <div class="form_ligne">
                    <div class="form_value">
    <input type="hidden" name="action" value="ps"/>
     <input type="submit" value="run" onclick="return ps(this);" />
                    </div>
                </div>
            </div>
            </form>
            <div style="visibility:hidden; clear:both; width:auto; height:12px;"><p>&nbsp;</p></div>
        </div>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Par défaut
    Mea culpa, j'avais cru bien cherché pourtant :s

    Merci danielhagnoul !

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

Discussions similaires

  1. div contenant des image float left
    Par toto62 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 20/02/2010, 14h57
  2. onmouseout sur div contenant des liens
    Par joKED dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/04/2009, 10h56
  3. [Prototype] Texte chargé dans une <div> contenant des balises <script>
    Par wenijah dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 22/11/2007, 17h28
  4. [XHTML] Pb d'espaces entre Div contenant des images en XHTML Strict
    Par kiouz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 16
    Dernier message: 16/07/2007, 19h19
  5. actualiser une DIV contenant des images
    Par jc_cornic dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2006, 15h42

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