Html5+CSS实例--跳动的心与奔跑的火柴人代码

参考B站视频,进行了两个实例的练习,代码如下所示。欢迎大家关注我的公众号,获取更多WebGIS内容啊

实例1 跳动的心

跳动的心这个实例在网上有很多代码可以参考,我这里是跟随B站UP主“鱼小余老师”的视频课学习的实例。

实现跳动的心,首先需要绘制心。在学习过程中,心形被分割成了一个正方形和两个半圆形。为了减少DOM元素,使用了.before和.after两个伪元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 内外边距清空 */
        *{
            margin: 0;
            padding: 0;
        }
        /* 设置容器的宽度和高度充满全屏 */
        html,body{
            width: 100%;
            height: 100%;
        }
        /* 设置背景色 */
        body{
            background-color: pink;
            /* 使用弹性盒子模型,将整个心放在最中间 */
            display: flex;
            /* 主轴方向,row从左到右默认*/
            flex-direction: row;
            /*设置弹性盒子在纵轴的对齐方式为居中对齐*/
            align-items: center;
            /* 设置弹性盒子在主轴(横轴)的对齐方式 */
            justify-content: center;
        }
        .heart{
            width: 200px;
            height: 200px;
            background-color: red;
            /* 添加定位 */
            position: relative;
            /* 旋转心形 */
            transform: rotate(45deg);
            /* 应用动画效果 */
            animation: heartbit 1s alternate infinite;
        }
        /* 通过伪元素绘制半圆 */
        .heart::before{
            /* 绘制矩形 */
            content: "";
            width: 200px;
            height: 100px;
            background-color: red;
            /* 定位 */
            position: absolute;
            left: 0;
            /* 设置-99而不是-100,为了避免拼接出现间隙 */
            top: -99px;
            /* 左上和右上角,矩形圆角效果 */
            border-radius: 100px 100px 0px 0px;
        }
        .heart::after{
            /* 绘制矩形 */
            content: "";
            width: 100px;
            height: 200px;
            background-color: red;
            /* 定位 */
            position: absolute;
            /* 设置-99而不是-100为了避免拼接出现间隙 */
            left: -99px;
            top: 0px;
            /* 左上和左下角,矩形圆角效果 */
            border-radius: 100px 0px 0px 100px;
        }
        /* 动画效果 */
        @keyframes heartbit{
            /*动画过渡不一定越细越好*/
            0%{
                /* 旋转和缩放 */
                transform: rotate(45deg) scale(0.6);
            }
            100%{
                transform: rotate(45deg) scale(1.4);
            }
        }
    </style>
</head>
<body>
    <!-- 容器 -->
    <div class="heart"></div>
</body>
</html>

实例2 奔跑的火柴人

这个实例也是来自于B站UP主“鱼小余老师”的视频课,但是我看CSDN等也有一样的教程。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>

        /* 设置整体背景等 */
        body{
            background-color: black;
        }
        /* 设置容器样式 */
        .container{
            height: 300px;
            width: 300pox;
            margin: 50px;
        }
        .person{
            position: absolute;
            left: 150px;
            top: 160px;
            /* 跑进后跑出屏幕 */
            animation: sprint 3s ease-in-out infinite;
        }
        /* 设置头样式 */
        .head{
            position: absolute;
            width: 30px;
            height: 30px;
            border: 10px solid white;
            /* 圆角使矩形变成圆形 */
            border-radius: 50%;
            top: -30px;
            left:-6px;
            /* 调用动画 */
            animation: bob 2s infinite alternate;
        }
        /* 躯干样式 */
        .torso{
            width: 0px;
            height: 60px;
            border-left: 10px solid white;
            position: absolute;
            left: 5px;
            top: 15px;
        }
        /* 设置胳膊和腿,注意下面要有一个空格*/
        .person .part{
            position: absolute;
            left: 5px;
            top: 75px;

        }
        .person .part.arm{
            width: 40px;
            height: 45px;
            border-left: 10px solid white;
            border-bottom: 10px solid white;
            position: absolute;
            top: 15px;
            right: 300px;
            transform-origin: 0% 0% 0px;
            /* 调用动画 */
            animation: pump 1s infinite ease-in-out;
        }
        /* 设置两个胳膊具体的旋转 */
        .person .part.arm.one{
            transform: rotate3d(0,0,1,80deg);
        }
        .person .part.arm.two{
            transform: rotate3d(0,0,1,-80deg);
            /* 第二个胳膊设置动画延时 */
            animation-delay: 0.5s;
        }
        /* 设置腿 */
        .person .part.leg{
            height: 60px;
            width: 60px;
            border-right: 10px solid white;
            border-top: 10px solid white;
            transform-origin: 0% 0% 0px;
            left: 15px;
            animation: run 1s infinite ease-in-out;
        }
        .person .part.leg.one{
            transform: rotate3d(0,0,1,100deg);
        }
        .person .part.leg.two{
            transform: rotate3d(0,0,1,10deg);
            animation-delay: 0.5s;
        }
        /* 头部动画 */
        @keyframes bob{
            0%{
                transform: rotate3d(0,0,1,5deg);
            }
            25%{
                transform: rotate3d(0,0,1,-30deg) skew(15deg,0deg);
            }
            50%{
                transform: rotate3d(0,0,1,-30deg) 
            }
            75%{
                transform: rotate3d(0,0,1,-30deg) skew(15deg,0deg);
            }
            100%{
                transform: rotate3d(0,0,1,20deg) skew(-15deg,0deg);
            }
        }
        /* 胳膊摆动动画 */
        @keyframes pump{
            0%{
                transform: rotate3d(0,0,1,80deg);
            }
            50%{
                transform: rotate3d(0,0,1,-70deg);
            }
            100%{
                transform: rotate3d(0,0,1,80deg);
            }
        }
        /* 腿动画效果 */
        @keyframes run{
            0%{
                transform: rotate3d(0,0,1,-5deg);
            }
            50%{
                transform: rotate3d(0,0,1,150deg);
            }
            100%{
                transform: rotate3d(0,0,1,-5deg);
            }
        }
        /* 通过移动容器使人物向前走 */
        @keyframes sprint{
            0%{
                transform: translate(-200px,0px);
            }
            /* 跑出屏幕 */
            100%{
                transform: translate(2000px,0px);
            }
        }
    </style>
</head>
<body>
    <!-- 火柴人的结构 -->
    <div class="container">
        <div class="person">
            <!-- 头、躯干和四肢 -->
            <div class="head"></div>
            <div class="part arm one"></div>
            <div class="part arm two"></div>
            <div class="torso"></div>
            <div class="part leg one"></div>
            <div class="part leg two"></div>
        </div>
    </div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值