28172 sujets

CSS et mise en forme, CSS3

Pages :
Modérateur
(reprise du message précédent)

bonjour,

pour le point 1 , En faisant usage du display:table , on assure la une perrenité du code dans la majorité des navigateur , L'evolution des navigateur , implementant de mieux les normes , on verrait mal disparaitre des regles deja comprises et implémentées .

Pour le cas de IE (au moins 5.5,6 et 7) , Je vais precher a nouveau le layout ! il est possible dans de nombreux cas de reproduire un display:table ; pour un element de type block , ou le display:inline-block; , toujours dans IE , n'efface pas totalement le comportement block , car cette régle est traité a la mode Microsoft et pas W3C. Cela ajoute a la confusion , inline-block(IE) n'est pas le inline-block(opera, ...).

Bon d'abord le display:table; est le comportement d'affichage css par defaut de la balise table , qui fait que l'élément se comportant comme un block , ne vas pas occupé 100% de la largeur disponible et pourra s'élargir au dela de celle-ci. ça sert a ça , un affichage "fluide" par excellence.

IE est incapable de reproduire cette état ailleurs que sur une balise <table> ... et l'alternative possible pour un block : (display:inline;zoom:1;) , et un inline (zoom:1;).

Avec un commentaire conditionnel ,et un fichiers css dédié IE, toutes versions de IE comprenant les CC ,comprennent aussi zoom:1.

Je remet en lien un menu centré (a l'origine c'est un test menu deroulant css ) .

Je vien de faire une mise a jour , de façon a ce que les li soit fluides en fonctions des textes et de l'affichage :

http://gcyrillus.free.fr/essai/menu_deroulant.html

Alors peut-etre est ce mal aisé de mettre en place , pourtant , il s'agit au depart de monté le conteneur principale en display:table; (qui se retracte donc sur les dimensions de ce qu'il contient).
On passe ensuite ce conteneur principale en display:inline; et zoom; pour que lui aussi se retracte sur son contenu , pour le centré , on le place dans un conteneur en text-align:center; ..

Enfin , cela reste relativement simple :

<!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" lang="fr">
<head>
<title>Menu centré</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
ul {
	margin: 0 auto;
	padding: 0;
	list-style: none;
    border:1px solid #333 ;
    display:table; /* pour les besoins de centrage */
	}

ul li {
	float:left;
	padding:0 0.5em;
	background:#ccc ;
	border:1px solid #333 ;
	text-align:center;
}
</style>

<!-- supplement IE pour centré le menu -->
<!--[if  IE ]>
<style type="text/css">
/* l'ensemble de cette portion de css  sert a centré le menu en exemple */
#menu  {
    text-align:center;
    }
ul {
   display:inline;
   zoom:1;
}
</style>
<![endif]-->
</head>
<body> 
	<div id="menu">
	<ul id="menu_pal">
		<li><a href="choix.php">Accueil</a></li>
        <li><a href="galeries.php">Galerie de...</a></li>
		<li><a href="choix.php?p=delete.php">Supprimer un fichier</a></li>
        <li><a href="choix.php?p=stats.php">Stats</a></li>
		<li><a href="choix.php?p=gerer_fichiers.php">Gérer les fichiers</a></li>
</ul>
	</div>
</body>
</html>


Faudrait faire attention au mode allergique , sitot que le mot table apparait Smiley smile .
Sans vouloir trollé , j'espere faire comprendre 2 trucs.

GC
<edit> autant prendre le menu du premier post</>

PS, arf , c'est le vendredi !
Modifié par gcyrillus (28 Sep 2007 - 18:35)
Merci!

L'astuce du display:inline couplé au zoom:1 marche bien avec IE7 en fait. Mais pas avec les versions antérieures. Pourquoi?

Florent: s'il n'y a pas de solution css only pour IE6, je pense que je laisserai tomber, car je n'ai pas envie de tout changer pour cette daube de navigateur. Le site marchera, c'est juste que ce sera moins joli. Merci en tout cas.

Voici la dernière version de mon css:

/* @group Tab menu */

/* @group Menu bar */

#tab-menu * {
    height: 38px;
}

#tab-menu {
    width: 780px;
}

#tabs-left-corner {
    background: url(../images/tab-left-corner.gif) no-repeat left;
    width: 14px;
    float: left;
}

#tabs-right {
    background: url(../images/tab-right.gif) no-repeat right;
}

#tab-menu ul {
    margin: 0 auto;
    padding: 0;
    list-style: none;
    display: table;
}

/* @end */

/* @group Tabs */

#tab-menu ul li {
    float: left;
    padding-left: 11px;
    padding-right: 10px;
    /* padding-right = padding-left + 1 in order the text to be centered (with separator, which is 2px width) */
    background: url(../images/tab-separation.gif) no-repeat left;
    text-align: center;
}

#tab-menu .first-tab {
    /* Can't use first-child because IE doesn't support it */
    background: none;
    /* Hide first separation */
}

#tab-menu ul li a {
    color: #525252;
    font: 0.9em/34px "Lucida Grande", "Lucida Sans Unicode", Verdana, sans-serif;
    text-decoration: none;
    text-shadow: #fff 0px 1px 1px;
    vertical-align: middle;
    text-align: center;
    cursor: pointer;
}

#tab-menu li.current-left {
    background: url(../images/selected-tab-left.gif) no-repeat;
    padding: 0 0 0 1px;
}

#tab-menu li.current-left .current-right {
    background: url(../images/selected-tab-right.gif) right;
    padding-right: 10px;
    padding-left: 10px;
}

#tab-menu li.current-left .current-right a {
    cursor: default;
    color: #666;
    text-shadow: #fff 0px 1px 1px;
    background: url(../images/cursor.gif) no-repeat center bottom;
    display: block;
}

#tab-menu li > a:hover {
    color: gray;
}

#tab-menu li.after-current {
    /* can't use .current-left + li because IE doesn't support "+" */
    background-image: none;
    /* Remove separation after the selected tab (wich already include its own separation) */
}

/* @end */

/* @end */

/* @group IE 7 only */ 

*+html #tab-menu {
    text-align: center;
}

*+html #tab-menu ul {
   display: inline;
   zoom: 1;
}

/* @end */

/* @group IE 6 and previous only */

* html #tabs-right {
    float: left;
}

* html #tab-menu ul li {
    white-space: nowrap;
    width: 1px;
}

/* @end */

Modifié par Mateo (01 Oct 2007 - 06:36)
Modérateur
Pour que cela fonctionne pour les versions anterieur a la version 7 de IE , il te faut faire usages des commentaires conditionnels.

Les hacks basé sur les selecteurs css pour servir ou non un truc aux IEs , ne sont pas fiables , car implémentés ou interprétés differement selon les versions.

L'arrivée de IE7 a remis en cause ce genre de procédés , Les commentaires conditionnels sont , a mon avis , les plus sur a utilisés.

Pour ne pas oublié que l'on en fait usage , il suffit de mettre un commentaire dans le css dans la regles "surchargées". /* voir CC pour IE 5.5 , 6, 7 dans le ficher : CC_IE.css */ parexemple.

GC
Oui, je sais, je comptais passer aux commentaires conditionnels dès que tout marchera nickel.

D'ailleurs il est bien dit dans la FAQ que "dans la plupart des cas, si vous installez plusieurs versions "standalone" d'IE, ces versions de test se comporteront toutes pour les commentaires conditionnels comme la plus récente version d'IE installée sur votre système (donc IE6.0 ou IE7.0 le plus souvent)".

C'est mon cas, je dois donc passer par les hacks pour tester.

Mais une règle propre à IE6, qu'elle soit appliquée par un hack ou par un commentaire conditionnel, ne change pas, si?
Parce-que si j'applique l'astuce du display:inline à IE6 à l'aide d'un hack, au lieu de me centrer mon menu, ça le laisse à gauche et ça rétrécie sa taille (taille minimale permettant d'afficher le texte).
Modifié par Mateo (01 Oct 2007 - 16:59)
Administrateur
Mateo a écrit :

D'ailleurs il est bien dit dans la FAQ que "dans la plupart des cas, si vous installez plusieurs versions "standalone" d'IE, ces versions de test se comporteront toutes pour les commentaires conditionnels comme la plus récente version d'IE installée sur votre système (donc IE6.0 ou IE7.0 le plus souvent)".

C'est mon cas, je dois donc passer par les hacks pour tester.

Ah ben moi j'y lis ça quelques lignes plus bas :
FAQ a écrit :
Dans les Ressources du forum, vous trouverez un lien vers des versions autonomes d'IE qui fonctionnent avec les commentaires conditionnels :
http://tredosoft.com/Multiple_IE

Smiley murf
Modifié par Raphael (01 Oct 2007 - 17:04)
OK OK Raphael, je m'incline Smiley cligne . Bon en tout cas, ça ne réglera pas mon problème de passer par les CC (ce que je ferai plus tard).
Pages :