在平时我们做跑马灯,一般是用gif图,或者是用DOM元素来制作,但是gif体积比较大,而且不太灵活,调整大小,速度,颜色,都需要重新切图,用DOM元素来实现,会让页面出现很多DOM不太友好,今天介绍一个用纯css制作的跑马灯效果。主要原理是利用css 属性 box-shadow 可以无限复制的特点来做周围的灯,通过css3 transition 属性让灯跑起来,话不多说,上代码

<!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>跑马灯</title>
</head>

<body>
    <div class="content"></div>
    <style>
        .content {
            margin: 100px auto;
            width: 500px;
            height: 300px;
            background: #08ca6a;
            border-radius: 24px;
            position: relative;
        }

        .content::before {
            position: absolute;
            content: "";
            display: block;
            top: -30px;
            left: -30px;
            height: 20px;
            width: 20px;
            border-radius: 50%;
            animation: light 0.5s infinite;
        }

        @-webkit-keyframes light {

            /* Safari and Chrome */
            from {
                background-color: #ff5722;
                box-shadow: 50px 0 0 0 #ff0, 100px 0 0 0 #ff5722, 150px 0 0 0 #ff0, 200px 0 0 0 #ff5722, 250px 0 0 0 #ff0, 300px 0 0 0 #ff5722, 350px 0 0 0 #ff0, 400px 0 0 0 #ff5722, 450px 0 0 0 #ff0, 500px 0 0 0 #ff5722, 550px 0 0 0 #ff0, 550px 50px 0 0 #ff5722, 550px 100px 0 0 #ff0, 550px 150px 0 0 #ff5722, 550px 200px 0 0 #ff0, 550px 250px 0 0 #ff5722, 550px 300px 0 0 #ff0, 550px 350px 0 0 #ff5722, 500px 350px 0 0 #ff0, 450px 350px 0 0 #ff5722, 400px 350px 0 0 #ff0, 350px 350px 0 0 #ff5722, 300px 350px 0 0 #ff0, 250px 350px 0 0 #ff5722, 200px 350px 0 0 #ff0, 150px 350px 0 0 #ff5722, 100px 350px 0 0 #ff0, 50px 350px 0 0 #ff5722, 0px 350px 0 0 #ff0, 0 0 0 0 #ff5722, 0 50px 0 0 #ff0, 0 100px 0 0 #ff5722, 0 150px 0 0 #ff0, 0 200px 0 0 #ff5722, 0 250px 0 0 #ff0, 0 300px 0 0 #ff5722, 0 350px 0 0 #ff0;
            }

            to {
                background-color: #ff0;
                box-shadow: 50px 0 0 0 #ff5722, 100px 0 0 0 #ff0, 150px 0 0 0 #ff5722, 200px 0 0 0 #ff0, 250px 0 0 0 #ff5722, 300px 0 0 0 #ff0, 350px 0 0 0 #ff5722, 400px 0 0 0 #ff0, 450px 0 0 0 #ff5722, 500px 0 0 0 #ff0, 550px 0 0 0 #ff5722, 550px 50px 0 0 #ff0, 550px 100px 0 0 #ff5722, 550px 150px 0 0 #ff0, 550px 200px 0 0 #ff5722, 550px 250px 0 0 #ff0, 550px 300px 0 0 #ff5722, 550px 350px 0 0 #ff0, 500px 350px 0 0 #ff5722, 450px 350px 0 0 #ff0, 400px 350px 0 0 #ff5722, 350px 350px 0 0 #ff0, 300px 350px 0 0 #ff5722, 250px 350px 0 0 #ff0, 200px 350px 0 0 #ff5722, 150px 350px 0 0 #ff0, 100px 350px 0 0 #ff5722, 50px 350px 0 0 #ff0, 0px 350px 0 0 #ff5722, 0 0 0 0 #ff0, 0 50px 0 0 #ff5722, 0 100px 0 0 #ff0, 0 150px 0 0 #ff5722, 0 200px 0 0 #ff0, 0 250px 0 0 #ff5722, 0 300px 0 0 #ff0, 0 350px 0 0 #ff5722;
            }
        }
    </style>
</body>

</html>

html 里就一个div,css 里需要手动算一下每个灯的位置,如果觉得太麻烦,可以利用less,或者scss 循环遍历简化书方式,然后把两种颜色设置成变量,方便修改下面看效果~

在这里插入图片描述

是不是很超简单
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐