原生JS实现纵向跑马灯特效

<!DOCTYPE html>
<html>
 
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>原生JS实现纵向跑马灯特效</title>
 
    <style type="text/css">
        body {
            background: #eee;
        }
        .level-warn {
            width: 120px;
            height: 220px;
            margin: 0 auto;
            background: #fff;
            border: 1px solid #ccc;
            position: relative;
        }
 
        .level-warn-wrap {
            width: 120px;
            height: 220px;
            position: absolute;
            left: 0;
            overflow: hidden;
        }
        ul {
            width: 120px;
            position: absolute;
            top: 0;
            left: 0;
        }
 
        .level-warn li {
            width: 120px;
            height: 110px;
            float: left;
        }
    </style>
</head>
<body>
    <div class="level-warn" id="level-warn">
        <!-- 容器 -->
        <div class="level-warn-wrap">
            <ul>
                <li>
                    <div>1</div>
                </li>
                <li>
                    <div>2</div>
                </li>
                <li>
                    <div>3</div>
                </li>
                
            </ul>
        </div>
 
    </div>
    <script type="text/javascript">
        window.onload = function () {
            // 获取操作对象容器
            var box = document.getElementById("level-warn");
            // 获取容器一级子元素
            var children = box.getElementsByTagName('div');
            // 获取容器
            var wrap = getClass('level-warn-wrap');
            // 获取列表
            var ul = wrap.getElementsByTagName('ul')[0];
            // 获取各项
            var list = ul.getElementsByTagName('li');
            var i = 0;
            var num = 2;
            var time = 50;
            var toggle = -1;
            var timer = null;
            ul.innerHTML += ul.innerHTML;
            // 自动轮播
            console.log(list.length,'===list.length')
            list.length> 4 && autoPlay(toggle);
            // 自动轮播方法
            function autoPlay(toggle) {
                // 清除原有定时器
                if (timer) {
                    clearInterval(timer);
                };
                // 重新开启定时器
                timer = setInterval(function () {
                    // 增量
                    num += 2 * toggle;
                    // 向上走
                    if (Math.abs(num) > list.length * list[0].offsetHeight / 2) {
                        num = 0;
                    };
                    ul.style.top = num + 'px';
                }, time);
            };
            // 获取拥有当前样式的元素
            function getClass(name) {
                for (i = 0; i < children.length; i++) {
                    if (children[i].className == name) {
                        return children[i];
                    }
                }
            };
        };
    </script>
</body>
 
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值