Issue
In Nextjs, I can change the src using state when I hover over the image, but I want to do this with animation like fadein, fadeout.
const [logoSrc, setLogoSrc] = useState("/logo.png");
<Image
src={logoSrc}
width={237}
height={64}
priority
onMouseEnter={() => {
setLogoSrc("/hover-logo.png");
}}
onMouseOut={() => {
setLogoSrc("/logo.png");
}}
/>
Solution
An image's src
propriety is sadly not part of animatable properties. If you want an animation you could load the two images, hide and show them trough CSS, something like this:
body {
margin: 0;
}
.img-container {
position: relative;
height: 100vh;
}
.img-container .img2 {
opacity: 0;
transition: 1s;
}
.img-container:hover .img2 {
opacity: 1;
}
.img-container img {
display: block;
position: absolute;
width: 100%;
height: 100%;
object-fit: cover;
}
<div class="img-container">
<img class="img1" src="https://images.unsplash.com/photo-1648737966174-c5ef7b893fcd?ixlib=rb-1.2.1&ixid=MnwxMjA3fDF8MHxlZGl0b3JpYWwtZmVlZHwxfHx8ZW58MHx8fHw%3D&auto=format&fit=crop&w=500&q=60" />
<img class="img2" src="https://images.unsplash.com/photo-1654175979772-0f0eaa672d08?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHw4fHx8ZW58MHx8fHw%3D&auto=format&fit=crop&w=500&q=60" />
</div>
Answered By - yousoumar
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.