案例——跑马灯

跑马灯

效果图
在这里插入图片描述

代码
html+css

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>跑马灯</title>
    <link rel="stylesheet" href="css/baseCss.css">
    <style>
        .marqueeBox {
            position: relative;
            margin: 20px auto;
            width: 500px;
            height: 100px;
            border: 1px solid blue;
            overflow: hidden;
        }
        
        .wrapper {
            position: absolute;
            top: 0;
            left: 0;
            width: 800px;
            height: 98px;
        }
        
        .wrapper li {
            float: left;
            width: 100px;
            height: 98px;
            line-height: 98px;
            text-align: center;
        }
        
        .wrapper li:nth-child(3n) {
            background: lightblue;
        }
        
        .wrapper li:nth-child(3n+1) {
            background: lightgreen;
        }
        
        .wrapper li:nth-child(3n+2) {
            background: lightpink;
        }
    </style>
</head>

<body>
    <div class="marqueeBox">
        <ul class="wrapper">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
        </ul>
    </div>
    <script src="js/utils.js"></script>
    <script src="js/index1.js"></script>
</body>

</html>
let wrapper = document.querySelector('.wrapper');
/**
 * 实现JS动画
 *  让wapper每隔一段时间(最优动画时间间隔13-17毫秒)在原有的基础上减去步长(快一点,步长就大一点)
 */
//1. 将wrapper中原有的LI整体克隆一份放到容器的末尾(为了实现无缝滚动)
wrapper.innerHTML += wrapper.innerHTML;
utils.setCss(wrapper, 'width', utils.setCss(wrapper, 'width') * 2);
//设置动画
setInterval(() => {
    //1. 获取wrapper的left的值,减去步长,把最新的步长赋值给元素
    let curl = utils.setCss(wrapper, 'left');
    curl -= 2;
    utils.setCss(wrapper, 'left', curl);
    //2. 实现无缝:
    //当ul盒子左偏移整个ul盒子的一半,则让wrapper立即运动到left为零的位置
    if (Math.abs(wrapper.offsetLeft) >= utils.setCss(wrapper, 'width') / 2) {
        utils.setCss(wrapper, 'left', 0);
    }
}, 13);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值