Pulsing Heart CSS animation

前端 未结 7 1075
小蘑菇
小蘑菇 2020-12-12 12:34

I`m working on an animated heart only with CSS.

I want it to pulse 2 times, take a small break, and then repeat it again.

What I have now:

sm         


        
7条回答
  •  粉色の甜心
    2020-12-12 13:08

    Pulse 2 times, take a small break, and then repeat it again

    Try this. Going with animation opacity is a bad choice. transform: scale() will do the job.

    .heart:before {
      display: block;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      font-family: 'icons';
      font-size: 21px;
      text-indent: 0;
      font-variant: normal;
      line-height: 21px;
    }
    .heart {
      position: relative;
      width: 500px;
      overflow: inherit;
      margin: 50px auto;
      list-style: none;
      -webkit-animation: animateHeart 2.5s infinite;
      animation: animateHeart 2.5s infinite;
    }
    .heart:before,
    .heart:after {
      position: absolute;
      content: '';
      top: 0;
      left: 50%;
      width: 120px;
        height: 200px;
        background: red;
        border-radius: 100px 100px 0 0;
      -webkit-transform: rotate(-45deg) translateZ(0);
      transform: rotate(-45deg) translateZ(0);
      -webkit-transform-origin: 0 100%;
      transform-origin: 0 100%;
    }
    .heart:after {
      left: 26%;
      -webkit-transform: rotate(45deg) translateZ(0);
      transform: rotate(45deg) translateZ(0);
      -webkit-transform-origin: 100% 100%;
      transform-origin: 100% 100%;
    }
    @-webkit-keyframes animateHeart {
      0% {
        -webkit-transform: scale(0.8);
      }
      5% {
        -webkit-transform: scale(0.9);
      }
      10% {
        -webkit-transform: scale(0.8);
      }
      15% {
        -webkit-transform: scale(1);
      }
      50% {
        -webkit-transform: scale(0.8);
      }
      100% {
        -webkit-transform: scale(0.8);
      }
    }
    @keyframes animateHeart {
      0% {
        transform: scale(0.8);
      }
      5% {
        transform: scale(0.9);
      }
      10% {
        transform: scale(0.8);
      }
      15% {
        transform: scale(1);
      }
      50% {
        transform: scale(0.8);
      }
      100% {
        transform: scale(0.8);
      }
    }
    span {
      font-family: 'Cantora One', sans-serif;
      font-size: 64px;
      position: absolute;
      top: 165px;
    }

提交回复
热议问题