今天在网上看到一个很有意思的东西,实现跳动的心,已经成功实现:http://heart.516574.xyz

接下来说说如何实现

1.先实现心的静态页面

我们可以观察出,这个心可以分为三个部分,如图:

可以看出这个心是由一个正方形和两个半圆形组成的,最后旋转就可以得到心型。

<!-- 实现一颗红色的心 -->

  <!DOCTYPE html>
  <html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html, body {
            height: 100%;
            width: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .heart{
            width: 200px;
            height: 200px;
            position: relative;
            background-color: red;
            position: relative;
        }
        .heart::before{
            content: '';
            width: 200px;
            height: 100px;
            border-radius: 100%, 100%, 0, 0;
            background-color: yellow;
            position: absolute;
            left: 0;
            top: -100px;
            border-radius: 100px 100px 0 0;
        }
        .heart::after{
            content: '';
            width: 100px;
            height: 200px;
            border-radius: 100%, 100%, 0, 0;
            background-color: yellow;
            position: absolute;
            left: -100px;
            top: 0;
            border-radius: 100px 0 0 100px;
        }
    </style>
</head>
<body>
    <div class="heart">
    </div>
</body>
</html>

2.旋转45度并实现阴影

transform: rotate(45deg);//旋转45度

box-shadow: 0 0 30px red;//将阴影三个部分都添加

此时已经完成了静态页面,如图:

3.让心跳动起来

这里我们可以用动画实现

        /* 实现动画,让心跳动起来 */

        @keyframes heart{
            0%{
                transform: rotate(45deg) scale(0.6);
            }
            100%{
                transform: rotate(45deg) scale(1.4);
            }
        }
在heart 里面添加:

            animation: heart 1s alternate infinite;
完成。

4.源代码

<!-- 实现一个跳动的心 -->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
    <title>Love</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html, body {
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: pink;
        }
        .heart{
            width: 200px;
            height: 200px;
            background-color: red;
            position: relative;
            transform: rotate(45deg);
            animation: heart 1s alternate infinite;
            box-shadow: 0 0 30px red;
        }
        /* 设置伪元素 */
        .heart::before{
            content: "";
            width: 200px;
            height: 100px;
            background-color: red;
            position: absolute;
            left: 0;
            top:-99px;
            border-radius: 100px 100px 0 0;
            box-shadow: 0 0 30px red;
        }
        .heart::after{
            content: "";
            width: 100px;
            height: 200px;
            background-color: red;
            position: absolute;
            left: -99px;
            top:0;
            border-radius: 100px 0 0 100px;
            box-shadow: 0 0 30px red;
        }
        /* 实现动画,让心跳动起来 */
        @keyframes heart{
            0%{
                transform: rotate(45deg) scale(0.6);
            }
            100%{
                transform: rotate(45deg) scale(1.4);
            }
        }
    </style>
</head>
<body>
    <div class="heart">
    </div>
</body>
</html>