zoukankan      html  css  js  c++  java
  • JavaScript最简单的轮播图

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0
            }
    
            ul {
                list-style: none
            }
    
            img {
                vertical-align: top
            }
    
            .box {
                 730px;
                height: 454px;
                margin: 100px auto;
                padding: 5px;
                border: 1px solid #ccc;
            }
    
            .inner {
                 730px;
                height: 454px;
                background-color: pink;
                overflow: hidden;
                position: relative;
            }
    
            .inner ul {
                 1000%;
                position: absolute;
                top: 0;
                left: 0;
            }
    
            .inner li {
                float: left;
            }
    
            .square {
                position: absolute;
                right: 10px;
                bottom: 10px;
            }
    
            .square span {
                display: inline-block;
                 16px;
                height: 16px;
                background-color: #fff;
                text-align: center;
                line-height: 16px;
                cursor: pointer;
            }
    
            .square span.current {
                background-color: orangered;
                color: #fff;
            }
    
        </style>
    </head>
    <body>
    <div class="box" id="box">
        <div class="inner"><!--相框-->
            <ul>
                <li><a href="#"><img src="images/1.jpg" alt=""/></a></li>
                <li><a href="#"><img src="images/2.jpg" alt=""/></a></li>
                <li><a href="#"><img src="images/3.jpg" alt=""/></a></li>
                <li><a href="#"><img src="images/4.jpg" alt=""/></a></li>
                <li><a href="#"><img src="images/5.jpg" alt=""/></a></li>
                <li><a href="#"><img src="images/6.jpg" alt=""/></a></li>
            </ul>
            <div class="square">
                <span class="current">1</span>
                <span>2</span>
                <span>3</span>
                <span>4</span>
                <span>5</span>
                <span>6</span>
            </div>
        </div>
    </div>
    <script src="common.js"></script>
    <script>
        //获取最外面的div
        var box = my$("box");
        //获取相框
        var inner = box.children[0];
        //获取相框宽度
        var imgWidth = inner.offsetWidth;
        //获取ul
        var ulObj = inner.children[0];
        //获取所有的span
        var spans = inner.children[1].children;
        //循环遍历所有的span注册鼠标进入事件
        for (var i = 0; i < spans.length; i++) {
            //循环的时候把索引保存到每个span的自定义属性中
            spans[i].setAttribute("index", i);
            //注册鼠标进入事件
            spans[i].onmouseover = function () {
                //去掉所有的span的背景颜色
                for (var j = 0; j < spans.length; j++) {
                    //移除了每个span标签的类样式
                    spans[j].removeAttribute("class");
                }
                //设置当前的span的背景颜色
                this.className = "current";
                //移动ul(每个图片的宽*鼠标放在这个按钮的索引值)
                //获取当前鼠标进入的span的索引
                var index = this.getAttribute("index");
                animate(ulObj, -index * imgWidth);
            };
        }
        //设置任意的一个元素,移动到指定的目标位置
        function animate(element, target) {
            clearInterval(element.timeId);
            //定时器的id值存储到对象的一个属性中
            element.timeId = setInterval(function () {
                //获取元素的当前的位置,数字类型
                var current = element.offsetLeft;
                //每次移动的距离
                var step = 10;
                step = current < target ? step : -step;
                //当前移动到位置
                current += step;
                if (Math.abs(current - target) > Math.abs(step)) {
                    element.style.left = current + "px";
                } else {
                    //清理定时器
                    clearInterval(element.timeId);
                    //直接到达目标
                    element.style.left = target + "px";
                }
            }, 5);
        }
    
    </script>
    </body>
    </html>

    效果

  • 相关阅读:
    ASP.NET Core新书终于上市,完成今年一个目标,赠书活动
    .NET 5.0 RC2 发布,正式版即将在 11 月 .NET Conf 大会上发布
    .NET Standard 来日苦短去日长
    [C#.NET 拾遗补漏]09:数据标注与数据校验
    几个超级实用但很少人知道的 VS 技巧[更新]
    .NET 5 中 Target Framework 详解
    .NET 5.0 RC1 发布,离正式版发布仅剩两个版本
    Git 实用操作:撤销 Commit 提交(动图讲解)
    Git 实用操作:重写 Commit 历史
    [C#.NET 拾遗补漏]08:强大的LINQ
  • 原文地址:https://www.cnblogs.com/cuilichao/p/9407948.html
Copyright © 2011-2022 走看看