DEV Community

Cover image for Animated Card (CSS Animation)
Beginner Developer
Beginner Developer

Posted on • Updated on • Originally published at

Animated Card (CSS Animation)

Animated Card
Create an animated card in HTML & CSS

To change the styling of a card based on the element's hover state, focus state, or any of its descendants state, use the pseudo-class selectors :hover and :focus-within.

Using overflow:hidden, hide the extra content of the card and show it on hover.


<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Animated Card</title>
    <link rel="stylesheet" href="style.css">
    <div class="background-image"></div>
    <div class="card">
        <img src=""/>
        <h3>Hover Me</h3>
        <div class="focus-content">
          <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Eveniet quia fugit labore dolores sint reiciendis perspiciatis<br/>
Enter fullscreen mode Exit fullscreen mode

CSS Code

    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
.background-image {
    position: fixed;
    left: 0;
    right: 0;
    display: block;
    background-image: url(;
    -webkit-filter: blur(4px);
    -moz-filter: blur(4px);
    -o-filter: blur(4px);
    -ms-filter: blur(4px);
    filter: blur(4px);
    width: 100%;
    height: 100%;
    background-size: cover;
.card {
    width: 300px;
    height: 280px;
    padding: 0;
    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.1);
    border-radius: 8px;
    box-sizing: border-box;
    overflow: hidden;
    background-color: #fff;
    z-index: 1;

  .card * {
    transition: 0.3s ease all;

  .card img {
    margin: 0;
    width: 300px;
    height: 224px;
    object-fit: cover;
    display: block;

  .card h3 {
    margin: 0;
    padding: 12px 12px 48px;
    line-height: 32px;
    font-weight: 500;
    font-size: 20px;

  .card .focus-content {
    display: block;
    padding: 8px 12px;

  .card p {
    margin: 0;
    line-height: 1.5;

  .card:hover img, .card:focus-within img {
    margin-top: -80px;

  .card:hover h3, .card:focus-within h3 {
    padding: 8px 12px 0;
Enter fullscreen mode Exit fullscreen mode


Animated Card Output


Top comments (0)