Je souhaiterais mettre une liste de définitions (<dl>) dans un <a>. Mais <a> est un élément de type inline, et <dl> un élément de type block. Comment faire?

En fait, le <a> n'est pas vraiment un lien. Il sert juste à activer le <dl> au survol de la souris (à cause du bug d'IE).
Bonjour Fat_Piglet Smiley smile .

Comme tu sembles le savoir, on ne place pas un <dl> dans un <a>.

Par ailleurs, c'est une mauvaise pratique d'utiliser un <a> pour autre chose qu'un véritable lien. Ça peut être déroutant de cliquer sur un lien vide, sans parler des problèmes que ça entraine dans les navigateurs vocaux, etc.

Pour en savoir plus sur l'effet de survol :
Hoverdose de survols
Overdose de survols 2 le retour
Bonjour,
Une question bête : à quoi cela va-t-il bien pouvoir te servir de mettre un <dl> dans un <a> ? Parce que pesonnellement, je n'en vois pas l'utilité. Un lien aussi long serait fort indigeste, et pour une ancre, tu peux sans problème définir un texte plus petit, voire pas de texte du tout.
Fat_Piglet a écrit :
Je souhaiterais mettre une liste de définitions (<dl>) dans un <a>. Mais <a> est un élément de type inline, et <dl> un élément de type block. Comment faire?

En fait, le <a> n'est pas vraiment un lien. Il sert juste à activer le <dl> au survol de la souris (à cause du bug d'IE).


Si tu veux faire un survol sur ce dl, pourquoi n'essaierais-tu pas ceci :



dl:hover
	{
	/*Ton code au survol*/
	}


Ca devrait marcher il me semble...
Pas sur IE, justement.
Mais pourquoi faire un effet de survol sur un truc qui ne réagit normalement pas au clic ?
QuentinC a écrit :
Pas sur IE, justement.
Mais pourquoi faire un effet de survol sur un truc qui ne réagit normalement pas au clic ?


Un truc? Quel truc? le <a>?

Bon, je vous envoie mon code


	<li><a>Lien
	<span>
		<dl>
		  <dt><a href="#">Sous-lien 1</a></dt>
		  <dt><a href="#">Sous-lien 2</a></dt>
		</dl>
	</span>
	</a></li>
C'est censé faire quoi quand tu cliques sur ton <a> ?
Parce que je n'en vois pas l'utilité, un simple lien aurait suffi, non ?
C'est un menu déroulant. (désolé je n'avais pas pensé à vous le dire au début)

Le <dl> s'affiche au survol du <a>
Alors pourquoi pas faire comme tout le mond e?


<a onmouseouver="document.getElementById('mondl').style.display = 'block';" href="...">Menu</a>
<dl id="mondl">...</dl>
Mais on ne peut pas le faire sans JavaScript? Avec des CSS? (un peu comme les infobulles du livre "CSS2 - Pratique du design web")
Ok.

Donc un menu déroulant en général (sans forcément utiliser un <dl> à l'intérieur) est impossible à réaliser?
Bonjour,

Ah... Si seulement CSS pouvait enfin avoir aussi mauvaise réputation que javascript !

Un menu déroulant full CSS est tout aussi fragile qu'un menu déroulant javascript (ou plutôt mixte CSS-javascript). Il n'est pas plus accessible, pas plus "sémantique", pas plus satisfaisant. Pas moins, non plus.

Tout comme javascript, CSS est une "option". Et tout comme javascript, CSS est utilisé actuellement comme une techique palliative, faute d'un (X)HTML offrant de meilleurs mécanismes pour des interfaces de ce type (c'est le fond du problème).

Et dans un cas comme dans l'autre, l'essentiel est la manière dont se dégradera le menu quand les conditions optimales de rendu ne sont pas remplies.
Modifié par Laurent Denis (11 Dec 2005 - 07:16)