zoukankan      html  css  js  c++  java
  • 案例-滑动焦点图

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            .box {
                 490px;
                height: 170px;
                padding: 5px;
                border: 1px solid #ccc;
                margin: 100px auto;
            }
            .inner {
                 490px;
                height: 170px;
                position: relative;
                overflow: hidden;
            }
            ul {
                 500%;
                list-style: none;
                position: absolute;
                left: 0;
            }
            li {
                float: left;
            }
            .square {
                position: absolute;
                bottom: 10px;
                right: 10px;
            }
            span {
                display: inline-block;
                 16px;
                height: 16px;
                background-color: #fff;
                text-align: center;
                margin: 3px;
                border: 1px solid #ccc;
                line-height: 16px;
                cursor: pointer;
            }
            .current {
                background-color: darkorange;
                color: #fff;
            }
        </style>
    
        <script>
            window.onload = function () {
                需求:鼠标放到小方块上面,上面的图片(ul向左移动指定的个数个图片的宽)
                思路:绑定事件,点亮指定的盒子,移动ul。
                步骤:
                1.获取事件源和相关元素
                2.绑定事件和书写事件驱动程序(for循环绑定)
                3.点亮盒子
                4.移动ul(向左移动,给定目标为-值,放到第n个小方块上向左移动n-1个图片的宽)
    
    
    
                1.获取事件源和相关元素
                var inner = document.getElementById("inner");
                var imgWidth = inner.offsetWidth;
                var ul =  inner.children[0];
                var spanArr =  inner.children[1].children;
                //2.绑定事件和书写事件驱动程序(for循环绑定)
                for(var i=0;i<spanArr.length;i++){
                    //属性绑定(自定义属性参数盒子的索引值)
                    //用span的innerHTML属性也可以,但是为了代码的健壮性,我们选择使用自己的属性
                    spanArr[i].index = i; //绑定的是索引值,所以移动盒子的时候不用-1
                    spanArr[i].onmouseover = function () {
                        //3.点亮盒子
                        //排他思想
                        for(var j=0;j<spanArr.length;j++){
                            spanArr[j].className = "";
                        }
                        this.className = "current";
                        //4.移动ul(向左移动,给定目标为-值,放到第n个小方块上向左移动n-1个图片的宽)
                        //利用框架移动盒子。(两个参数:1.元素。  2.目标位置)
                        animate(ul,-this.index*imgWidth);
                    }
                }
    
                function animate(ele,target){
                    clearInterval(ele.timer);
                    var speed = target>ele.offsetLeft?10:-10;
    
                    ele.timer = setInterval(function () {
                        var val = target - ele.offsetLeft;
                        ele.style.left = ele.offsetLeft + speed + "px";
                        if(Math.abs(val)<Math.abs(speed)){
                            ele.style.left = target + "px";
                            clearInterval(ele.timer);
                        }
                    },10)
                }
            }
    
           
        </script>
    </head>
    <body>
        <div class="box">
            <div class="inner" id="inner">
                <ul>
                    <li><img src="images/01.jpg" alt=""/></li>
                    <li><img src="images/02.jpg" alt=""/></li>
                    <li><img src="images/03.jpg" alt=""/></li>
                    <li><img src="images/04.jpg" alt=""/></li>
                    <li><img src="images/05.jpg" alt=""/></li>
                </ul>
                <div class="square">
                    <span class="current">1</span>
                    <span>2</span>
                    <span>3</span>
                    <span>4</span>
                    <span>5</span>
                </div>
            </div>
        </div>
    </body>
    </html>
    

      

  • 相关阅读:
    Eclipse安装常用离线插件
    Eclipse添加Maven、Jdk、Tomcat
    每天总结模电-去耦电容(一)
    4K显示器含义
    c语言的学习方法
    悲伤逆流成河读后感
    晶体管(三极管,场效应管,MOS以及CMOS)的区别
    强电的元器件认识
    ElasticSearch
    DataGrip
  • 原文地址:https://www.cnblogs.com/sj1988/p/6594820.html
Copyright © 2011-2022 走看看