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

Bon, ça avance Smiley smile
En fait, je n'avais pas bien compris le hack IE: je l'appliquais au div conteneur (celui dont on a modifié le display en table) au lieu de l'appliquer aux éléments contenus Smiley rolleyes .

Ce reste à faire:
- essayer de centrer mon div sous IE
- enlever le petit espace qui apparaît entre mon coin gauche et mon premier bouton-onglet
- enlever le séparateur qui apparaît juste après le premier bouton-onglet sélectionné, que je cache normalement sous les autres navigateurs avec:
#tab-menu #current-left + li  {
	background-image: none; /* Remove separation after the selected tab (wich already include its own separation) */
}


Voilà un screenshot de ce que ça donne sous IE6 pour l'instant:
upload/10439-IEscreensh.jpg
Si ça continue, je vais utiliser le hack JavaScript "/IE7/"… Parce-qu'apparemment il n'existe pas de moyen de contourner la non prise en compte du sélecteur d'adjacence sous IE (le "+") Smiley decu .

Quelles sont les contre-indications à l'utilisation de ce hack?
Modifié par Mateo (18 Jan 2007 - 21:20)
Bon, je n'arrive toujours pas à centrer mes boutons-onglets sous IE 5.5 et 6 Smiley decu Smiley decu

Y'a-t-il une âme charitable pour m'aider?

NB: je n'utilise pas le hack JS "IE7" et je suis passé en largeur fixe, il y avait trop de problèmes.

Page HTML:

<!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" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

	<title>Test</title>

	<link rel = "stylesheet" type="text/css" href="../css/defaultLayout.css"/>

</head>
<body>

	<div id = "header">
		<!-- Here comes the header -->
		<!-- The image is in the CSS file -->
	</div>

	<!-- Here comes the tab menu -->
	<div id = "tab-menu">

		<!-- Left corner of the tab menu -->
		<div id = "tabs-left-corner"></div>

		<div id = "tabs-right">
			<ul>
				<li id = "first-tab"><a href="#">Home</a></li>
				<li><a href="#">Curing</a></li>
				<li><a href="#">Measurements</a></li>
				<li id = "current-left"><div id = "current-right"><a>Lab Materials</a></div></li>
				<li id = "after-current"><a href="#">My Operations</a></li>
				<li><a href="#">My Files</a></li>
			</ul>
		</div>
	</div>

	<div id = "main">
		<div id = "content-left">
			<!-- Here comes the content -->
			<div id = "content">
				<p>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablablablablabla blablabla blablabla blablabla blablabla<br/>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablablablablabla blablabla blablabla blablabla blablabla<br/>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablablablablabla blablabla blablabla blablabla blablabla<br/>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablablablablabla blablabla blablabla blablabla blablabla<br/>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablablablablabla blablabla blablabla blablabla blablabla<br/>
				</p>
				<p>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablablablablabla blablabla blablabla blablabla blablabla<br/>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablablablablabla blablabla blablabla blablabla blablabla<br/>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablablablablabla blablabla blablabla blablabla blablabla<br/>
				</p>
			</div>
		</div>
	</div>
	<div id = "bottom-left-border"></div> 
	<div id = "bottom-right-border"></div>

	<div id = "footage">
		<!-- Here comes the footage -->
	</div>
</body>
</html>


Feuille CSS (le code propre à IE est à la fin):

* {
	margin: 0;
	padding: 0;
}

#header {
	width: 100%;
	height: 150px;
	background: url("../images/logo.jpg") no-repeat scroll center;
}

body {
	width: 780px;
	margin: 5px auto 20px;
}

/* @group Tab menu */

/* @group Menu bar */

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

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

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

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

/* @end */

/* @group Tabs */

#tab-menu 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;
}

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

#tab-menu 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;
}

#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 Main Content */

#content-left {
	background: url(../images/main-left-border.gif) repeat-y left;
	padding-left: 3px; /* in order to display the border */
}

#content {
	text-indent: 1em;
	background: #fff url(../images/main-right.gif) repeat-y right;
	padding: 20px 20px 7px;
}

/* @end */

/* @group Bottom borders */

#bottom-left-border {
	background: url(../images/bottom-left-corner.gif) no-repeat;
	float: left;
	width: 13px;
	height: 13px;
}

#bottom-right-border {
	background: url(../images/bottom-right.gif) no-repeat right;
	height: 13px;
}

/* @end */

/* @group IE only */

/* IE has lot of bugs, so we have to do this... */

/* @group Tab menu */

/* @group Menu bar */

* html #tabs-left-corner {
	width: 11px;
}

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

/* @end */

/* @group Tabs */

* html #tab-menu li {
	display:inline-block;
	min-width:1%;
	width:auto !important; /* For IE7 */
	width:1%;
	white-space:nowrap;
}

/* @end */

/* @end */

/* @group Bottom borders */

* html #bottom-right-border {
	margin-top: -3px;
	position: relative;
	left: -3px;
	margin-right: -3px;
}

/* @end */

/* @end */

Modifié par Mateo (22 Jan 2007 - 18:07)
Modérateur
bonjour,

je vois que tu as des oucis avec IE Smiley smile

L'usage des commentaires conditionnels est vraiment une bonne chose , cela permet d'inclure ou non IE7 assurement au regles "alternatives".

En passant les regles css en cc pour tout les IE , on s'assure de tous les ciblés.
Le but du jeu est de joué en partie avec le haslayout out de IE , probleme qui existe encore dans IE7.

je viens de reprendre ta page en reintegrant le code de l' exemple que j'avais donner precedement :

en testant das les versions standalone de IE 5.01 a 7 , le menu est centré.

sans les images , je dois avoué ne pas avoir le rendu "suppossé".

<!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" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<title>Test</title>
	<style type="text/css" >
* {
	margin: 0;
	padding: 0;
}

#header {
	width: 100%;
	height: 150px;
	background: url("../images/logo.jpg") no-repeat scroll center;
}

body {
	width: 780px;
	margin: 5px auto 20px;
}

/* @group Tab menu */

/* @group Menu bar */
#tab-menu * {
	height: 34px;
}

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

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

#tab-menu ul {

}
/* @end */

/* @group Tabs */

#tab-menu li {
	background: url(../images/tab-separation.gif) no-repeat left;
}

#tab-menu #first-tab { /* Can't use first-child because IE doesn't support it */
	background: none; /* Hide first separation */
}
#tab-menu 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;
}

#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;

}

#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;
	
}
#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 Main Content */

#content-left {
	background: url(../images/main-left-border.gif) repeat-y left;
	padding-left: 3px; /* in order to display the border */
}
#content {
	text-indent: 1em;
	background: #fff url(../images/main-right.gif) repeat-y right;
	padding: 20px 20px 7px;
}

/* @end */
/* @group Bottom borders */

#bottom-left-border {
	background: url(../images/bottom-left-corner.gif) no-repeat;
	float: left;
	width: 13px;
	height: 13px;
}
#bottom-right-border {
	background: url(../images/bottom-right.gif) no-repeat right;
	height: 13px;
}

/* @end */
/* @group IE only */
/* IE has lot of bugs, so we have to do this... */

/* @group Tab menu */

/* @group Menu bar */

* html #tabs-left-corner {
	width: 11px;
}
* html #tabs-right {
	
}

/* @end */
/* @group Tabs */

* html #tab-menu li {
	display:inline-block;
	min-width:1%;
	width:auto !important; /* For IE7 */
	width:1%;
	white-space:nowrap;
}

/* @end */

/* @end */

/* @group Bottom borders */

* html #bottom-right-border {
	margin-top: -3px;
	position: relative;
	left: -3px;
	margin-right: -3px;
}

/* @end */

/* @end */









/* ajout rapide css menu centré IE 50.1 -> 7 */

/* 1) reprise du code pour tous */

/* regles communes */
#menu {
	display:table;
	padding:0; 
	margin:0 auto; 
 	list-style-type:none;
	white-space:nowrap;
}

#menu li {
	display:table-cell;
	width:120px;
} 
#menu a {
	width:auto;
	display:block;
	padding:4px 16px;
}

#menu a:hover {
	color:#22670D; 

}

#tab-menu {
	clear:both;
	text-decoration:none;
}


/* 2) regle percues par Ie en commentaires conditionnel , 
on ferme la section style pour en rouvrir une pour IE juste aprés  */
</style>
<!--[if IE]>
<style type="text/css">

#menu li {
	zoom:1;/* specifité IE , sujette a bug et casse tête mais utiles parfois */
	display:inline;
}

#tab-menu {
	text-align:center;
	display:block;
}

 #menu {
	display:inline-block;
}



</style>
<![endif]-->
</head>
<body>
	<div id = "header">
		<!-- Here comes the header -->
		<!-- The image is in the CSS file -->
	</div>
	<!-- Here comes the tab menu -->
	<div id = "tab-menu">
		<!-- Left corner of the tab menu -->
		<div id = "tabs-left-corner"></div>
		<div id = "tabs-right">
			<ul id="menu">
				<li id = "first-tab"><a href="#">Home</a></li>
				<li><a href="#">Curing</a></li>
				<li><a href="#">Measurements</a></li>
				<li id = "current-left"><div id = "current-right"><a>Lab Materials</a></div></li>
				<li id = "after-current"><a href="#">My Operations</a></li>
				<li><a href="#">My Files</a></li>
			</ul>
		</div>
	</div>
	<div id = "main">
		<div id = "content-left">
			<!-- Here comes the content -->
			<div id = "content">
				<p>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla 

lablabla blablablablablabla blablabla blablabla blablabla blablabla
				</p>
				<p>
					Blablabla blablabla blablabla blablabla blablabla blablabla blablabla blablabla 

blablabla blablablablablabla blablabla blablabla blablabla blablabla
				</p>
			</div>
		</div>
	</div>
	<div id = "bottom-left-border"></div> 
	<div id = "bottom-right-border"></div>
	<div id = "footage">
		<!-- Here comes the footage -->
	</div>
</body>
</html>


C'est un peu "souillon" , mais la page devrait te suffire a faire un rapide test , puis a l'analyser le code si cela est positif. En fait, seul la partie pour IE t'interesse et elle est assez succinte.

GC
Modifié par gcyrillus (25 Jan 2007 - 02:09)
Pages :