5568 sujets

Sémantique web et HTML

hello :hello:

je suis confronté à un problème de Doctype. J'ai choisi d'utiliser XHTML strict 1.1. Et je tiens à etre valide dans ce sens. (et je précise aussi que je veux me passer de js pour l'instant)

j'ai un script css (inspiré de cssplay.co.uk) qui fait une sorte de "zoom" sur une image.

le problème est le suivant :
sous IE, ca marche comme je veux. c'est à dire que le zoom est centré sur l'image.
sous firefox :
-> si le doctype est déclaré, l'image se décale vers le haut, je ne comprends pas pourquoi.
-> si le doctype n'est pas déclaré, ca passe

sous opéra, dans tous les cas, ca merde.

le 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="fr" >
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

	<title>Index page de test</title>

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

</head>
<body>
	<div class="raised">
		<b class="top"><b class="b1"></b><b class="b2"></b><b class="b3"></b><b class="b4"></b></b>
		<div class="boxcontent">
			<a href="#"><img alt="img" src="./images/petitlion.jpg" /></a>
			<h4><span class="titre">toto</span></h4>
			<p class="desc_courte">
				avec doctype<br />
				bla<br />
				bla<br />
			</p>
		</div>
		<b class="bottom"><b class="b4b"></b><b class="b3b"></b><b class="b2b"></b><b class="b1b"></b></b>
	</div>
</body>
</html>


le css :

.raised {background: transparent; width:487px; 	margin:10px 30px 10px 0px; float:right;display:inline;}
.raised .boxcontent {
display:block;
background:#FBFBE5;
border-left:1px solid #fff;
border-right:1px solid #999;
padding:5px 10px;
height: 90px;
text-align: left;
}
.raised .top, .raised .bottom {display:block; background:transparent; font-size:1px;}
.raised .b1, .raised .b2, .raised .b3, .raised .b4, .raised .b1b, .raised .b2b, .raised .b3b, .raised .b4b {display:block; overflow:hidden;}
.raised .b1, .raised .b2, .raised .b3, .raised .b1b, .raised .b2b, .raised .b3b {height:1px;}
.raised .b2 {background:#FBFBE5; border-left:1px solid #fff; border-right:1px solid #eee;}
.raised .b3 {background:#FBFBE5; border-left:1px solid #fff; border-right:1px solid #ddd;}
.raised .b4 {background:#FBFBE5; border-left:1px solid #fff; border-right:1px solid #aaa;}
.raised .b4b {background:#FBFBE5; border-left:1px solid #eee; border-right:1px solid #999;}
.raised .b3b {background:#FBFBE5; border-left:1px solid #ddd; border-right:1px solid #999;}
.raised .b2b {background:#FBFBE5; border-left:1px solid #aaa; border-right:1px solid #999;}


.raised .b1 {margin:0 5px; background:#fff;}
.raised .b2, .raised .b2b {margin:0 3px; border-width:0 2px;}
.raised .b3, .raised .b3b {margin:0 2px;}
.raised .b4, .raised .b4b {height:2px; margin:0 1px;}
.raised .b1b {margin:0 5px; background:#999;}

.boxcontent a img {
width:120px; height:90px;
border:0; 
position: absolute;
z-index: 50;
}
.boxcontent a:hover {
position:relative;
}

.boxcontent a:hover img {
width:130px; height:100px;
position:absolute;
left:-5px; top:-5px;
border:0;
z-index: 100;
margin:0px;
padding:0px;

}
.boxcontent h4{
margin: 0px 0px 5px 130px;
border-bottom: 1px solid #6878C6;
font-weight: bolder;
color: #6878C6;
}
.boxcontent .desc_courte{
margin: 0px 0px 0px 130px;
}


un exemple est visible ici :
http://nabbo.free.fr/avec.html -> avec doctype
http://nabbo.free.fr/sans.html -> sans doctype

voilà, je demande des avis éclairés, parce que là je ne suis plus...
:jap:
Modérateur
bonjour,

les marges avec le doctype peuvent etre "nivelées" pour tout les navigateurs en commençant le css par
* {margin:0;padding:0;}


le selecteur universelle annulleras toutes marges a tous les elements , il ne reste plus qu'a definir les notres.

Je ne voit pas trop de "bugs" dans la page , du moins l'effet est present .. avec ses "effets secondaires", mais peut-etre (une fois de plus) en conservant les elements dans le flux , il serait plus aisé de retrouvé un comportement semblable dans les 3 navigateurs que tu cite (ff,IE (6) et opera .

par exemple
dimensionné la balise a grace a un float au lieu d'un position:absolute.
mettre un padding au lieu d'une marge aux balises hn et p .
redimensionné l'image au :hover avec un : position:relative; sur a pour activé l'effet visuel dans IE aussi , etc ...

Il est possible d'obtenir ce que tu cherche avec ou sans position absolute (au vu du grossisement recherché ) sur le hover.

++

<edit>
il s'agit plus d'un probleme de mise en forme a la base.

en considerant qu'il s'agit d'un extrait de page et que l'usage du <a> soit effectivement aussi là pour un veritable lien, ce serait semantiquement correcte .

Quand a l'arrondis de la boite , semantiquement ça ne veut rien dire et ne vehicule aucune infos pertinentes, ... sans nuire a priori aux contenus ... pourtant que de balises "superflues" qui risquent peut-etre "d'alourdir " de façon importante la page si la "technique" est renouvellée sur de nombreuses "boites" ou l'ensemble du site (une technique basée sur images ou un simple "border:.. inset..;" et un " border-radius" pour certains navigateurs peuvent a termes economisé de la bande passante).
Smiley smile
</edit>
Modifié par gcyrillus (10 Aug 2006 - 17:03)
Salut

Une remarque : le sélecteur universel, c'est une belle idée, ça, mais ça supprime vraiment toutes les marges par défaut sur tous les éléments ...

Au final, il est en général moins fastidieux de redéfinir les marges qui posent problème que de le faire systématiquement Smiley confus
Modérateur
bonjour,

en fait tout depend a partir d'ou tu travaille la mise en forme , si'il s'agit au depart de creer de toute piece la mise en forme graphique d'un site , cela facilite grandement la tache et les "reprises" pour un navigateur ou l'autre sont moindres. a l'opposées si il s'agit d'ajouter une zone supplementaire graphique a un site deja coder cela est "deconseillé" Smiley cligne , neanmoins le selecteur universelle peut encore "nivellé le terrain "
#nouveauzonegraph * {couleurs de textes , marge , police , etc ...} .

Enfin ça reste une option parmis d'autres , le selecteur universelle n'est bien entendu pas une solution "universelle", et c'est vrai qu'il ne faut pas la servir a tout bout de champs Smiley cligne .

Comme pas de nouvelle , j'en profite pour propose une soluce (IE6, FF et opera 8.54) pour ceux :
<!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="fr"><head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Index page de test</title>
<style type="text/css">


/* annulation des decallages et autres marges par defauts */
* {margin:0;padding:0;} 

html {background:#eee;}

/*///////////////////////////////////////////////////////////////////////*/
.raised {
	background: transparent; 
	width:487px; 	
	margin:10px 30px 10px 0px; 
	float:right;
	display:inline;
}
.raised .boxcontent {
	display:block;
	background:#FBFBE5;
	border-left:1px solid #fff;
	border-right:1px solid #999;
	padding:5px 10px;
	height: auto;
	text-align: left;
}
.raised .top, .raised .bottom {
	display:block; 
	background:transparent; 
	font-size:1px;
}
.raised .b1, .raised .b2, .raised .b3, .raised .b4, .raised .b1b, .raised .b2b, .raised .b3b, .raised .b4b {
	display:block; 	overflow:hidden;
}
.raised .b1, .raised .b2, .raised .b3, .raised .b1b, .raised .b2b, .raised .b3b {height:1px;}

.raised .b2  {background:#FBFBE5; border-left:1px solid #fff; border-right:1px solid #eee;}
.raised .b3  {background:#FBFBE5; border-left:1px solid #fff; border-right:1px solid #ddd;}
.raised .b4  {background:#FBFBE5; border-left:1px solid #fff; border-right:1px solid #aaa;}
.raised .b4b {background:#FBFBE5; border-left:1px solid #eee; border-right:1px solid #999;}
.raised .b3b {background:#FBFBE5; border-left:1px solid #ddd; border-right:1px solid #999;}
.raised .b2b {background:#FBFBE5; border-left:1px solid #aaa; border-right:1px solid #999;}

.raised .b1 {
	margin:0 5px; 
	background:#fff;
}
.raised .b2, .raised .b2b {
	margin:0 3px; 
	border-width:0 2px;
}
.raised .b3, .raised .b3b {
	margin:0 2px;
}

.raised .b4, .raised .b4b {
	height:2px; 
	margin:0 1px;
}
.raised .b1b {
	margin:0 5px; 
	background:#999;
}


/*///////////////////////////////////////////////////////////////////////*/



/* on montre l'image (petite) */
.boxcontent a.zoom img {
	width:120px; 
	height:90px;
	border:0;
}
/* on dimensionne le conteneur (lien) */
a.zoom {
	float:left; 
	width:130px; 
	height:110px;
	background-color:#FBFBE5 ;
	border-right:3px solid #FBFBE5 ;/* une bordure de la couleur du fond pour cacher le soulignement du titre */
}

/* on montre l'image (grande) dans le  conteneur (lien)*/
.boxcontent a.zoom:hover  img  {
	/*position:absolute;*/
	width:130px; 
	height:110px;
	display:block;
	border:0;
}


/* on rappelle a IE ce qu'il doit montrer */
 	/* active l'affichage de l'image dans IE , layout */
		a.zoom:hover {
			position:relative;
		}
/* correction du dimensionnement de la boite pour IE */
		.raised .boxcontent {
			_width:465px; /* AJOUT pour IE6 */
		}
/* /////////// ////// /////////// /////// */


/* englobage des flottants par les  conteneurs (ff, ...) */
.boxcontent {
	overflow:hidden;
} 

/* mise en forme */
.boxcontent h4{
	border-bottom: 1px solid #6878C6;
	font-weight: bolder;
	color: #6878C6;
	margin-top:0.5em;
}
.boxcontent h4 ,   .boxcontent p.desc_courte {
	padding-left:138px;/* decallage des textes sur la gauche */
}

</style></head><body>
	<div class="raised">
		<b class="top"><b class="b1"></b><b class="b2"></b><b class="b3"></b><b class="b4"></b></b>
		<div class="boxcontent">


			<a href="http://forum.alsacreations.com/topic-2-16991-1-HTMLCSS-Problme-de-DOCTYPE.html" title="sujet complet sur le forum d'alsacreations" class="zoom"><img alt="img" src="petitlion.jpg"></a>
			<h4><span class="titre">probleme de DTD ? et compatibilité ?</span></h4>
			<p class="desc_courte"><abbr title="exemple">ex.</abbr> avec doctype (original sur forum alsa).<p/>
				<p>arrondis de cssplay.co.uk</p>
				<p>modif css pour le topic en lien sur l'image </p> 
			</p>

		</div>
		<b class="bottom"><b class="b4b"></b><b class="b3b"></b><b class="b2b"></b><b class="b1b"></b></b>
	</div>
</body></html>


voila, pas tester avec des version inferieur a la 6 pour internet explorer, ni IE7 , ni safari , konqueror, etc ...

++
Modifié par gcyrillus (15 Aug 2006 - 00:21)