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 :

Centrer une div avec ou sans scroll


Sujet :

Défilement en CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut Centrer une div avec ou sans scroll
    Bonjour

    J'ai une div 'container' dont le contenu est zappé dynamiquement par un menu, c'est à dire que plutôt que de recharger la page je contrôle en javascript le display (block/none) des divs 'content0'/'content1' imbriquées dans la div 'container'.

    Cette div est bêtement centrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #container {
    	margin: 0 auto;
    	width: 800px;
    }
    Le problème est juste que 'content0' déborde en hauteur alors que généralement 'content1' ne déborde pas, et quand la barre de défilement est ajoutée, l'ensemble de la page est décalé vers la gauche ...

    Je suppose qu'il y a un moyen de régler ça avec les css sans ajouter du js ?

    J'ai essayé en position absolute mais c'est la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #container {
    	left: 50%;
    	margin-left: -400px;
    	width: 800px;
    	position: absolute;
    }
    Et en fixed le scroll n'est pas affiché ... Comment feriez vous ça ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Non, il n'y a pas de moyen en CSS.
    Les techniques de centrage horizontal permettent de centrer par rapport à la partie de la page affichant le contenu et la barre de scroll n'en fait pas partie.

    Quant à vouloir régler ça en JavaScript, bon courage, la taille de la barre de scroll n'étant pas du tout uniformisée en fonction des navigateurs !

    La question la plus importante, c'est surtout : est-ce si gênant que ça ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut
    Zut ... C'est vrai que faire de la détection de navigateur pour régler la taille du décalage .. ça devient un peu lourdingue.

    La question la plus importante, c'est surtout : est-ce si gênant que ça ?
    Aujourd'hui ça me gène un peu, mais peut-être est ce un excès de chipotage ... je verrai demain.

    Merci bien !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    une solution :
    De sorte que la barre verticale de scroll soit toujours affichée.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut
    Si jamais ça intéresse quelqu'un j'ai trouvé une solution simple en js, il suffit d'utiliser window.innerWidth, et de contrôler le resize. Ici la div 'container' contient toute la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function centerdiv () {
    	document.getElementById('container').style.left = (window.innerWidth - 800) / 2 + 'px';
    }
    window.addEventListener( 'resize', centerdiv, false );
     
    function zap(content) {
    	...
    	centerdiv();
    }
    zap(1);
    Centrage css supprimé, juste la width correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #container {
    	width: 800px;
    	position: absolute;
    }
    Ça a l'air de marcher (dans 5 navigateurs dernières versions, et pas IE8 apparemment) et c'est quand même mieux.

    Ou effectivement toujours afficher la barre de défilement, merci.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Bonjour,
    Ou effectivement toujours afficher la barre de défilement, merci.
    C'est à mon sens la solution la plus pérenne et la moins surprenante, j'entends par là quelle ne te péteras pas à la figure le jour où un internaute aura décidé de grossir les dimensions de son environnement, paramètres avancés-> barre de défilement ou autres d'ailleurs.

  7. #7
    Membre chevronné
    Profil pro
    Chef Gérant
    Inscrit en
    Octobre 2005
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef Gérant
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2005
    Messages : 230
    Par défaut
    il ya aussi le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    html {min-height:100.01%;}

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

Discussions similaires

  1. [script.aculo.us] Drag and drop dans une div avec un scroll horizontal
    Par ridan dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 21/07/2009, 19h14
  2. Centrer une page avec des DIV imbriqués
    Par emstar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 25/04/2006, 18h42
  3. Centrer une page avec des frames
    Par Nicos77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 10/11/2005, 14h07
  4. Centrer une page avec des frames
    Par Nicos77 dans le forum Langage
    Réponses: 11
    Dernier message: 09/11/2005, 16h52
  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