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 :

min-height et IE


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut min-height et IE
    Bonjour !

    Bon, c'était juste pour copier le titre d'un sujet récent

    En vrai y aussi min-width ^^

    J'explique le problème :

    Je souhaiterais centrer horizontalement et verticalement mon bloc, pour cela, j'utilise un positionnement absolu, et je centre le conteneur.

    Pas de problème, sauf que lorsque que l'on réduit la fenêtre, le texte s'évade dans le coin haut/gauche de la fênetre et disparait, ennuyeux...

    Evidemment j'ai pensé au min-height et min-width, que j'ai mis pour FF et qui corrige le bug, qui persiste cependant sous IE 6 ou ces attributs ne sont pas reconnus.

    Pour parer à ça, j'ai voulu mettre un peu de JS pour IE 6 via un commentaire conditionnel, sauf que IE 6 ne se sent toujours pas concerné.

    Mon code me parait bon, même si je suis surpris de devoir placer le min-height dans html, j'aurais cru bon de la placer dans body, mais dans ce cas c'est sans effet, sous FF y compris.

    Bref, fin de la parlotte, du code :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <!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">
    <head>
    	<!--[if lt IE 7]>
    		<style type="text/css">
    			html {
    				height : 600px ;
    				width : 700px ;
    				width : expression(document.body.clientWidth < 800? "800x": "auto" ) ;
    			}
    		</style>
    	<![endif]-->
     
    	<style type="text/css">
    		html {
    			margin : 0 ;
    			padding : 0 ;
    			height : 100% ;
    			min-height : 600px ;
    			min-width : 800px ;
    		}
    		body {
    			margin : 0 ;
    			padding : 0 ;
    			background-color : #FFFFFFF ;
    		}
    		#contenu {
    			position : absolute ;
    			top  : 50% ;
    			left : 50% ;
    			margin-top : -300px ; /* height : 2 */
    			margin-left : -400px ; /* width : 2 */
    			height : 600px ;
    			width : 800px ;
    			background-color : #FF5555 ;
    		}
    	</style>
    <body>
    	<div id="contenu">Ceci est mon text, mais il faut qu&rsquo;il soit suffisemment long pour que je puisse avoir des retours à la ligne,mais pas trop pour pouvoir s&rsquo;afficher à l&rsquo;écran, quel casse-tête ! Et si vous redimensionnez l&rsquo;écran, hop, je disparais, la preuve, t&rsquo;arrives plus à lire le début hein ?</div>
    </body>
    </html>

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Je viens également de constater que malgré le Doctype, le modèle de boîte Microsoft persiste sur IE 6, pb de Doctype ?

    J'fais une correction en commentaires conditionnel, ça marche, mais le Doctype n'aurait pas du forcer le mode standard ? ( Je sens qu'on va encore me renvoyer vers des liens sur W3C ^^' )


    EDIT : Bon, pour le coup du min-heigth c'est bon, enfin, pour FF, je l'ai mis dans body et ça marche, c'était juste que mon conteneur aurait du être en relatif.
    Et pour mon deuxième pb, c'est juste qu'en faisant un copier/coller j'ai viré le Doctype par mégarde...

    Reste toujours le pb de min-height / min-width sur IE, case départ !

  3. #3
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Finalement j'ai rusé, plutôt que de définir la largeur de body, j'ai choisis de changer la valeur des top,left,margin-top et margin-left de mon conteneur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!--[if lt IE 7]>
    		<style type="text/css">
    			#contenu {
    				position : relative ;
    				top : expression(document.body.clientHeight < 610? "5px": "50%" ) ;
    				left : expression(document.body.clientWidth < 810? "5px": "50%" ) ;
    				margin-top : expression(document.body.clientHeight < 610? "0px": "-300px" ) ;
    				margin-left : expression(document.body.clientWidth < 810? "0px": "-400px" ) ;
    				height : 600px ;
    				width : 800px ;
    			}
    		</style>
    	<![endif]-->

  4. #4
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Par contre, même si IE8 admettra le display:table, ça ne sera toujours pas le cas de IE 6 et 7, qui représenteront toujours le quart des internautes, au bas mot.

  5. #5
    Membre Expert
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Par contre, même si IE8 admettra le display:table, ça ne sera toujours pas le cas de IE 6 et 7, qui représenteront toujours le quart des internautes, au bas mot.
    Non, mais le js vient s'occuper du centrage vertical pour les vieux ie (comme c'est le cas actuellement pour IE6 qui a pourtant encore bien des parts de marché) le centrage horizontal étant déjà effectif à l'aide des marges auto:
    Code xhtml : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Centrage vertical</title>
    	<style type="text/css">
            html,body {
                    width:100%;
                    height:100%;
                    margin:0;padding:0;
            }
     
     
            html {
                    display:table;
            }
     
            body {
                    display:table-cell;
                    vertical-align:middle;
            }
     
     
            div {
                    width:300px;
                    background:red;
                    margin:0 auto;
                    border:1px solid black;
            }
            </style>
     
    <!--[if lt IE 8]>
     
      <style type="text/css">
                    div {
                            position:relative;
                            top:expression(document.body.clientHeight<=this.offsetHeight ? "0" : (document.body.clientHeight-this.offsetHeight)/2+"px");
                    }
            </style>
    <![endif]-->
    </head>
    <body>
    	<div id="contenu">Ceci est mon text, mais il faut qu&rsquo;il soit suffisemment long pour que je puisse avoir des retours à la ligne,mais pas trop pour pouvoir s&rsquo;afficher à l&rsquo;écran, quel casse-tête ! Et si vous redimensionnez l&rsquo;écran, hop, je disparais, la preuve, t&rsquo;arrives plus à lire le début hein ?</div>
    </body>
    </html>
    Bien plus souple
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et :resolu: si c'est le cas

  6. #6
    Membre Expert
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Mon code me parait bon, même si je suis surpris de devoir placer le min-height dans html, j'aurais cru bon de la placer dans body, mais dans ce cas c'est sans effet, sous FF y compris.
    c'est probablement parce que tu as oublié de donner un position:relative au body qu'il devienne la référence pour le positionnement absolu.

    Pourquoi redéfinir le width et height quand ils sont déjà définis dans le css de base?

    Perso je chercherais à éviter de redéfinir des dimensions dans mon css IE pour faciliter la maintenance. En ce sens ceci me semble moins contraignant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <!--[if lt IE 7]>
    	<style type="text/css">
    		#contenu {
    		  margin:0;
    		  top:0;left:0;
    		  top:expression(document.body.clientHeight<=this.offsetHeight ? "0" :  (document.body.clientHeight-this.offsetHeight)/2+"px");
    		  left:expression(document.body.clientWidth<=this.offsetWidth ? "0" :  (document.body.clientWidth-this.offsetWidth)/2+"px");
    		}
    	</style>
    <![endif]-->
    En fait je n'ai que rarement utilisé les marges négatives pour le centrage vertical d'un texte, la hauteur fixe ne me convenant guère. En ce sens j'ai toujours utilisé une cellule de tableau pour le centrage d'une page entière. Depuis l'annonce qu'IE8 supportera enfin les display:table, je pense opter pour cette solution qui ne requière pas de hauteur spécifiée.
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et :resolu: si c'est le cas

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

Discussions similaires

  1. min-height non reconnue sous IE ?
    Par jncoffy dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 26/06/2007, 16h06
  2. Réponses: 2
    Dernier message: 02/06/2007, 15h53
  3. min-height avec Firefox
    Par jadorelescss38 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/03/2007, 11h16
  4. [CSS] Probleme avec min-height
    Par Seth77 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 30/06/2006, 15h46
  5. Problème hauteur height et min-height
    Par Royd938 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/11/2005, 17h00

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