Première technique▲
- FireFox ;
- MSIE 7 + ;
- Mozilla / SeaMonkey ;
- Opéra 7 + ;
- Safari.
- img:hover
Code (X)HTML▲
L'image est déclarée dans le code HTML sans valeurs de taille (ni width, ni height).
Code CSS▲
Pour éviter tout saut ou recouvrement du texte sous-jacent lors du zoom, on peut déclarer cette image dans un cadre (ici appelé zoom) de hauteur égale à la photo zoomée (ici 400px). De même, ce cadre servira aussi à limiter cette propriété grossissante à cette seule image.
Les valeurs de taille sont déclarées au sein de la feuille de style, tout d'abord dans son état initial (img), puis dans son état survolé (img:hover).
Ici, les dimensions de l'image passeront de 200x267 pixels à 300x400 pixels.
.zoom
{
height:
400
px;
}
.zoom
p {
text-align:
center
;
}
.zoom
img {
width:
200
px;
height:
267
px;
}
.zoom
img:
hover
{
width:
300
px;
height:
400
px;
}
Visionner l'exemple en ligne.
Seconde technique▲
- tous les navigateurs graphiques.
- background ;
- cursor ;
- display ;
- height ;
- margin ;
- width.
Pour cet âne bâté d'Internet Explorer, il va falloir tricher
en faisant croire que l'image est un lien, ce qui est
sémantiquement très discutable...
Cette fois l'image ne sera plus déclarée dans la page HTML
mais uniquement dans la feuille de style en fond d'écran
(background).
De plus, il faudra avant tout travailler la photo ou figurera,
l'une en dessous de l'autre, l'image initiale et l'image à
apparaître lors du zoom.
- l'image sera plus lourde, donc plus longue à charger ;
- en cas d'impression, la photo n'apparaîtra pas si l'internaute a configuré la non-impression des fonds d'écran.
<div class
=
"zoom1"
>
<p>
<a href
=
"#"
title
=
"pensées de Giverny"
></a>
</p>
</div>
Code CSS▲
L'image pensees_2.jpg a donc été créée avec un bon logiciel de traitement d'images (PUB : PhotoFiltre est agréablement performant, et gratuit en cas d'utilisation privée). Elle a une taille finale de 300x800 pixels pour un poids de 49 ko.
Toute l'astuce va être de faire apparaître les morceaux choisis de cette image : la partie haute par défaut (300x400 pixels) puis la partie basse (300x400 pixels aussi) au survol de la souris.
Cette dernière devant "remonter" de 400 pixels vers le haut, on indiquera pour la position de fond de page background-position:0px -400px (condensé dans le code dans la déclaration background) ; le 0 étant relatif à la position horizontale et le -400px à la position verticale.
Ne pas oublier surtout le très important display:block qui permet ici le "remplacement" de la première portion d'image par l'autre.
.zoom1
{
width:
300
px;
height:
400
px;
background:
url(
pensees_2.jpg
)
no-repeat
;
margin:
0
auto
;
}
.zoom1
p,
.zoom1
a {
height:
400
px;
display:
block
;
margin:
0
}
.zoom1
a:
hover
{
background:
url(
pensees_2.jpg
)
no-repeat
0
-400px;
cursor:
help
;
}
Visionner l'exemple en ligne.
Variante▲
On peut choisir évidemment de garder les mêmes dimensions d'images pour ne zoomer qu'une partie.
Pour cette variante, j'ai choisi de zoomer une seule de ces fleurs. L'image, dans ce cas, est pensees.jpg. Elle a une taille de 200x534 pixels pour un poids de 27 ko. Cette fois, la "remontée" de l'image ne doit être que de 267 pixels.
Code CSS▲
Avec le même code (X)HTML que ci-dessus, le code CSS devient :
.zoom1
{
width:
200
px;
height:
267
px;
background:
url(
pensees.jpg
)
no-repeat
;
margin:
0
auto
;
}
.zoom1
p,
.zoom1
a {
height:
267
px;
display:
block
;
margin:
0
}
.zoom1
a:
hover
{
background:
url(
pensees.jpg
)
no-repeat
0
-267px;
cursor:
help
;
}
Visionner l'exemple en ligne.
Remerciements▲
Un grand merci à Benjamin Poinsot pour sa relecture.