28112 sujets

CSS et mise en forme, CSS3

Bonjour.

Je m'en remets à vous pour un problème que je ne comprends pas sous Internet explorer (encore lui ??!!! Smiley eek ).

Je m'occupe de la refonte d'un menu et je m'aperçois que les sous menus sont très espacés, sans que je comprenne pourquoi. J'ai essayé d'utiliser des margin:0 et paggin:0 mais rien à faire ! Ce qui est bizarre c'est que les titres du menu n'ont pas tous ce problème d'espace car pour les menus du bas il n'y a pas de problème !! Voyez par vous mêmes (seulement sur IE) : http://www.make-development-inclusive.org/index.php?spk=fr&wid=1024. J'ai même essayé un height:O% ou 1% mais ca n'a fait qu'empirer les choses !!

Voici "la maquette" du menu (code html) :
<div id="menu">
	<ul>
		<li><a>Rendre le développement inclusif</a><!--gros titre 1 du menu-->
			<ul>
				<li><a></a></li><!--sous titre du gros titre 1 du menu-->
				<li><a></a></li>
			</ul>
		</li>
		<li><a>Le projet</a><!--gros titre 2 du menu-->
			<ul>
				<li><a></a></li><!--sous titre du gros titre 2 du menu-->
				<li><a></a></li>
			</ul>
		</li>
		<li><a>Evénements</a><!--gros titre 3 du menu-->
			<ul>
				<li><a></a></li><!--sous titre du gros titre 3 du menu-->
				<li><a></a></li>
			</ul>
		</li>
		<li><a>Outils et ressources </a><!--gros titre 4 du menu-->
			<ul>
				<li><a></a></li><!--sous titre du gros titre 4 du menu-->
				<li><a></a></li>
				<li><a></a></li>
				<li><a></a></li>
			</ul>
		</li>
		<li><a>Partenaires </a><!--gros titre 5 du menu-->
			<ul>
				<li><a></a></li><!--sous titre du gros titre 5 du menu-->
				...
				...
				...
			</ul>
		</li>
	</ul>
</div>


Et voici mon code css pour le menu :
/*menu*/

/*positionner le menu*/
#menu 
{
	float:left;
	width:23%;
	margin-left:0.5%;
}

/*concerne tous les liens du menu (tous les titres et sous titres donc tout le menu en fait)*/
#menu a 
{
	display:block;
	font-size:0.85em;
	border-top:1px solid #F30;
	border-bottom:1px solid #F30;
	border-left:1px solid #F30;
	text-decoration:none;
	font-weight:bold;
	padding-left:3%;
	/*height:1%;*/
}

/*concerne uniquement les sous-menu - aligne sur les sous menus*/
#menu li li a 
{
	font-size:0.8em;
	border-bottom:none;
	border-top:none;
	/*margin:0% 0%;*/
	margin-left:3%;
}

/*concerne tout le menu (menu et sous menu) - aligne sur grands titres*/
#menu ul
{
	list-style-type:none;/*enlever les puces des zones de liste*/
	/*padding:0;*/
	margin:0;
}

/*concerne les menus et sous menus sur deplacement de la souris*/
#menu li a:hover 
{
	color:#000080;
	background-color:#FFFF97;
}

/*concerne les menus et sous menus sur reception focus - utile quand on accede au menu depuis les raccourcis claviers*/
#menu li a:active
{
	color:#000080;
	background-color:#FFFF97;
}



Merci d'avance pour votre aide Smiley smile .
Salut,

Dans firefox avec FireBug et en inspectant tes éléments il me semble que tes a héritent d'un padding en % un peu partout du style :


        padding:0.5% 0 0.5% 4%;


Peut être que tu as une déclaration qui traine quelque part dans ton fichier...
Sinon je n'ai aucune idée, ton CSS semble bon Smiley ohwell
Merci de ta réponse N-J.

Je ne connais pas Firebug, mais en cherchant sur le net, j'ai vu que ca a l'air d'un outil puissant Smiley cligne .

Pour le padding, sous firefox c'est normal car j'ai une autre feuille css pour firefox donc je n'ai pas mis les mêmes règles css.

Je viens de mettre mon css pour le menu IE à la place du css pour le menu de firefox. Il y a du décalage pour l'ensemble du menu (c'est normal sinon j'aurais pas 2 feuilles css différentes Smiley langue !!!) mais je n'observe pas le problème d'espacement que j'avais sous firefox. Donc a priori mon css pour IE a l'air correct.
J'ai fait l'inverse ensuite, cad prendre le css de FF et le mettre pour IE et là aussi je constate le problème !! C'est donc bien IE le problème Smiley fache Smiley fache Smiley fache !!

J'ai aussi enlevé toutes les autres règles css (pour IE) pour voir si il n'y avait pas "d'interférences". Mais ca n'a pas résolu le problème ouinnnnnn Smiley sweatdrop !!!

Pour finir, je viens de remettre height à une valeur tres petite pour les balises <a></a> (height:0.1%) et l'espacement diminue mais c'est pas encore complètement ca !!
Regarde par toi même : http://www.make-development-inclusive.org/index.php?spk=en&wid=1024

Quoi qu'il en soit on avance... lentement mais sûrement ! Smiley biggrin

En attendant de prochaines idées...
je viens de m'apercevoir que en rajoutant height dans les balises <a>, d'accord l'espacement est réduit mais la fin du menu (la derniere grande partie) qui n'avait pas de problème d'espacement jusque là eh bien maintenant c'est comme dans le reste du menu !

Donc finalement je sais pas si on peut dire qu'on avance... Smiley rolleyes

Je signale que cette derniere partie, qui marchait si bien avant, est généré à l'aide d'une table mysql et du php alors que le reste du menu est du simple html.

Est-ce que ca t'avancerais que je t'envoie le code php ??

Et là, c'est que le premier jour de la semaine !!! Smiley bawling
En bidouillant un peu (beaucoup) j'y suis arrivé !!! Smiley biggrin

En appliquant la classe "pb_espace" à tous les sous menus sauf le dernier car là (on sait pas trop pourquoi) ca marchait bien avant, je suis arrivé à réduire tous les espaces. Smiley biggrin
J'ai appliqué du code css tout bête :
.pb_espace /*resoudre le probleme d'espace en trop sous IE*/
{
	margin-bottom:-7.5%;
}


Maintenant j'ai un autre problème Smiley fache ... vu que j'ai réduit l'espace l'événement hover ne marche plus très bien... cet événement ne se manifeste que lorsqu' on se met sur le lien et pas sur toute la ligne qui contient le lien !! C'est pas à ca que ca sert, le dispay:block ?? Smiley decu

Point positif : on avance !!
Salouto,

Le code php n'aiderait pas donc pas besoin de le faire figurer ici ^^.
Et si tu mets un background-color sur tes <a> tu as bien une zone tout autour de ce lien ou alors rien ne se passe ?
Souvent le background-color te permet de bien visualiser tes zones, mais là c'est bizarre...

Peut être pourrais tu tenter de faire un "reset CSS" pour que tous les éléments soient réinitilaisés. Ce n'est pas forcément très conseillé mais peut être ça réglera ton problème(mais peut être aussi défoncera tes positionnements....).
Re.

Alors j'ai fait ce que tu m'a proposé. J'ai mis un background pour les balises a. J'ai fait une page expres pour ca. Regarde ici : http://www.make-development-inclusive.org/test.php.

Fais pas attention à cette belle couleur verte Smiley cligne !! On voit bien que le display:block est bien pris en compte pas de souci.

Mais le pseudo événement hover a quelques soucis... Smiley decu


Apres j'ai regardé ton lien sur le reset de css. Je sais pas si j'ai bien compris comment l'utiliser... J'ai tout simplement copié le code au debut de mon css... mais ca n'a rien changé pour le hover. Ca a juste changé le positionnement des éléments. D'ailleurs la page de test où il y a juste le menu contient dans son code css le "reset du css"

Attends là je viens de m'apercevoir d'un truc tres bizarre. Quand je positionne le curseur de la souris entre le 1er et le 2eme sous menu (là où il y a un tout petit espace blanc, entre "Inclusive development" et "Policy papers on disability in development") eh bien miracle ! l'événement hover s'applique, même si je suis complètement à droite donc pas sur le lien !!! Ca c'est magique !!! Smiley cligne (Regarde par toi même)

Alors là je serais vraiment curieux d'avoir une explication !!! Smiley langue
Modifié par rom117 (13 Jul 2009 - 23:15)
rom117 a écrit :
Re.

Apres j'ai regardé ton lien sur le reset de css. Je sais pas si j'ai bien compris comment l'utiliser... J'ai tout simplement copié le code au debut de mon css... mais ca n'a rien changé pour le hover. Ca a juste changé le positionnement des éléments. D'ailleurs la page de test où il y a juste le menu contient dans son code css le "reset du css"


Oui le reset CSS te permet de remettre les padding et les margin à 0 et autres bugs d'affichage des navigateurs tel qu'on les connait.

Je viens de voir le problème du CSS, j'ai tenté de mettre le "width" de tes <a> à 100% mais ca tue la mise en page, il ne te suffit plus qu'à mettre un width à ton ul et le tour est joué. Ca marche bien sur IE8, a voir sur IE6 que je n'ai malheureusement pas sous la main...
Bonjour,

Le probleme majeure de mise en forme se trouve dans le document :
<!--création de variables qui contiennent la plupart des phrases, des titres a inclure dans le site-->


Ce simple commentaire devant le doctype de la page fait basculé IE en mode quirk , ce qui implique un rendu CSS très différents du rendu "standard" auquel tu t'attends

Enleve donc ce commentaire html inutile et passe le en commentaire php si tu tiens a le garder dans tes sources.

Suite au retrait , il y a de grande chance que ton code css initial convienne.

GC
En effet, N-J, tu as raison pour les width:100% ca a enlevé le problème de la propriété hover. En revanche j'ai à nouveau les problèmes d'espaces... Je les ai résolus en faisant des margin-bottom:-xxx% mais finalement mes titres sont trop serrés. Donc il y toujours un os... Smiley sweatdrop
gc-nomade, tu es l'homme de la situation !!!

Car le problème que tu as décris était bien celui que j'avais !! IE étant en mode...comment tu as dit deja... ah oui quirk ! J'ai enlevé tous les commentaires html avant le doctype et tout marche pour le menu. Mais maintenant beaucoup d'éléments sont décalés. Bref faut que je revoie tout le code css Smiley sweatdrop ... Mais c'est pas grave le probleme est resolu c'est ca qui compte Smiley cligne ! Bon, j'ai plus qu'à me mettre au boulot, moi Smiley smile !!

Sii je résume, il ne faut jamais mettre de commentaires html avant le doctype, c'est bien ca? Ca explique beaucoup de problèmes que j'ai eu avant si c'est rien que ca. A mon avis, beaucoup de gens ont des problemes a cause de ce fameux mode sous IE et ne le savent meme pas !! (vive IE Smiley langue )


Un grand merci à toi encore gc-nomade, et un grand merci à toi aussi N-J pour m'avoir aidé Smiley biggrin

[SUJET RESOLU]

A bientôt sur le forum !!