28220 sujets

CSS et mise en forme, CSS3

Salut,

J'ai différents petits problèmes concernant un menu que je refais actuellement. Au lieu d'ouvrir plusieurs fil j'ai préféré réunir mes questions en un seul et traiter le menu dans la globalité.
Mon menu pourra peut-être servir à quelqu'un plus tard.

Je pense que mes questions ne vous paraîtrons claires qu'après avoir lu le code et vu le menu. Je vous expose mes problèmes mais reste ouvert à toute optimisation, conformisation, clarification, etc. du code Smiley cligne

Maintenant les différents problèmes :

1) Depuis que j'ai refait le menu j'ai des problèmes de placement de mes listes. Elles ne se calent pas précisément au bon endroit. De plus, cela dépend de la taille de la police, on remarque bien la différence quand on joue avec la roulette de la souris (et le comportement est différent sous IE & FF). Quand j'étais atteint de classite aiguë (bon bouquin soit dit en passant) je n'avais jamais eu ce problème.
Je ne pense donc pas que ce soit inévitable, alors par quel moyen peut-on palier ce problème?

2) Vous allez voir dans le menu, il y a des séparateurs (<hr />) placés dans mes listes. Ce qui n'est pas valide. Savez-vous comment puis-je afficher une séparation dans une liste? Une séparation qui ne ferait pas toute la ligne.

3) J'ai un sous-menu avec des listes imbriquées. Or le comprtement de IE & FF diffèrent sur la taille du texte :
- si je ne spécifie pas de taille dans ma liste imbriquée, le texte du sous-menu est plus petit que celui du menu. Or je souhaite qu'il garde la même taille que le menu.
- si je spécifie la même taille dans le sous-menu que dans le menu, FF l'interprête comme je le souhaite mais IE agrandi le texte.
Comment puis-je faire un sous-menu avec une taille de texte identique au menu?

4) La hauteur des listes sous IE ne veut pas diminuer. Avec des marges internes et externes pourtant définies à 0. Je crois savoir que le problème est connu et le seul moyen que j'ai trouvé est un hack. Mais je n'ai pas envie de faire d'exception.
Savez-vous comment régler ce problème?

Merci par avance pour votre lecteur et votre aide éventuelle.

<html>
<head>
	<link rel="stylesheet" href="style.css" type="text/css" />
	<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="menu">
	<h3 id="Titre1" onclick="switchMenu('Menu1');">Menu 1</h3>
	<ul id="Menu1">
		<li><a href="#">Lien 10</a></li>
		<li><a href="#">Lien 11</a></li>
		<li><a href="#">Lien 12</a></li>
		<li><a href="#">Lien 13</a></li>
	</ul>
	<h3 id="Titre2" onclick="switchMenu('Menu2');">Menu 2</h3>
	<ul id="Menu2">
		<li><a href="#">Lien 20</a></li>
		<li><a href="#">Lien 21</a></li>
		<li class="sousMenu"><a href="#" onclick="switchMenu('SousMenu1');">Lien 22</a>
			<ul id="SousMenu1" class="hiddenMenu">
				<li><a href="#">Lien 220</a></li>
				<li><a href="#">Lien 221</a></li>
				<li><a href="#">Lien 222</a></li>
			</ul>
		</li>
	</ul>
	<h3 id="Titre3" onclick="switchMenu('Menu3');">Menu 3</h3>
	<ul id="Menu3">
		<li><a href="#">Lien 30</a></li>
		<li><a href="#">Lien 31</a></li>
		<hr class="separateur" />
		<li><a href="#">Lien 32</a></li>
		<li><a href="#">Lien 33</a></li>
		<li><a href="#">Lien 34</a></li>
		<li><a href="#">Lien 35</a></li>
		<hr class="separateur" />
		<li><a href="#">Lien 36</a></li>
	</ul>
	<a id="deconnexion" href="#">Lien 4</a>
</div>
</body>
</html>

body {
	margin: 0em;
	padding: 0em;
	background-color: white;
	color: black;
	font-family: Georgia, "Bitstream Vera Serif", serif;
}
/*************************************/
/*************  MENUS  **************/
/*************************************/

/**************  GENERAL  ***********/
#menu {
	margin: 0em;
	padding: 0em;
	width: 10.6em;
	font-family: Verdana, "Bitstream Vera Sans", Helvetica, Arial, sans-serif;
}
#menu ul {
	padding: 0em;
	margin: 0em 0em 0em 0.5em;
	background-color: #D8E2EF;
	border: 1px solid #82A1CD;
	/*-moz-border-radius: 1em 1em;*/
}
#menu li {
	margin: 0em;
	padding: 0em;
	background-color: #D8E2EF;
	font-size: 0.75em;
	list-style: none;
	/*-moz-border-radius: 1em 1em;*/
	border-bottom: 0.1em solid #D8E2EF; /* Hack pour la hauteur des li dans IE */
}
/** Note : le sélecteur #menu li > a ne fonctionne pas sous IE **/
#menu ul li a {
	display: block;
	padding: 0.1em 0em 0.2em 0.4em;
	color: #2E62AA;
	text-decoration: none;
}
#menu ul li a:visited {
	color:#2E62AA;
}
#menu ul li a:hover {
	background-color: #82A1CD;
	color: white;
}

.hiddenMenu {
	display: none;
}

.separateur {
	border: 1px solid #82a1cd;
	width: 120px;
}
/**************  GENERAL  ***********/

/*************  RUBRIQUE  ***********/
#menu h3 {
	margin: 0.5em 0em 0em 0.5em;
	padding: 0.2em;
	background-color: #82A1CD;
	color: white;
	text-align: center;
	font-size: 0.9em;
	font-style: italic;
	cursor: pointer;
	border-width: 0px;
	-moz-border-radius: 1em 1em 0em 0em;
}
/*************  RUBRIQUE  ***********/

/*********  SOUS-RUBRIQUE  ********/
#menu ul * ul {
	margin: 0em;
	border-width: 0px;
}
#menu li * li {
	padding: 0em;
	/*font-size: 1em;*/						/* Taille du texte du sous-menu difficile à manipuler */
	background-color: #EDF1F7;
	border-bottom: 0.1em solid #EDF1F7; /* Hack pour la hauteur des li dans IE */
}
#menu li.sousMenu {
	background-color: #EDF1F7;
}
/*********  SOUS-RUBRIQUE  ********/

/*********  DECONNEXION  *********/
#deconnexion {
	display: block;
	margin: 0.5em 0em 0em 0.5em;
	padding: 0em;
	background-color: #D8E2EF;
	border: 1px solid #82A1CD;
	text-align: center;
	font-weight: bold;
	text-decoration: none;
	color:	#2E62AA;
	-moz-border-radius: 1em 1em;
}
#deconnexion:visited {
	color:#2e62aa;
}
#deconnexion:hover {
	background-color: #82a1cd;
	color: white;
}
/********* DECONNEXION  **********/

/*************************************/
/*************  MENUS  **************/
/*************************************/

Modifié par bbp (28 Oct 2005 - 18:48)
Administrateur
bbp a écrit :
Dernière tentative de demande d'aide. Après je gomme tout...

Hello,

Pour commencer, éviter ce genre de "chantage" complètement inutile et se demander plutôt ce qui réfrène les autres membres à t'aider :
- est-ce parce que tu poses plein de questions différentes en 1 sujet ?
- est-ce parce que ton titre est bien trop vague ?
- est-ce parce que tu balances un code très long (que personne ne va prendre le temps de recopier chez lui), plutôt que de donner une url en ligne où les membres pourraient directement jouer avec les CSS ?

Je pense qu'il s'agit d'un ensemble de tout ça.
Je pense aussi qu'il faudrait faire des efforts de recherche de ton coté avant de critiquer les aides qui ne viennent pas assez vite selon toi.

Par exemple, pour tous les problèmes de mise en page, il est vivement conseillé de suivre la Méthodologie qui se trouve en annonce du salon CSS. Cette Méthodologie fait en général des miracles jusqu'à maintenant et permettrait au-moins de mettre le doigt sur le ou les problèmes.
Modifié par Raphael (25 Oct 2005 - 16:56)
Salut,
a écrit :
Pour commencer, éviter ce genre de "chantage" complètement inutile
C'était mon code que je voulais gommer pour recommencer à 0 mais je comprends en relisant qu'on le prenne comme tu l'entends.
a écrit :
- est-ce parce que tu poses plein de questions différentes en 1 sujet ?
- est-ce parce que ton titre est bien trop vague ?
J'y ai réfléchi et je m'explique dans le topic.
a écrit :
- est-ce parce que tu balances un code très long (que personne ne va prendre le temps de recopier chez lui), plutôt que de donner une url en ligne où les membres pourraient directement jouer avec les CSS ?
C'est peut-être aussi que je n'en n'ai pas encore. Mais je vais y penser et m'en prendre un, apparemment ça vaut mieux.
a écrit :
Je pense aussi qu'il faudrait faire des efforts de recherche de ton coté avant de critiquer les aides qui ne viennent pas assez vite selon toi.
J'ai aussi un sentiment de frustration car je bloque malgré mes recherches.
a écrit :
Par exemple, pour tous les problèmes de mise en page, il est vivement conseillé de suivre la Méthodologie qui se trouve en annonce du salon CSS. Cette Méthodologie fait en général des miracles jusqu'à maintenant et permettrait au-moins de mettre le doigt sur le ou les problèmes.
Je suis novice en CSS mais pas en développement. Et oui les marges externes et ineternes sont à 0 là où elles doivent l'être.

Tu as retiré la solution du <hr /> dans le <li>?
Modifié par bbp (25 Oct 2005 - 17:04)
Salut !!

Ne s'ennervont pas Smiley smile

1- Tu exprimes tes margin, padding, width en EM, normal que tout cela s'aggrandisse en augmentant la taille de police avec le navigateur.

2- En mettant un border-bottom au dernier li de ta liste, ou sur un autre vide ?

3- Je sais pas trop, mais quand je travaille en EM, je mets une taille de police fixe dans mon body (en px) afin que tout les navigateurs partent sur la même base.

4- Peut-être un line-height, mais faire un site sans hacker une seule fois IE me semble difficile, rien que les border... Et hop hack Smiley biggol
1) J'ai dû mal m'exprimer. Je souhaite justement utiliser un maximum les tailles relatives pour des questions d'accessibilité et d'affichage selon les préférences utilisateur. Pour le positionnement du menu j'ai tout de même opté pour un positionnement fixe en pixels car ça ne dérange pas pour la mise en forme du site et l'accessibilité.
Ca corrige l'approximation constatée par rapport à la marge gauche. Seulement, je constate toujours une approximation entre mes <H3> et <UL> sous FF. Parfois un espace de 1px apparaît entre eux. On dirait que FF a parfois du mal à calculer.
N'y a-t-il donc rien pour pallier ça?

2) Comme je ne souhaite pas que le séparateur fasse toute la largeur du menu j'ai donc opté pour la solution de Raphael. Tellement simple...

3) Impossible d'avancer... Et je ne souhaite pas de tailles de police fixe pour les raisons évoquées en 1).

4) J'adopte donc le hack définitivement, malheureusement...

Merci pour vos propostions.
De retour!

Le temps de me créer une page peros sur free pour que vous puissiez facilement voir ce que ça donne.
http://bb.public.free.fr/css/menu.html

Pour résumé on voit que la taille du texte dans le sous-menu n'est pas la même selon le navigateur ce qui est bloquant pour moi. impossible de mettre un menu comme ça en ligne.
On constate aussi un espace entre le titre du menu et la liste dans FF. Cet espace apparaît quand il veut (selon la taille du texte sélectionné).

Je suis impatient d'avoir vos commentaires Smiley lol (même si ce n'est pas directement lié à mes problèmes)

Merci encore.
Modifié par bbp (27 Oct 2005 - 23:07)
Finalement il ne fallait pas définir de taille de texte dans le sous-menu. J'étais persuadé que même en ne précisant pas quelque chose n'allait pas!

Il ne reste que le problème d'aproxomation sur la position des conteneurs. Mais bon je ne peux rien y faire.