欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

初入FCC闯关笔记 #1

程序员文章站 2022-04-25 07:50:16
...

从今天开始,养成在CSDN上写博客的习惯,相信自己可以坚持下来,一年后,成为一名前端工程师 。

以下内容是我在FCC(freecodecamp)上闯关过程中遇到的问题以及相关笔记,纯粹个人笔记向,大神避让~

今天在FCC上遇到了一个用CSS动画做出心跳效果的部分代码,用到的主要知识有伪元素before和after,还有一些简单的动画操作,代码如下:

<style>
  .back {
    position: fixed;
    padding: 0;
    margin: 0;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: white;
    animation-name: backdiv;
    animation-duration: 1s; 
    animation-iteration-count:infinite;
  }

  .heart {
    position: absolute;
    margin: auto;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background-color: pink;
    height: 50px;
    width: 50px;
    transform: rotate(-45deg);
    animation-name: beat;
    animation-duration: 1s;
    animation-iteration-count:infinite;
  }
  .heart:after {
    background-color: pink;
    content: "";
    border-radius: 50%;
    position: absolute;
    width: 50px;
    height: 50px;
    top: 0px;
    left: 25px;
  }
  .heart:before {
    background-color: pink;
    content: "";
    border-radius: 50%;
    position: absolute;
    width: 50px;
    height: 50px;
    top: -25px;
    left: 0px;
  }

  @keyframes backdiv {
    50% {
      background: #ffe6f2;
    }
  }

  @keyframes beat {
    0% {
      transform: scale(1) rotate(-45deg);
    }
    50% {
      transform: scale(0.6) rotate(-45deg);
    }
  }

</style>
<div class="back"></div>
<div class="heart"></div>

该代码实现思路很简单,先创建一个正方形,然后将其旋转45度,然后将伪元素after和before复制的两个圆分别移动到左上和右上就可以模拟出心形。效果图如下。
初入FCC闯关笔记 #1

其实这里是动画显示,背景和心都会有节奏的跳动变色。

我所奇怪的是,为什么在.heart中已经旋转了的元素要在动画设置中再旋转两次,如下。


  @keyframes beat {
    0% {
      transform: scale(1) rotate(-45deg);
    }
    50% {
      transform: scale(0.6) rotate(-45deg);
    }
  }

后来,请教了别人才知道在动画设置中,transform属性重置了heart元素,使得原来的旋转失效了,因此在每次动画化的结点都要再次旋转,才能保证心形的正直

相关标签: css css3