zoukankan      html  css  js  c++  java
  • js实现轮播功能

    先上图,效果大概就是这样子:

    实现的功能:

    1.鼠标经过第几个正方形,就要展示第几张图片,并且正方形的颜色也发生变化 
    2.图片自动轮播,(这需要一个定时器) 
    3.鼠标经过图片,图片停止自动播放(这需要清除定时器) 
    4.鼠标离开图片,图片继续自动轮播 (重新开始定时器) 

    二话不说就上代码:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                *{
                    margin: 0;
                    padding: 0;
                }
        
                #outer{
                    margin: 50px auto;
                    width: 520px;
                    height: 333px;
                    background-color: pink;
                    padding: 10px 0px;
                    position: relative;
                    overflow: hidden;
                
                    
                }
                #imgList{
                    /*取出项目符号*/
                    list-style: none;
                    position: absolute;
                        
                    
                }
                #imgList li{
                float: left;
                margin: 0px 10px;
                }
                #navDiv{
                    position: absolute;
                    /*设置位置*/
                    bottom: 15px;
                    
                }
                #navDiv a{
                    float: left;
                    width: 15px;
                    height: 15px;
                    background: red;
                    margin: 0 5px;
                    opacity: 0.5;
                    /*兼容IE8的透明*/
                    filter: alpha(opacity=50);
                }
                #navDiv a:hover{
                    background: gray;
                }
            </style>
            <script type="text/javascript" src="../js/tools.js"></script>
            <script type="text/javascript">
                window.onload = function(){
                    imgList = document.getElementById("imgList");
                    imgarr = document.getElementsByTagName("img");
                    imgList.style.width = 520*imgarr.length + "px";
                    //设置导航居中
                    var navDiv = document.getElementById("navDiv");
                    var outer = document.getElementById("outer");
                    
                    navDiv.style.left = (outer.offsetWidth - navDiv.offsetWidth)/2 + "px";
                    //设置默认开始的图片
                    var index = 0;
                    var allA = document.getElementsByTagName("a");
                    allA[index].style.backgroundColor = "gray";
                    
                    /*
                     * 2、实现的功能是点击超链接实现图片的切换
                     */
                    for (var i =0 ;i<allA.length;i++){
                        //因为for循环是一上来就执行了,还没到点击就执行了,执行到了第五个,所以点击后数字都是5
                        //为每个超链接都添加一个num属性
                        allA[i].num = i;
                        
                        //为超链接绑定单击响应函数
                        allA[i].onclick = function(){
                            
                            clearInterval(timer);
                            //点击超链接切换图片,让图片左移即可
                            index = this.num;
                            //修改选中的超链接的颜色,但是这样子的话,没点一个就叠加变成了灰色,我们想要的是哪个点击哪个就是灰色。
                            //imgList.style.left = index*-520 + "px";
                            setA();
                            move(imgList,-520*index,20,'left',function(){autoChange();})
                        }
                    }
                    //创建一个方法来设置a的样式
                    function setA(){
                        
                        if(index>=imgarr.length-1){
                            //设置index为0
                            index=0;
                            //防止向左开始把图片转回去
                            //就是把图片的css改回去跟开始一样即可,实现左右滚动的效果
                            imgList.style.left = 0;
                        }
                        
                        for(var i=0; i<allA.length;i++){
                            //设置为空,就默认之前的颜色,要不然如果设置red,hover就不生效了,因为这个a的样式优先级没有内联样式高。
                            allA[i].style.backgroundColor = "";
                        }
                        allA[index].style.backgroundColor = "gray";
                    }
                    autoChange();
                    //创建一个函数,定时去切换图片
                    var timer;
                    function autoChange(){
                        timer = setInterval(function(){
                            //使索引自增
                            index ++;
                            index = index % imgarr.length;
                            console.log(index);
                            //index %= allA.length;
                            move(imgList,-520*index,20,'left',function(){setA()})
                            
                        },3000);
                    }
                }
            </script>
        </head>
        <body>
            <div id="outer">
                <ul id="imgList">
                    <li><img src="../img/1.jpg"/></li>
                    <li><img src="../img/2.jpg"/></li>
                    <li><img src="../img/3.jpg"/></li>
                    <li><img src="../img/4.jpg"/></li>
                    <li><img src="../img/5.jpg"/></li>
                    <!--添加一个防止最后一个一下子闪退到前面第一个-->
                    <li><img src="../img/1.jpg"/></li>
                </ul>
            <!--创建导航链接-->
            <div id="navDiv">
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
            </div>
                
            </div>
        </body>
    </html>
  • 相关阅读:
    Shiro-身份验证
    ORA-12514: TNS: no listener 解决方案
    Oracle创建用户、角色、授权、建表
    ORA-28547:connection to server failed, probable Oracle Net admin error错误,解决方法
    Python学习笔记
    Python学习笔记
    Python学习笔记
    winrm service
    C#动态编译并执行代码
    TypeScript的4种编译方式
  • 原文地址:https://www.cnblogs.com/caicaihong/p/9355807.html
Copyright © 2011-2022 走看看