Je veux qu'un élément div s'étende sur une largeur de 33% avec une image d'arrière-plan réalisée en css
background-image:url(); background-size:cover
Comment puis-je animer un zoom avant de l'image de l'arrière-plan dans la div au survol de la souris ou du mouseneter, existe-t-il un plugin qui peut le faire? Le div d'arrière-plan doit utiliser background-size: cover car c'est une page élastique.
Je n'ai pas encore de violon car je ne sais pas par où ni comment commencer
<div class="wrap">
<div></div>
<p>hello</p>
</div>
html, body {
height: 100%;
}
div.wrap {
height: 33%;
width: 33%;
overflow: hidden;
position: relative;
}
div.wrap > div {
position: absolute;
height: 100%;
width: 100%;
-moz-transition: all .5s;
-webkit-transition: all .5s;
transition: all .5s;
-moz-transform: scale(1,1);
-webkit-transform: scale(1,1);
transform: scale(1,1);
background-image: url('http://pimg.tradeindia.com/00288122/b/0/Our-Valuable-Client-List-Click-on-Image-.jpg');
-moz-background-size: cover;
-webkit-background-size: cover;
background-size: cover;
z-index: -1;
}
div.wrap:hover > div {
-moz-transform: scale(2,2);
-webkit-transform: scale(2,2);
transform: scale(2,2);
}
Démo (Utiliser background-size: cover;
Pour faire la transition/zoomer l'élément)
Comme vous avez dit que la transition de la taille cover
est nécessaire, j'ai donc trouvé l'astuce que je vous avais dit précédemment, ici j'ai un élément enfant imbriqué sous l'élément position: relative;
Où je vais avoir l'enfant élément réglé sur position: absolute;
avec background-image
ayant background-size
réglé sur cover
puis sur hover
du parent, je fais un zoom avant sur l'élément en utilisant le transform: scale(2,2);
propriété.
En outre, une chose cruciale lors de l'utilisation de cette solution est que nous devons définir le z-index
De l'élément position: absolute;
Plus bas que les éléments que vous placerez à l'intérieur, il agira donc comme un background
Vous ne pouvez pas animer un background-size
Si sa valeur est cover
donc vous aurez besoin de px
ou %
, Ou vous pouvez également utiliser un img
tag avec la propriété transform: scale(2,2);
.
Démo 2 (zoom avant ou zoom arrière depuis le centre)
div {
height: 200px;
width: 200px;
background: url('http://pimg.tradeindia.com/00288122/b/0/Our-Valuable-Client-List-Click-on-Image-.jpg');
background-size: 100% 100%;
-moz-transition: all .5s;
-webkit-transition: all .5s;
transition: all .5s;
}
div:hover {
background-size: 150% 150%;
}
Si vous voulez vous en tenir à background-size: cover;
, Vous devrez envelopper l'élément entier dans un élément wrapper ayant des dimensions fixes avec overflow: hidden;
Et mettre à l'échelle l'élément enfant sur hover
de l'élément parent .
Comme vous l'avez commenté, pour un exemple de balise img
, vous pouvez utiliser transform: scale(2,2);
pour y parvenir avec l'élément parent défini sur overflow: hidden;
div {
height:300px;
width: 300px;
overflow: hidden;
}
div img {
-moz-transition: all .5s;
-webkit-transition: all .5s;
transition: all .5s;
-moz-transform: scale(1,1);
-webkit-transform: scale(1,1);
transform: scale(1,1);
}
div:hover img {
-moz-transform: scale(2,2);
-webkit-transform: scale(2,2);
transform: scale(2,2);
}