Cette structure serait valide en HTML5, puisque les ancres peuvent envelopper presque tous les éléments, à l'exception des autres ancres et des contrôles de formulaires. La plupart des navigateurs actuels prennent en charge ce type de structure et analyseront le code de la question comme du HTML valide. La réponse ci-dessous a été écrite en 2011, et peut être utile si vous supportez des navigateurs anciens (*tousse* Internet Explorer *tousse*).
Les navigateurs plus anciens qui n'ont pas d'analyseur HTML5 (comme, par exemple, Firefox 3.6) ne s'y retrouveront pas et risquent de perturber la structure du DOM.
Trois options pour HTML4 - utiliser tous les éléments en ligne :
<a href=etc etc>
<span class="layout">
<span class="title">
Video Type
<span class="description">Video description</span>
</span>
</span>
</a>
Ensuite, le style avec display: block
Utiliser JavaScript et :hover
:
<div class="layout">
<div class="title">
Video Type
<div class="description">Video description</div>
</div>
</div>
Et (en supposant que jQuery)
$('.layout').click(function(){
// Do something
}):
Et
.layout:hover {
// Hover effect
}
Enfin, il est possible d'utiliser le positionnement absolu pour placer un a
avec CSS pour couvrir l'ensemble de la .layout
<div class="layout">
<div class="title">
Video Type
<div class="description">Video description</div>
</div>
<a class="more_link" href="somewhere">More information</a>
</div>
Et CSS :
.layout {
position: relative;
}
.layout .more_link {
position: absolute;
display: block;
top: 0;
bottom: 0;
left: 0;
right: 0;
text-indent: -9999px;
z-index: 1000;
}
Cela ne fonctionnera pas avec les anciennes versions d'IE, bien entendu.