html5css3项目3:动画实现动画水平移动、多组动画、地图波纹、打字机效果、奔跑的熊大

1、动画水平移动

思路: 就是简单的图像移动,设置好开始和结束

<!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>
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
            animation: move 10s linear infinite;
            /* amimation: 名字 运行时间 运动轨迹 延迟时间 运行次数 是否逆向播放 结束保持的状态
            animation: name duration timing-function delay iteration-count direction fill-mode; */
            /* animation-play-state是否会停止 */
        }
        
        div:hover {
            animation-play-state: paused;
        }
        
        @keyframes move {
            0% {
                transform: translate(0, 0);
            }
            100% {
                transform: translate(1000px, 0);
            }
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

html5css3项目3:动画实现动画水平移动、多组动画、地图波纹、打字机效果、奔跑的熊大_第1张图片
2、多组动画

思路: 写这个多组动画时要记住:移动和旋转都是按照起点为标准的,无论中间发生什么样的变化,都要按照刚开始的状态来看。

<!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>
        div {
            width: 100px;
            height: 100px;
            background-color: pink;
            animation: move 22s linear infinite;
        }
        
        div:hover {
            animation-play-state: paused;
        }
        /* 移动和旋转都是以起点为标准,中间的过程量只是一个过程 */
        
        @keyframes move {
            0% {
                transform: translate(0, 0);
            }
            25% {
                transform: translate(1000px, 0);
            }
            50% {
                transform: translate(1000px, 500px);
            }
            75% {
                transform: translate(0, 500px);
            }
            100% {
                transform: translate(0, 0);
            }
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

html5css3项目3:动画实现动画水平移动、多组动画、地图波纹、打字机效果、奔跑的熊大_第2张图片
3、地图波纹

思路:
设置一个盒子,定位到名称附近,然后里面显示一个实心点,然后又有3个波纹覆盖在实心点表面,就用到了定位,绝对定位不占据空间,所以父亲盒子里就一个实心点的盒子,然后将3个表面的波纹盒子按照之前的实现盒子水平垂直居中的方式定位在中心处,然后缩放时就朝四周散发。这里的波纹是采用阴影的方式,缩放时采用width<,之所以不用scale是因为,如果用scale的话,就会带着阴影一起缩放。几个波纹盒子之间要设置时间延迟,波纹还要设置透明度。

<!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: #333;
        }
        
        .map {
            position: relative;
            margin: 50px auto;
            width: 747px;
            height: 617px;
            background: url(media/map.png) no-repeat;
        }
        
        .city {
            position: absolute;
            top: 227px;
            right: 195px;
            color: #fff;
        }
        
        .dotted {
            width: 8px;
            height: 8px;
            background-color: #09f;
            border-radius: 50%;
        }
        
        .city div[class^="plaued"] {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 8px;
            height: 8px;
            border-radius: 50%;
            box-shadow: 0 0 12px #009dfd;
            animation: move 1s linear infinite;
        }
        
        .city div.plaued2 {
            animation-delay: 0.4s;
        }
        
        .city div.plaued3 {
            animation-delay: 0.8s;
        }
        
        @keyframes move {
            0% {}
            70% {
                width: 40px;
                height: 40px;
                opacity: 1;
            }
            100% {
                width: 70px;
                height: 70px;
                opacity: 0;
            }
        }
    </style>
</head>

<body>
    <div class="map">
        <div class="city">
            <div class="dotted"></div>
            <div class="plaued1"></div>
            <div class="plaued2"></div>
            <div class="plaued3"></div>
        </div>
    </div>
</body>

</html>

html5css3项目3:动画实现动画水平移动、多组动画、地图波纹、打字机效果、奔跑的熊大_第3张图片
4、打字机效果

思路:打字机是一个一个显示出来,先写几个文字,然后不设置宽度。然后我们采用steps(n)来实现,一次就显示一个文字。记住,动画效果要设置为刚开始是0长度,最后是整个文字的长度。这里面的重点是:先将文字在一行强制显示,然后将框子外面的地方隐藏起来。

<!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>
        div {
            overflow: hidden;
            background-color: pink;
            animation: move 5s steps(5) infinite;
            white-space: nowrap;
            font-size: 20px;
        }
        
        @keyframes move {
            0% {
                width: 0;
            }
            100% {
                width: 100px;
            }
        }
    </style>
</head>

<body>
    <div>世纪佳缘!</div>
</body>

</html>

html5css3项目3:动画实现动画水平移动、多组动画、地图波纹、打字机效果、奔跑的熊大_第4张图片

5、奔跑的熊大

这里面有2个动画
第一个动画:制造出小熊在奔跑的样子,原图给的是几个熊的照片,我们要将照片设置为背景,然后采用steps(n),一次显示一个图片,不要用linear或者ease,这样图片只会滑动。最好的方法就是采用步长的方式。动画的效果就是定位的效果。
第二个动画:实现小熊跑到屏幕中间,这里我刚开始用的是移动的效果,可是我看了原图是将小熊一直保持在屏幕中心处,如果我采用移动的效果是无法实现的(因为移动的只能是具体数值,或者百分数,而百分数的话,是以自身的宽度和高度来设置的,所以采用移动时实现不了的)。所以我们采用定位的方式,然后我们left=50%;transform:translateX(-50%);

<!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: #ccc;
        }
        
        div {
            position: absolute;
            width: 200px;
            height: 100px;
            background: url(media/bear.png) no-repeat;
            animation: bear 1s steps(8) infinite, move 8s linear forwards;
        }
        
        @keyframes bear {
            0% {
                background-position: 0 0;
            }
            100% {
                /* 向左移动 */
                background-position: -1600px 0;
            }
        }
        
        @keyframes move {
            0% {
                left: 0;
            }
            100% {
                left: 50%;
                transform: translateX(-50%);
            }
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

html5css3项目3:动画实现动画水平移动、多组动画、地图波纹、打字机效果、奔跑的熊大_第5张图片

你可能感兴趣的:(html5css3)