Bon, voici un premier jet, perfectible, pas accessible, et qui ne marche pas sans javascript. Mais bon, c'est vite fait
Au moins c'est valide
C'est ici :
http://www.mistike.com/divers/trilobites/
Les plus :
* Une seule image < 100Ko donc un seul chargement et pas de "clignotement".
* L'image en question est placée dans le document HTML et pas dans le CSS car ce n'est pas de la déco.
* Je suis trop forte en détourage à la hache, si si.
* Code simple et clair (?)
* On peut faire pareil pour le "hover" facilement
* On peut améliorer en changeant le "alt" de l'image par exemple
Les moins :
* javascript obligatoire - il faut implémenter une solution en cas de JS désactivé.
* load supplémentaire du script et de la librairie JQuery ( < 60 Ko).
* Pas testé sous autre chose que FF3/Vista
Le code 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" lang="fr" xml:lang="fr" >
<head>
<title>Les Trilobites - Essai 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="trilobite.js"></script>
<style type="text/css" media="all">
@import url("/divers/trilobites/default.css");
</style>
</head>
<body>
<div id="trilobite">
<img src="trilobite.jpg" alt="Trilobite" />
</div>
<div id="liste">
<p>Cliquez sur une des parties du corps pour voir l'illustration</p>
<ul>
<li><a class="cephalon" href="#">Céphalon</a></li>
<li><a class="thorax" href="#">Thorax</a></li>
<li><a class="pygidium" href="#">Pygidium</a></li>
</ul>
<a href="#">Et ici pour revenir à l'image vierge.</a>
</div>
<div id="texte">
<a href="#">Un autre lien qui n'a rien à voir.</a>
</div>
</body>
</html>
CSS:
#trilobite
{
float: left;
width: 283px;
height: 393px;
overflow: hidden;
margin: 20px;
}
#liste
{
float: left;
}
#trilobite img
{
position: relative;
}
#texte
{
clear: left;
}
Et JQuery :
$(document).ready(function()
{
$("#liste a").click(function(event)
{
event.preventDefault();
if($(this).hasClass("cephalon"))
{$("#trilobite").children("img").css("left","-283px");}
else if($(this).hasClass("thorax"))
{$("#trilobite").children("img").css("left","-566px");}
else if($(this).hasClass("pygidium"))
{$("#trilobite").children("img").css("left","-849px");}
else
{$("#trilobite").children("img").css("left","0");}
}
);
});
Libre aux pros du JS de rendre mon bout de code plus propre si possible (j'aime pas les elseif
)
Maintenant, la question est : peut-on implémenter ça sans JS ? Je pense à la proposition de <span> d'Arsène que je n'ai pas testée.
Modifié par mistike (05 May 2009 - 13:29)