css3-动画animation

283 阅读1分钟

使用animation添加动画效果

1.定义动画

定义keyframes关键帧

第一种写法:

/*直接从0到100%的状态*/
@keyframes 动画名称 {
        from {}
        to {}
    }

第二种写法:

<!-- 百分比指的是动画总时长的占比 -->
    @keyframes 动画名称 {
        0% {}
        50% {}
        100% {}
    }

定义完动画后,要使用animation赋值才能动起来

2.调用动画

animation: 动画名称 动画时长 速度曲线 延迟时间 重复次数 动画方向 执行完毕时状态 其中动画名称和动画时长必须赋值,除了动画时长和延迟时间要注意一下先后,其他取值不分先后顺序

3.动画属性拆分

animation-name: 动画名称

animation-duration: 动画时长

animation-delay: 延迟时间

animation-fill-mode: 动画执行完毕时状态,forwards:最后一帧状态,backwards:第一帧状态(默认值)

animation-timing-function: 速度曲线,steps(数字):逐帧动画, image.png

animation-iteration-count: 重复次数,infinite:无限循环

animation-direction: 动画执行方向, alternate:反向,normal:正常(默认)

animation-play-state: 暂停动画, paused:暂停,running:播放

4.走马灯示例

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        ul {
            width: 840px;
            height: 80px;
            list-style: none; /*去除ul的样式*/
            animation: move 3s infinite linear;
        }
        .showbox {
            width: 200px;
            height: 80px;
            margin: 100px auto;
            overflow: hidden;
        }
        .showbox li {
            width: 120px;
            height: 80px;
            float: left;

        }
         ul li img{
            width: 100%;
            height: 100%;
        }
        @keyframes move {
            to {
                transform: translate(-600px);
            }
        }
        .showbox:hover ul{
            animation-play-state: paused;
        }
    </style>
</head>
<body>
    <div class="showbox">
        <ul>
            <li>
                <img src="./img/keqing.jpg"></img>
            </li>
            <li>
                <img src="./img/xiaogong.jpg"></img>
            </li>
            <li>
                <img src="./img/xinhai.jpg"></img>
            </li>

            <li>
                <img src="./img/ypf.jpg"></img>
            </li>
            <li>
                <img src="./img/ypf2.jpg"></img>
            </li>
            <li>
                <img src="./img/keqing.jpg"></img>
            </li>
            <li>
                <img src="./img/xiaogong.jpg"></img>
            </li>
        </ul>
    </div>
</body>
</html>

解析:上述代码是做的五张图片的一个无缝衔接循环,图片120px,盒子宽度200px可以显示两张图片,所以我们把前两张图片复制一下放到最后面,这样当图片移动完盒子内就不会留白,所以就实现了无缝的一个循环。