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 :

Ajuster la marge d'un wrapper suivant taille de la fenêtre


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut Ajuster la marge d'un wrapper suivant taille de la fenêtre
    Bonjour,

    j'ai parcouru le forum et aussi plein d'ouvrages sur JQuery et je ne trouve pas la solution à mon problème très simple :

    J'ai une page web qui tient dans un div ( <div id="wrapper"> ), la taille de ce div est stable, environ 800 pixel de haut.
    Je le centre horizontalement dans la page à l'aide du css ( margin-left:auto; et margin-right:auto.

    Pour le centrage vertical, je voudrais pouvoir mesurer la taille de la fenêtre ( le viewPort ?? ) et suivant le cas, ajuster la propriété css margin-top du div.

    Par exemple si la fenêtre fait moins de 800px de haut , je détermine une marge très faible et si j'ai une fenêtre plus haute, je fais un calcul pour déterminer une marge pour centrer verticalement (ou à peu près) le div, du genre margin-top = (hauteurFenetre-hauteurDiv) / 2

    j'arrive pas à décoller pour faire ce petit bout de code...

    En plus je ne dois pas être le seul à rencontrer ce problème....

    Merci à tous

    Lionel

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut
    J'ai progressé, j'ai écrit ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                   var $haut = $(window).height();
    	       var $wrapH = $("#wrapper").outerHeight;
     
    			if ($haut < $wrapH)
    		{
    		$("#wrapper").css("margin-top","10px");	
    		}
    		else
    		{
    		var $newMargin = ($haut - $wrapH) / 2;
    		$("#wrapper").css("margin-top",$newMargin+"px");	
    		}

    Ce code ne fonctionne pas, sauf si je remplace la déclaration dans le else comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		else
    		{
    		var $newMargin = ($haut - 800) / 2;
    		$("#wrapper").css("margin-top",$newMargin+"px");	
    		}

    en mettant 800 ( la hauteur à peu près du div) en dur ça marche, je ne comprend pas pourquoi il ne veut pas considérer $wrapH puisque cette valeur est correctement lue dans le test if ($haut < $wrapH) ... bizarre..

    De plus, si je change la taille de la fenêtre comment réactiver le test pour réactualiser la marge??

    Merci

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut
    Je mérite une paire de tartes, lol, j'avais oublié de mettre () après outerHeight()

    voici mon code final

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            	var $haut = $(window).height();
    	        var $wrapH = $("#wrapper").outerHeight();
     
    			if ($haut > $wrapH)
    		{
    		var $newMargin = ($haut - $wrapH) / 2;
    		$("#wrapper").css("margin-top",$newMargin+"px");	
    		}
    j'ai mis la valeur basse de margin-top dans le style css de base et je ne l'ajuste que si la fenêtre est plus haute que mon DIV.
    et là ça marche !!

    Par contre il me reste un problème, comment détecter le redimensionnement de la fenêtre pour ajuster à nouveau cette marge ?

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut
    Décidément je fais les questions et les réponses, j'ai fini par trouver ..
    Si ça peut en intéresser parmi vous, voici mon code final pour la fonction init de Jquery

    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
     
    $(function()		{
     
     
    /*------------------------------------*/
    	var checkHeight = function()
    	{
    	$("#wrapper").css("margin-top","10px");	/* force la marge avant redim  */
     
    	var $haut = $(window).height();
    	var $wrapH = $("#wrapper").outerHeight();
     
    			if ($haut > $wrapH)
    		{
    		var $newMargin = ($haut - $wrapH) / 2;
    		$("#wrapper").css("margin-top",($haut - $wrapH) / 2 +"px");	
    		} else {
    		$("#wrapper").css("margin-top","10px");	
    		}
    	}		/* fin function checkHeight  */
     
    /*----------------------------------*/	
     
    	checkHeight();
    	$(window).resize(checkHeight);
     
    /* ici le reste de mon code JQuery  */
     
    });
    J'ai été obligé de forcer la marge à la première ligne de la fonction car ça marchait mal si on changeait
    la taille de la fenêtre à partir du bouton de réduction de windows (en haut à droite de chaque fenêtre, bouton du milieu 'niveau inférieur').

    Donc maintenant, et même sur un écran 1920x1200, mon site est centré dans la page, sans avoir à utiliser un tableau à une cellule pour mettre mon DIV, voir ici www.piano-concert24.fr

    Bravo JQuery !!

  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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    heu un simple margin en % n'aurait pas fait l'affaire ?
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    heu un simple margin en % n'aurait pas fait l'affaire ?
    Il me semblait que ça marcha

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    heu un simple margin en % n'aurait pas fait l'affaire ?
    Il me semblait que ça marchait pas en vertical sur un DIV....

    alors j'aurais fait tout ça pour rien???



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

Discussions similaires

  1. Ajustement de marge ou décalage
    Par Cryvar dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 19/05/2011, 20h37
  2. [JList] Ajuster le nombre de lignes visibles à la taille d'un panel
    Par Goupsy dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 07/08/2008, 17h52
  3. création string vide suivant taille voulue
    Par voyageur dans le forum C#
    Réponses: 1
    Dernier message: 26/03/2008, 14h27
  4. pb upload fichier suivant taille
    Par developpeur_struts dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/03/2007, 17h07
  5. Ajustement de la taille d'une fenêtre
    Par biquet dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 15/03/2007, 13h20

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