• 普通选项卡+自动播放功能+向前/向后按钮 原生js


    今天做了幻灯片,主要功能包括:普通选项卡,向前/向后播放按钮,向前?向后播放功能,自动播放功能

    要实现简单选项卡功能是没有问题的,但是添加功能就出现各种各样的问题了

    遇到的问题:
    1 下标问题
    2普通选项卡与向前/向后功能结合的时候冲突,可以向前/向后播放,但是再想实现普通选项卡就出问题了
    3 添加向前/向后按钮后,html布局下移
    4 添加向前/向后按钮的时候,我用img标签,显然这个不适用,不能很好的调节垂直居中
    5 当鼠标放在向前/向后按钮上的时候,闪烁,点击的时候也闪烁,而且还点击失效

    解决方法:
    1 封闭空间
    2 普通选项卡让ul下的li,先className='';然后再让className='on';但是我想让普通选项卡与向前/向后功能结合,使用oUl.style.left=-now*640+'px';这时候就不能让className='';然后再让className='on'了,而是让改css中的ul li为block,然后用oUl.style.left=-now*640+'px',(img图片的宽度)普通选项卡是让li单个显示的,我的是让ul移动显示
    3 主要原因是我用了float,后来改成用定位实现了按钮的左浮动和居中,然后调高层级
    4 将img标签改为背景图,很好的解决了垂直居中的问题
    5 原先我还以为是事件冒泡,后来我改为,当鼠标移入div时显示向前/向后按钮,并且添加鼠标移入向前/向后按钮事件,ok

    代码:
    <!--HTML-->
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>幻灯片</title>
    <link type="text/css" rel="stylesheet" href="../css/幻灯片.css" />
    <script src="../js/幻灯片.js"></script>
    <script src="../js/move.js"></script>
    </head>
    <body>
    <div id="div1">
    <a href="javascript:;" id="prev"></a>
    <a href="javascript:;" id="next" ></a>
    <ul id="ul1">
    <li class="on"><a href="#"><img src="../image/1.jpg" /></a></li>
    <li><a href="#"><img src="../image/2.jpg" /></a></li>
    <li><a href="#"><img src="../image/3.jpg" /></a></li>
    <li><a href="#"><img src="../image/4.jpg" /></a></li>
    <li><a href="#"><img src="../image/5.jpg" /></a></li>
    <li><a href="#"><img src="../image/6.jpg" /></a></li>
    </ul>
    <ol id="ol1">
    <li class="on"><a href="javascript:;">1</a></li>
    <li><a href="javascript:;">2</a></li>
    <li><a href="javascript:;">3</a></li>
    <li><a href="javascript:;">4</a></li>
    <li><a href="javascript:;">5</a></li>
    <li><a href="javascript:;">6</a></li>
    </ol>
    </div>
    </body>
    </html>

    /* CSS Document */
    *{margin:0;padding:0;list-style:none;}
    #div1{ position:relative; overflow:hidden; 640px; height:270px; margin:50px auto; }
    #div1 ul{ position:relative; left:0; float:left;3840px; height:100%;}
    #div1 ul li{ float:left;}
    #div1 ol{ position:absolute; bottom:20px; left:40%;}
    #div1 ol li{ float:left; 20px; height:20px; background:red; margin-left:10px; text-align:center; cursor:pointer;}
    #div1 ol li a{ text-decoration:none; color:#fff;}
    #div1 ol li.on{ background:blue;}
    #prev{ position:absolute; left:0; top:105px; 45px; height:60px; display:none; z-index:100; background:#ccc url(../image/btn_l.png) no-repeat center; opacity:0.8;}
    #next{position:absolute; right:0; top:105px; 45px; height:60px; display:none; z-index:100; background: #ccc url(../image/btn_r.png) no-repeat center; opacity:0.8;}
    #prev.on,#next.on{ display:block;}

    // JavaScript Document
    window.onload=function(){
    var oOl=document.getElementById('ol1');
    var oUl=document.getElementById('ul1');
    var oDiv=document.getElementById('div1');
    var aUli=oUl.children;
    var aOli=oOl.children;
    var now=0;
    var timer=null;

    //点击播放选项卡
    for(var i=0;i<aOli.length;i++)
    {
    (function(index){
    aOli[index].onclick=function(){

    for(var i=0;i<aOli.length;i++)
    { now=index;
    aOli[i].className='';
    //aUli[i].className='';
    }
    aOli[index].className='on';
    //aUli[index].className='on';
    oUl.style.left=-now*640+'px';
    };
    })(i)
    }

    //向前/向后按钮
    var oPrev=document.getElementById('prev');
    var oNext=document.getElementById('next');
    oUl.onmouseover=oPrev.onmouseover=oNext.onmouseover=function(){
    //如果光是oUl.onmouseover ,oPrev.onmouseover=oNext.onmouseover移上/点击的时候会闪烁
    oPrev.className='on';
    oNext.className='on'
    };
    oUl.onmouseout=function(){
    oPrev.className='';
    oNext.className=''
    };

    //向前播放选项卡
    oPrev.onclick=function(){
    now--;
    if(now==-1)now=aOli.length-1;
    for(var i=0;i<aOli.length;i++)
    {
    aOli[i].className='';
    aUli[i].className='on';
    }
    aOli[now].className='on';
    oUl.style.left=-now*640+'px';
    };

    //向后播放选项卡
    oNext.onclick=function(){
    now++;
    if(now==aOli.length)now=0;
    for(var i=0;i<aOli.length;i++)
    {
    aOli[i].className='';
    //aUli[i].className='on';
    }
    aOli[now].className='on';
    oUl.style.left=-now*640+'px';
    };

    //自动向后播放选项卡
    autoPlay();
    oDiv.onmouseover=function(){
    clearInterval(timer);
    };
    oDiv.onmouseout=function(){
    autoPlay();
    };

    function autoPlay()
    {
    timer=setInterval(function(){
    now++;
    if(now==aOli.length)now=0;
    for(var i=0;i<aOli.length;i++)
    {
    aOli[i].className='';
    //aUli[i].className='on';
    }
    aOli[now].className='on';
    oUl.style.left=-now*640+'px';
    },1300);
    }
    };

  • 相关阅读:
    php 基本符号
    php-fpm 启动和关闭
    php redis安装
    nginx 的安装
    Windows下Nginx的安装与配置
    apache 限制IP网段访问
    解决mysql导入导出数据乱码问题
    log_bin_trust_function_creators错误解决
    Mysqlbinlog使用
    通过yum安装Nagios
  • 原文地址:https://www.cnblogs.com/reaf/p/5154497.html
Copyright © 2020-2023  润新知