Biomehanika
Biomehanika

Reputation: 1540

Apply hover out ease effect using css animation

On this LIVE DEMO you can see how animation works in each div moves its image and gives opacity:1 to text.

When hover-off, naturally all styles get back to their initial state directly, but I want them to do it smoothly(ease), instead of setting all initial styles at the same time with no progress.

Here it is related animation code:

#highlights div[class*="high-"]:hover > p {
    -webkit-animation:downOp 0.3s ease-in 0s forwards;
    -ms-animation:downOp 0.3s ease-in 0s forwards;
    animation:downOp 0.3s ease-in 0s forwards;
}
#highlights div[class*="high-"]:hover > .image {
    -webkit-animation:imgTrans 5s ease-out 0s forwards;
    -ms-animation:imgTrans 5s ease-out 0s forwards;
    animation:imgTrans 5s ease-out 0s forwards;
}
@-webkit-keyframes downOp {
    0% {
        opacity:0.7;
    }
    100% {
        opacity:1;
    }
}
@-ms-keyframes downOp {
    0% {
        opacity:0.7;
    }
    100% {
        opacity:1;
    }
}
@keyframes downOp {
    0% {
        opacity:0.7;
    }
    100% {
        opacity:1;
    }
}
@-webkit-keyframes imgTrans {
    0% {
        margin-right: 0;
    }
    100% {
        margin-right: -50px;
    }
}
@-ms-keyframes imgTrans {
    0% {
        margin-right: 0;
    }
    100% {
        margin-right: -50px;
    }
}
@keyframes imgTrans {
    0% {
        margin-right: 0;
    }
    100% {
        margin-right: -50px;

} }

Upvotes: 1

Views: 883

Answers (2)

Suresh Karia
Suresh Karia

Reputation: 18218

Use css transform instead of css animation! It will automatically handle hover-out effect!

html

<article id="highlights">
    <div class="high-rinoplastia">
        <div class="image"></div>
        <p><strong>Rinoplastia</strong>

            <br> <span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod</span>

        </p>
    </div>
</article>

css

    #highlights {
    min-height: 525px;
    width: 1170px;
    margin:0 auto;
}
#highlights div[class*="high-"] {
    border: 1px solid rgba(0, 0, 0, 0.28);
    display: inline-block;
    float: left;
    height: 150px;
    margin: 10px;
    position: relative;
    width: calc(33% - 20px);
    overflow: hidden;
}
#highlights .image {
    height:100%;
    transition:all 4s ease;
}
#highlights p {
    background-color: white;
    bottom: 0;
    height: 60px;
    margin-bottom: 0px;
    position: absolute;
    opacity:0.7;
    transition:all 0.6s ease;
}
#highlights span {
    display: block;
    font-size: 12px;
    margin: 2px;
}
#highlights:hover p {
    opacity:1;
}
#highlights:hover .image {
    transform:all 5s ease;
    margin-right: -50px;
}
#highlights .high-rinoplastia .image {
    background: url(http://mypet.guru/wp-content/uploads/2014/06/fluffy-cats-009.jpg) no-repeat right center;
}
#highlights .high-venas .image {
    background: url(http://mypet.guru/wp-content/uploads/2014/06/fluffy-cats-009.jpg) no-repeat right center;
}
#highlights .high-cirugiaCalvicie .image {
    background: url(http://mypet.guru/wp-content/uploads/2014/06/fluffy-cats-009.jpg) no-repeat right center;
}
#highlights .high-tratamientoCalvicie .image {
    background: url(http://mypet.guru/wp-content/uploads/2014/06/fluffy-cats-009.jpg) no-repeat right center;
}

Upvotes: 1

Abhijeet yadav
Abhijeet yadav

Reputation: 80

Everything remains same just add transition to p and image element.

#highlights .image {
    height:100%;
    -webkit-transition: all 0.5s ease; // increase 0.5s to whatever you wish in order to add more smoothness
    -moz-transition: all 0.5s ease;
    -ms-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    transition: all 0.5s ease;
}

#highlights p {
    background-color: white;
    bottom: 0;
    height: 60px;
    margin-bottom: 0px;
    position: absolute;
    opacity:0.7;
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -ms-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    transition: all 0.5s ease;
}

Upvotes: 1

Related Questions