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>

    效果

  • 相关阅读:
    linux并发控制之读写信号量
    linux并发控制之原子操作
    JAVA IntelliJ IDEA for mac/jdk的安装及环境配置、运行
    HDU2553 N皇后问题dfs
    LightOJ1282Leading and Trailing快速幂+数学
    HDU1226超级密码队列+广搜+大数取模
    Aizu ALDS1_13_A8 Queens Problem八皇后的路径输出
    HDU1548 A strange lift BFS
    POJ1182 食物链 并查集
    UVA10200Prime Time判断素数个数(打表预处理)+精度控制
  • 原文地址:https://www.cnblogs.com/cuilichao/p/9407948.html
Copyright © 2011-2022 走看看