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>

    效果

  • 相关阅读:
    飞入飞出效果
    【JSOI 2008】星球大战 Starwar
    POJ 1094 Sorting It All Out
    POJ 2728 Desert King
    【ZJOI 2008】树的统计 Count
    【SCOI 2009】生日快乐
    POJ 3580 SuperMemo
    POJ 1639 Picnic Planning
    POJ 2976 Dropping Tests
    SPOJ QTREE
  • 原文地址:https://www.cnblogs.com/cuilichao/p/9407948.html
Copyright © 2011-2022 走看看