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 :

Center verticalement un DIV


Sujet :

CSS

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut Center verticalement un DIV
    Bonjour,

    Ce petit problème semble récurrent en CSS et je cherche une façons simple (fonctionnant sous IE et FF) de le résoudre.

    Je veux simplement placer un DIV à mi hauteur de ma page (de mon body).
    Ce div aura une taille fixe de X par Y pixels. J'arrive avec les margin:right et left à le centrer horizontalement mais pas verticalement.

    Comment faire?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut
    en positionnement absolu c'est pas possible ? (si ton site a une taille fixé en hauteur)

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    Si ( doù mon tag "résolu" )

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #main
    {
    	position:absolute;
    	background-color:#00FF00;
    	width: 700px ;
    	height: 340px ;
    	top:50%;
    	left:50%;
    	margin-top:-170px;
    	margin-left:-350px;
    }
    Maintenant je n'arrive pas à positioner verticalement mon div à une autre position que le centre ... ( par exemple a 70% de la hauteur). Hop, ca m'apprendra à mettre mon problème résolu alors qu'il est encore là ^^

    Edit : Allez zou, j'ai résolu mes problèmes avec des solutions qui m'on parrut bien tordu ... mais après tout, je crois que c'est le css qui veux ca

  4. #4
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 748
    Points
    3 748
    Par défaut
    Bonjour,

    La seule propriété CSS qui permet logiquement l'alignement verticale est vertical-align-middle, cette propriété n'est prévu que pour aligner les éléments de type inline et table-cell (malheureusement non supporté par IE6).
    J'ai pensé à deux solutions qui peuvent fonctionner même sans fixer d'hauteur.

    1er solution pour les navigateurs supportant table-cell :
    Code HTML et CSS : 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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr">
    <head>
    	<style type="text/css">
    	body, html { height:100%; }
    	#page { height:100%; width:100%; display:table; background:red; }
    	.container { display:table-cell; vertical-align:middle; }
    	.content { background:green; }
    	</style>
     
    </head>
     
    <body>
    	<div id="page">
    		<div class="container">
    			<div class="content">
    				bla bla
    			</div>
    		</div>
    	</div>
    </body>

    Grâce à table-cell, l'élément se comporte comme une cellule de tableau et donc aucun problème pour utiliser vertical-align quelque que soit le type des blocs enfants.

    2eme solution pour IE6, assez lourde en la comparant avec table-cell ...
    Positionner le container en absolute et lui appliquer un top:50% ensuite positionner le content en relative et le retirer avec un top:-50%, ceci positionne content bien au milieu quelque soit sa hauteur :
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	<!--[if IE 6]> 
    	<style type="text/css">
    	#page { position:relative;  }
    	.container {  position:absolute; height:200px; top:50%; }
    	.content { position:relative; top:-50%;  }
    	</style>
    	<![endif]-->

    Le code en résumé
    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
    30
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr">
    <head>
    	<style type="text/css">
    	body, html { height:100%; }
    	#page { height:100%; width:100%; display:table; background:red; overflow:hidden }
    	.container { display:table-cell; vertical-align:middle; }
    	.content { background:green; }
    	</style>
     
    	<!--[if IE 6]> 
    	<style type="text/css">
    	#page { position:relative;  }
    	.container {  position:absolute; height:200px; top:50%; }
    	.content { position:relative; top:-50%;  }
    	</style>
    	<![endif]-->
     
    </head>
     
    <body>
    	<div id="page">
    		<div class="container">
    			<div class="content">
    				bla bla
    			</div>
    		</div>
    	</div>
    </body>

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

Discussions similaires

  1. Presque center verticalement un DIV ?
    Par Mister Paul dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 31/01/2012, 01h21
  2. colonnes factices : centrer verticalement les DIV
    Par sebhm dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 18/02/2009, 12h11
  3. centrer verticalement un DIV en fonction du scroll
    Par discogarden dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/04/2008, 17h11
  4. Aligner verticalement un <div>
    Par Michaël dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 07/12/2005, 10h12

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