les modules en position "top" de même hauteur

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Suggestion] les modules en position "top" de même hauteur

    Bonjour,

    J'ai écrit un petit script qui gère la hauteur des modules en position "top"
    Joomla 3.6 template ol_albos (site www.entrepreneur-varois.fr)
    J'avais fixé la hauteur en css mais tous les explorateurs n'affichent pas de la même manière d'où un débordement de texte.
    Ce script règle le problème.

    /*Hauteur automatique des modules en position top*/
    if(screen.width > 786){
    var myBox, valHeight, maxHeight, h, i;
    maxHeight = 0;
    myBox = document.getElementsByClassName("moduletable_tm");
    for(h = 0; h < myBox.length; h++) {
    valHeight = myBox[h].getBoundingClientRect().height;
    if(valHeight > maxHeight){
    maxHeight = valHeight;
    }
    }
    for(i = 0; i < myBox.length; i++) {
    myBox[i].style.height = maxHeight + "px";
    }
    }

    Il s'applique pour affichage écran, les modules sur smartphone sont en colonne donc hauteur automatique.

    Je suis preneur de toute modification pour en faire un script façon "pro"

  • #2
    Re : les modules en position &quot;top&quot; de même hauteur

    Qu'entends tu par "façon pro", là ça marche et le code est correct.

    Maintenant, si tu veux utiliser jQuery, tu as 2 méthodes

    Tu peux copier ce code dans un fichier html et l'adapter après à ton environnement (entre autre jQuery à la place de $)
    Code:
    <!DOCTYPE html>
    <html>
    <head>
    <style type="text/css">
    .moduletable_tm{
    border: 1px #000 solid;
    width: 200px;
    display: inline-block;
    margin:10px;
    } 
    </style>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    
    <script>
    $(document).ready(function(){
    
    	myBox = document.getElementsByClassName("moduletable_tm");
    	maxHeight = 0;
    	hauteurs = [];
    	$(myBox).each(function () {
    		// Extraction de la hauteur de la div
    		var hauteur = parseFloat($(this).css('height'));
    		// A voir dans F12
    		console.log(hauteur);
    		// Méthode 1 : Verif avec la hauteur max
    		if(hauteur > maxHeight) maxHeight = hauteur;
    		// Méthode 2 : On stocke la hauteur dans le tableau
    		hauteurs.push(hauteur);
    	});
    	
    	// Méthode 1 : On recherche le max dans le tableau
    	maxHeight1 = Math.max.apply(null, hauteurs);
    	// On affiche les résultats des 2 méthodes
    	$("#info").html("maxHeight selon les 2 methodes : " + maxHeight1 + " = " + maxHeight);
    	// On applique à toutes les div
    	$(".moduletable_tm").css("height", maxHeight + "px");
    });
    </script>
    </head>
    <body>
    <div style="height:200px" class="moduletable_tm">block 1</div>
    <div style="height:210px" class="moduletable_tm">block 2</div>
    <div style="height:180px" class="moduletable_tm">block 3</div>
    
    <div id="info"></div>
    </body>
    </html>
    Christophe
    http://www.webcrea.fr

    Commentaire


    • #3
      Re : les modules en position &quot;top&quot; de même hauteur

      Merci pour la réponse,

      J'entendais "façon pro" le fait que je développe en js depuis deux mois et mon script a une écriture très procédurale.
      Je voulais savoir si il y avait une autre façon de traiter ce cas dans un esprit plus js.

      Je n'ai pas encore abordé jquery mais cet exemple est très bien pour commencer puisque c'est la transposition du script js.

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X