Je voudrais utiliser la transition CSS3 scale()
pour un effet de survol, mais je voudrais garder les mêmes dimensions de l'image de survol. Ainsi, l'effet est que l'image effectue un zoom avant, mais elle reste limitée à sa largeur et sa hauteur existantes.
img:hover {
transform:scale(1.5);
-ms-transform:scale(1.5); /* IE 9 */
-moz-transform:scale(1.5); /* Firefox */
-webkit-transform:scale(1.5); /* Safari and Chrome */
-o-transform:scale(1.5); /* Opera */
}
Voici une base violon pour commencer.
Mais encore une fois, je veux que l'image conserve la largeur/hauteur.
Je ne suis pas marié à utiliser l'échelle CSS3. Il y a peut-être une meilleure façon de redimensionner l'élément.
Vous pouvez réaliser cela simplement en enveloppant l'image par un <div>
Et en ajoutant overflow: hidden
à cet élément:
<div class="img-wrapper">
<img src="..." />
</div>
.img-wrapper {
display: inline-block; /* change the default display type to inline-block */
overflow: hidden; /* hide the overflow */
}
Il convient également de noter que l'élément <img>
(Comme les autres éléments en ligne) se trouve sur son ligne de base par défaut . Et il y aurait un 4~5px
Espace au bas de l'image .
Cet écart vertical appartient à l'espace réservé des descendants comme: g j p q y. Vous pouvez résoudre le problème d'alignement en ajoutant la propriété vertical-align
à l'image avec une valeur autre que baseline
.
De plus, pour une meilleure expérience utilisateur, vous pouvez ajouter transition
aux images.
Ainsi, nous nous retrouverons avec ce qui suit:
.img-wrapper img {
transition: all .2s ease;
vertical-align: middle;
}