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

JavaScript Discussion :

Centrer un div horizontalement en javascript


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    sans
    Inscrit en
    mai 2023
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : mai 2023
    Messages : 145
    Points : 83
    Points
    83
    Par défaut Centrer un div horizontalement en javascript
    Bonjour,
    je voudrais centrer un div horizontalement avec javascript car avec css je ne peux pas car le div doit etre en position absolute.
    Auriez-vous une soluce ?

    J'ai pas de code pour ça, j'en cherche un justement

    Google me propose que du CSS et pourtant j'ai bien écris javascript avant ma question...dans la zone de recherche de google.

  2. #2
    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 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    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 574
    Points : 66 537
    Points
    66 537
    Billets dans le blog
    1
    Par défaut
    Attribue ton css avec javascript ...
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Element.style.marginLeft="auto"
    Element.style.marginRight="auto"
    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 !

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    juin 2006
    Messages
    2 390
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juin 2006
    Messages : 2 390
    Points : 4 454
    Points
    4 454
    Par défaut
    au final, ce sera toujours du CSS qui "appliquera" le style a ton element... le JS n'y changera rien... tu peux bien mettre a jour le CSS avec du JS... mais au final, le placement se fait avec du CSS, donc la solution de google n'est pas totalement deconnante.

    meme la solution de SpaceFrog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Element.style.marginLeft="auto";
    Element.style.marginRight="auto"
    au final, ca applique du CSS a l'element

    position absolute, mais par rapport a quoi ? un element parent ? a la page ? au viewport ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre régulier
    Homme Profil pro
    sans
    Inscrit en
    mai 2023
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : mai 2023
    Messages : 145
    Points : 83
    Points
    83
    Par défaut
    Merci de vos réponses

    Moi j'avais essayé ça aprés mon message mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	// Centre le message.
    	var element=document.getElementById('intro');
    	element.style.width="800px";
    	var screencenter=Math.trunc(screen.width/2);
    	var pos=""+screencenter-(Math.trunc(element.style.width/2))+"px";
    	element.style.left=pos;
    Je voulais utiliser du javascript car en position absolute le margin.left auto ne fonctionne pas en css.

    Position absolute, d'aprés ce que j'ai compris, c'est par rapport à rien, c'est juste une position directe sur l'écran qui ne tient pas compte des autres éléments mis en position relative.


    Mon problème maintenant c'est de savoir donner une valeur en pixels à element.style.left.
    Dans mon code : element.style.width fonctionne bien mais pas element.style.left.

    C'est ma variable pos qui est mal écrite, car ça marche si j'écris element.style.left="100px";.

    EDIT :

    J'ai essayé comme ça mais ça marche toujours pas ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	// Centre le message.
    	var element=document.getElementById('intro');
    	element.style.width="800px";
    	var screencenter=Math.trunc(screen.width/2);
    	var demilargeur=Math.trunc(element.style.width/2)
    	var pos=screencenter-demilargeur;
    	alert(screencenter);
    	element.style.left="100px";
    L'erreur est dans la définition de la variable demilargeur car elle affiche NaN par alert()
    Alors que la variable screencenter affiche bien 640 par alert().
    Et mon essai de element.style.let="100px" fonctionne bien, donc le pb est bien dans demilargeur mais je sais pas comment bien la définir.

  5. #5
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    juin 2006
    Messages
    2 390
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juin 2006
    Messages : 2 390
    Points : 4 454
    Points
    4 454
    Par défaut
    la position absolute est toujours par rapport a un parent referent (un element parent en position:relative)
    => si aucun parent n'est en relative, c'est le body, le referent par default

    le position:fixed est par rapport a l'ecran
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  6. #6
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    2 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 2 773
    Points : 6 298
    Points
    6 298
    Par défaut
    Plutôt que de faire des alert() pour voir ce qui se passe, utilise la console javascript de ton navigateur (Ctrl + Maj +I). console.log(MaVariable);, console.log(MonElement.style.left), console.log("400px"/2);, console.log(parseInt("400px")/2);, etc.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  7. #7
    Membre régulier
    Homme Profil pro
    sans
    Inscrit en
    mai 2023
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : mai 2023
    Messages : 145
    Points : 83
    Points
    83
    Par défaut
    Ah oui, d'accord, je pensais pas à l'écran
    C'est normal oui en effet.

    Quelqu'un a une soluce pour affecter une valeur en pixels à element.style.left ?
    (En javascript)


    EDIT : Ah oui, super Cosmo !
    Merci.

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : janvier 2011
    Messages : 16 714
    Points : 43 264
    Points
    43 264
    Par défaut
    Bonjour,
    Citation Envoyé par Doksuri
    la position absolute est toujours par rapport a un parent referent (un element parent en position:relative)
    => si aucun parent n'est en relative, c'est le body, le referent par default
    je trouve cela très très restrictif car en fait tout parent positionné autre que static est parent référent.
    Cela s'applique donc également aux positions
    • relative
    • absolute
    • fixed
    • sticky

    De plus une propriété comme translate, filter, perspective appliquée à un parent lui confère également le statut de référent.


    Citation Envoyé par Doksuri
    le position:fixed est par rapport a l'ecran
    plus exactement par rapport au viewport mais pas que. Si un parent crée un contexte d'empilement alors celui-ci est candidat à être parent référent.

    Donc en gros si un parent possède une des propriété citées ci dessus, il sera référent.

  9. #9
    Membre expérimenté
    Homme Profil pro
    chomeur
    Inscrit en
    avril 2015
    Messages
    683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : chomeur
    Secteur : Distribution

    Informations forums :
    Inscription : avril 2015
    Messages : 683
    Points : 1 499
    Points
    1 499
    Par défaut
    jour

    utilise getBoundingClientRect() qui se référé toujours a la fenêtre
    Plus vite encore plus vite toujours plus vite.

  10. #10
    Membre régulier
    Homme Profil pro
    sans
    Inscrit en
    mai 2023
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : mai 2023
    Messages : 145
    Points : 83
    Points
    83
    Par défaut
    Merci à tous, c'est chouette tout ce qu'on peut apprendre ici juste en une question
    Bonne journée !!!

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

Discussions similaires

  1. Centrer une div , horizontalement et verticalement, dans un TD
    Par neo_2000_2006_59 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 22/06/2011, 10h53
  2. Centrer un div...
    Par Davboc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/01/2006, 22h57
  3. Centrer la DIV
    Par SangKou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 16
    Dernier message: 20/12/2005, 02h04
  4. [CSS][CrossBrowser] Centrer de divs
    Par francky356 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 30/11/2005, 14h39
  5. Centrer une <div> en position fixe sous IE
    Par Jorus dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 23/09/2004, 15h29

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