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

jQuery Discussion :

Récupérer la hauteur d'une div pour l'appliquer à une autre div


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut Récupérer la hauteur d'une div pour l'appliquer à une autre div
    bonjour,

    je veux récupérer la hauteur de la div "hauteur" pour l'appliquer à la div "enfant"
    ça ne marche pas et quand je fais un alert sur la variable le résultat est Undefined
    Code HTML : 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
    <!DOCTYPE html>
     
    <html lang="fr">
     
    	<body>
     
    		<div class="container">	
     
    			<div class="row">
    				<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 hauteur">
    					<p>bla bla bla bla bla bla bla bla</p>
    				</div>
    				<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 parent">
    					<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 enfant">
    						<p>bla bla bla bla bla bla bla bla</p>
    					</div>
    				</div>
    			</div>			
     
    		</div>
     
    		<script type="text/javascript">
                            $(function() {
                            // When DOM is ready, select the container element and call the jQCloud method, passing the array of words as the first argument.
                            var div_hauteur = document.getElementsByClassName('hauteur').offsetHeight;
                            // alert (div_size); Undefined
                            var div_enfant = document.getElementsByClassName('enfant');
                            div_enfant.style.height = div_hauteur; 
                            });
                    </script>
     
    	</body>                                         
     
    </html>

    Pouvez vous m'aidez?
    Cordialement

  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


    Vous donnez vos codes HTML et jQuery, mais pas le plus important dans votre cas le CSS !

    Voici donc un exemple en JS avec du CSS maison (voir le code de test) :

    Code HTML : 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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    <head>
    	<!-- cache-control avec max-age=60 pour le développement uniquement -->
      <meta http-equiv="cache-control" content="public, max-age=60">
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
      <meta name="author" content="Daniel Hagnoul">
      <title>test</title>
      <style>
                    *,
                    *:after,
                    *:before {
                            box-sizing: border-box;
                    }
                    
                    /* CSS du test */
                    
                    div {
                            padding: 0.3rem;
                            border: 1pt dotted grey;
                    }
     
                    /* Fin CSS du test */
     
      </style>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/locale/fr.js"></script>
      <script src="http://danielhagnoul.developpez.com/lib/dvjh/dvjhUtilities-1.4.0.js"></script>
    	<script>
        'use strict';
                    
        document.addEventListener( "DOMContentLoaded", ev => {
                            // le DOM est construit, la page web n'est pas visible
                            moment.locale( "fr" );
                            klog( `DOM ready   : ${ new kDvjhDate() }` );
                            
          // code du test
     
     
                            // fin code du test
          
        }, false );
        
        window.addEventListener( "load", ev => { 
                            // le DOM est construit et la page web est visible
                            klog( `Window load : ${ new kDvjhDate() }` );
                            
          // code du test
                            
                            const
                                    elemHauteur = document.querySelector( "div.hauteur" ),
                                    elemEnfant = document.querySelector( "div.enfant" );
                                    
                                    // debug, console, touche F12
                                    // https://developer.mozilla.org/fr/docs/Web/API/HTMLElement/offsetHeight
                                    console.log( elemHauteur.offsetHeight, elemEnfant.offsetHeight ); // 133 81
                                    
                                    setTimeout( () => {
                                            elemEnfant.style.minHeight = elemHauteur.offsetHeight + "px";
                                            
                                            // debug, console, touche F12
                                            console.log( elemHauteur.offsetHeight, elemEnfant.offsetHeight ); // 133 133
                                    }, 3000 ); // 3s pour voir la différence
                            
                            // fin code du test
     
          kIDUnique();
        }, false );
      </script>
    </head>
    <body>
    	<main>
     
    		<div class="container">
    			<div>
    				<div class="hauteur">
    					<p>Advenit post multos Scudilo Scutariorum tribunus velamento subagrestis ingenii persuasionis opifex callidus.
    					qui eum adulabili sermone seriis admixto solus omnium proficisci pellexit vultu adsimulato saepius replicando quod
    					flagrantibus votis eum videre frater cuperet patruelis, siquid per inprudentiam gestum est remissurus ut mitis et
    					clemens, participemque eum suae maiestatis adscisceret, futurum laborum quoque socium, quos Arctoae provinciae diu
    					fessae poscebant.</p>
    					<p>Accenderat super his incitatum propositum ad nocendum aliqua mulier vilis, quae ad palatium ut poposcerat
    					intromissa insidias ei latenter obtendi prodiderat a militibus obscurissimis. quam Constantina exultans ut in tuto
    					iam locata mariti salute muneratam vehiculoque inpositam per regiae ianuas emisit in publicum, ut his inlecebris
    					alios quoque ad indicanda proliceret paria vel maiora.</p>
    				</div>
    				<div class="parent">
    					<div class="enfant">
    						<p>Nisi mihi Phaedrum, inquam, tu mentitum aut Zenonem putas, quorum utrumque audivi, cum mihi nihil sane praeter
    						sedulitatem probarent, omnes mihi Epicuri sententiae satis notae sunt. atque eos, quos nominavi, cum Attico nostro
    						frequenter audivi, cum miraretur ille quidem utrumque, Phaedrum autem etiam amaret, cotidieque inter nos ea, quae
    						audiebamus, conferebamus, neque erat umquam controversia, quid ego intellegerem, sed quid probarem.</p>
    					</div>
    				</div>
    			</div>
    		</div>
     
    	</main>
    </body>
    </html>

    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
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 217
    Par défaut
    Bonjour,
    je vois surtout une incohérence dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var div_hauteur = document.getElementsByClassName('hauteur').offsetHeight;
    // alert (div_size); Undefined
    var div_enfant = document.getElementsByClassName('enfant');
    div_enfant.style.height = div_hauteur;
    c'est div_hauteur ou div_size !?!

    Autre incohérence, document.getElementsByClassName, quand on utilise jQuery autant l'utiliser correctement et entièrement

    Dernière chose, en utilisant BootStrap il y a surement moyen de ne pas avoir à ce soucier de cela.

  4. #4
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut
    Merci pour votre aide

    Oui j'utilise Bootstrap
    J'ai une ligne "row" contenant 2 divs:
    - l'une de class "hauteur" contenant un paragraphe
    - l'autre de class "parent" contenant une autre div de class "enfant" dans laquelle un panorama d'image défile

    Le but du jeu est de centrer verticalement et horizontalement les images dans la div "enfant".
    le probleme c'est que en ajoutant un border je me rends compte que les 2 div bien qu'elles soient cote a cote
    dans une meme ligne n ont pas la meme hauteur (le height de la div "enfant" varie en fonction de la taille des images)

    D'ou l idee de récupérer la taille fixe de la div de gauche et de l'appliquer avec javascript à la div de droite

    Meme avec le code suivant la hauteur de la div contenant les slides varie en fonction de l'image:
    elle a pour hauteur la hauteur des images

    Code HTML : 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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    <!DOCTYPE html> <!--on declare au validator le langage utilisé: html5-->
     
    <html lang="fr">
     
    <head>
    	<style type="text/css">
                    /*slide*/
     
                    .slide
                    {
                    position: relative;
                    display: none/*display: none permet que les images du slide n'apparaissent pas toutes en meme temps lors du lancement*/
                    }
     
                    .portrait {width:50%}
                    .paysage {width:70%}
                    .carre {width:60%}
     
                    div.container>div.row>div.parent {
                      display: flex;
                      border: 15px solid blue;
                            height: auto;
                    }
                    div.container>div.row>div.parent>div.enfant {
                      margin: auto; 
                      height: 100%;
                    }
            </style>
    </head>
     
    <body>
     
    <div class="container">	
     
    	<div class="row">
    		<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 hauteur">
    			<h1>Intellectum est enim mihi quidem in multis, et maxime in me </h1>
    			<br>
    			<p class="text_justifie">
    			Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M. Marcellum senatui reique publicae concessisti, 
    			commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre. 
    			Ille quidem fructum omnis ante actae vitae hodierno die maximum cepit, cum summo consensu senatus, tum iudicio tuo gravissimo et maximo. 
    			Ex quo profecto intellegis quanta in dato beneficio sit laus, cum in accepto sit tanta gloria.
    			</p>
    		</div>
    		<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 parent">
    			<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 enfant">
    			<!--slide images des nouveautes-->				
    				<?php
                                            include_once('./connexion');
                                                    
                                            //Preparer la requete
                                            $sql = 'SELECT * FROM table WHERE slide=? ORDER BY RAND()';
                                            $requete2 = $connexion_bdd ->prepare($sql);
                                            //Associer des valeurs aux place holders
                                            $requete2->bindValue(1, 'oui', PDO::PARAM_STR);
                                            //Compiler et executer la requete
                                            $requete2->execute();
                                            //Recuperer toutes les donnees retournees
                                            $i=0;
                                            foreach($requete2->fetchAll() as $donnee)
                                                    {
                                                            $format=$donnee['format'];
                                                            $intitule=$donnee['intitule'];
                                                            echo ('<img     src="../photos/' . $donnee['nom_image'] . '_mini.' . $donnee['ext_image'] . '"  
                                                                  id="img' . $i++ . '" 
                                                                      style="z-index:' . $i++ . '" 
                                                                      class="slide'); 
                                                                      
                                                                      if ($donnee['format']=="portrait") {
                                                                              echo ' portrait"';
                                                                              }
                                                                      if ($donnee['format']=="paysage") {
                                                                              echo ' paysage"';
                                                                              }
                                                                      
                                                                      echo ('alt="' . $intitule . '" 
                                                                      title="' . $intitule . '" />');
                                                    }
                                            //Clore la requete preparee
                                            $requete2 -> closeCursor();
                                            $requete2 = NULL;
                                    ?>
    			</div>
    		</div>
    	</div>			
     
    </div>
     
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <!--slide des nouveautes-->
    <script type="text/javascript">
    $(function() {                                                                          // losque le DOM est chargé
     
            var div_hauteur = $(".hauteur").height();               // on recupere la hauteur de l element de classe "div_hauteur"
    //      alert (div_hauteur);                                                    // affiche 555
            $('div_parent').css('height',div_hauteur+"px"); // on affecte la hauteur de l element de classe "div_parent"
            $('div_enfant').css('height',div_hauteur+"px"); // on affecte la hauteur de l element de classe "div_enfant"
            var div_parent= $(".parent").height();
            var div_enfant= $(".enfant").height();
    //      alert (div_parent);     
    //      alert (div_enfant);
     
    });
     
    $( function(){ 
            var jObjSlides = $( '.slide' );
        n = jObjSlides.length;                                                      /*nombre d element de classe slide*/
        bis = function( ){
            n = ( --n >= 0 ) ? ( n ) : ( jObjSlides.length - 1 );   /* (si cette expression est vrai) ? (instruction A est executee) : (sinon instruction B)*/
     
            jObjSlides.eq( n ).fadeIn( 2000, function(){                    /*eq(): selectionne un element par son index*/
                            $( this ).delay(2000).fadeOut( 2000, bis );
            });
        };
     
            setTimeout( bis, 2000 );
            
            });
    </script>
     
    </body>                                         
     
    </html>

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 660
    Billets dans le blog
    1
    Par défaut
    display flex ne fonctionne pas ?
    https://codepen.io/imohkay/pen/gpard
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 217
    Par défaut
    Oui j'utilise Bootstrap
    on ne voit pas où est « linker » BootStrap (et quelle version ?) !

  7. #7
    Membre averti
    Femme Profil pro
    Webmaster
    Inscrit en
    Juin 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 20
    Par défaut
    Bonsoir

    Pour récupérer hauteur de DIV , tout simplement tu dois faire un script qui consiste à accéder à CSS , en fait pour avoir ce traitement il suffit qu’une seule instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script>
    document.getElementById('iddiv2').style.height=document.getElementById('iddiv1').style.height ;
    </script>
    tout simplement normalement ça marche

    Bon courage pour le reste .

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 660
    Billets dans le blog
    1
    Par défaut
    Jquery ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#div2").height( $("#div1").height() );
    voire éventuellement .outerHeight()
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut
    Ca ne fonctionne toujours pas

    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
     
    <script type="text/javascript">
    $(function() {
     
    	var div_hauteur = $(".hauteur").outerHeight();
    	alert (div_hauteur);
    	$('div_parent').css('outerHeight',div_hauteur+"px");
    	$('div_enfant').css('outerHeight',div_hauteur+"px");
     
    	var div_parent= $(".parent").outerHeight();
    	var div_enfant= $(".enfant").outerHeight();
    	alert (div_parent);	
    	alert (div_enfant);
     
    });
     
    </script>
    Je ne comprends pas, normalement 2 div dans une colonne ont la même hauteur?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 660
    Billets dans le blog
    1
    Par défaut
    ça ne ressemble pas au code que j'ai proposé ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/11/2016, 18h47
  2. [XL-2007] Récupérer des données dans doc.word pour mettre dans une feuille .xls
    Par casdidier dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2014, 11h33
  3. Réponses: 2
    Dernier message: 21/10/2010, 10h15
  4. Récupèrer champ d'une table pour mettre dans une autre table
    Par Invité(e) dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 31/03/2008, 22h59
  5. Réponses: 2
    Dernier message: 29/08/2007, 19h43

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