Js实现图片点击切换与轮播

Js实现图片点击切换与轮播

 

 

图片点击切换

<!DOCTYPE html>
<html>
    <head> 
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript"> window.onload=function(){ var btn1=document.getElementById("pre"); var btn2=document.getElementById("next"); var img=document.getElementById("img1"); var imgarr=["images/1.jpg","images/2.jpg","images/3.jpg","images/4.jpg","images/5.jpg","images/6.jpg"]; var index=0; var info=document.getElementById("pd"); info.innerHTML="一共"+imgarr.length+"张 图片 ,当前 第"+(index+1)+"张"; btn1.onclick=function(){ index--; if(index<0){ index=imgarr.length-1; } img.src=imgarr[index]; info.innerHTML="一共"+imgarr.length+"张 图片 ,当前 第"+(index+1)+"张"; }; btn2.onclick=function(){ index++; if(index>imgarr.length-1){ index=0; } img.src=imgarr[in000dex]; info.innerHTML="一共"+imgarr.length+"张 图片 ,当前 第"+(index+1)+"张"; }; }; </script>
        <style type="text/css">
            *{ padding: 0; margin:0; } .outer{ width:640px; height:453px; margin:100px auto; text-align: center; } </style>
    </head>
    <body>
        <div class="outer">
            <p id="pd"></p>
            <img src="images/1.jpg"  id="img1" />
            <button id="pre">上一张</button>
            <button id="next">下一张</button>
             
        </div>
    </body>
</html>

 实现效果:javascript

 

轮播

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{ padding:0px; margin: 0px; } #outer{ position: relative; width:660px; height:425px; margin:50px auto ; background:yellow; padding:10px 0; overflow: hidden; } #imglist{ position: absolute; list-style: none; /* * 设置偏移量 * * */ left:0px; } #imglist li{ margin: 0 10px; float:left; } #navDiv{ position: absolute; bottom: 15px; /* * 设置left值 * outer宽度 640 * navDiv宽度 30*5=125 * 640-125=515 * 515/2=257.5 * left:257.5px; */ left:0; } #navDiv a{ float:left; width:20px; height:20px; background:#ff1; opacity: 0.5; /*兼容IE8的透明*/ filter:alpha(opacity=50); margin: 0 5px; } #navDiv a:hover{ background:red; } </style>
        <script type="text/javascript" src="tools.js"></script>
        <script type="text/javascript"> window.onload=function(){ var imglist=document.getElementById("imglist"); var navDiv=document.getElementById("navDiv"); var outer=document.getElementById("outer"); //获取页面全部的img标签
                var imgarr=document.getElementsByTagName("img"); //获取页面全部的A标签
                var allA=document.getElementsByTagName("a"); //默认显示图片的索引
                var index=0; //设置
                allA[index].style.background="black"; //设置ul的长度
                imglist.style.width=660*imgarr.length+"px"; //设置navDiv的left值
                navDiv.style.left=(outer.offsetWidth-navDiv.offsetWidth)/2+"px";
              
                //定义一个定时器标识
                var timer; //点击超连接切换到指定的图片
                //为全部的超连接绑定单击响应函数
                for(var i=0;i<allA.length;i++){ //为每个超连接都添加一个NUM属性
                    allA[i].num=i; //为超连接绑定单击响应函数
                    allA[i].onclick=function(){ //关闭自动切换
 clearInterval(timer); //获取点击超连接的索引,并将其设置为index
                    index=this.num; //切换图片
                    
                    //imglist.style.left=index*-660+"px";
 setA(); move(imglist,20,-660*index,"left",function(){ //动画执行完后,再执行自动切换
 autoChange(); }); }; } //自动切换图片
 autoChange(); //建立一个方法来设置选中的A
                function setA(){ //判断是否是最后一张照片
                    if(index>=imgarr.length-1){ index=0; //若是是最后一张,就把imglist移到0
                    imglist.style.left=0+"px"; } for(var j=0;j<allA.length;j++){ //去掉内联样式,只剩下样式表的样式
                        allA[j].style.background=""; } allA[index].style.background="black"; }; function autoChange(){ timer=setInterval(function(){ index++; index%=imgarr.length; move(imglist,20,-660*index,"left",function(){ setA(); }); },3000); }; }; </script>
    </head>
    <body>
      <!--建立一个外部的div,来做为大的容器-->
        <div id="outer">
            <!--建立一个ul,用来放置图片-->
            <ul id="imglist">
                <li>
                    <img src="images/1.jpg" />
                </li>
                <li>
                    <img src="images/2.jpg" />
                </li>
                <li>
                    <img src="images/3.jpg" />
                </li>
                <li>
                    <img src="images/4.jpg" />
                </li>
                <li>
                    <img src="images/5.jpg" />
                </li>
                <li>
                    <img src="images/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>
tools.js
//动画函数
                /*参数 * -1.obj 对象 * -2.speed 速度 * -3.target 执行动画的目标 * -4.arrt 要变化的样式 * -5.callback:回调函数 将会在动画执行完后执行 */
            
                function move(obj,speed,target,arrt,callback){ //关闭上一次定时器
 clearTimeout(obj.timer); //判断速度的正负值
                        //若是从0向800移动则为正
                        //若是从800向0移动则为负
                        var current=parseInt(getStyle(obj,arrt)); if(current>target){ speed=-speed; } //开启一个定时器
                       //为obj添加一个timer属性,用来保存它1本身的定时器的标识
                        obj.timer=setInterval(function(){ //获取原来的left值
                        var oldvalue=parseInt(getStyle(obj,arrt)); //在旧值的基础上增长
                        var newvalue=oldvalue+speed; if(speed<0&&newvalue<target||speed>0&&newvalue>target) { newvalue=target; } obj.style[arrt]=newvalue+"px"; //当元素到达target关闭定时器
                        if(newvalue===target||newvalue===target){ clearTimeout(obj.timer); //动画执行完 执行函数
                        callback&&callback(); } },30); }; 

 实现效果:css

 

相关文章
相关标签/搜索