基础幻灯片

本文深入探讨了幻灯片播放的实现方式,包括透明度渐变、位置移动及自动播放功能,通过JavaScript代码实例展示了如何创建流畅的轮播效果。

常见的幻灯片效果就是轮播+渐变,就是用定时器来逐步改变图片位置(轮播)、图片某个属性(渐变),还有就是根据需要监听鼠标动作控制幻灯片的播放。

下面列举几种比较常见的幻灯片实现:

1、  把所有图片层叠放着,定时器每次执行使某张图透明度为1,其他为0,当然透明度的渐变也由定时器控制。

function show(ind){

                   index=ind;

                   for(i=0;i<l1.length;i++) //l1是图片列表

                            l1[i].style.opacity=0;

                   for(i=0;i<l2.length;i++)     //l2是幻灯片索引列表

                            l2[i].className=””;         

                   count=0;

                   s=setInterval(function(){

                            if(l1[index].style.opacity<1)

                                     l1[index].style.opacity=count*0.1;

                            else{

    clearInterval(s);  //实现图片出现是渐变的

    }                

                            count++;                             

                   },20);

                   l2[index].className="current";

                  

}

//自动播放

function autoplay(){

         play=setInterval(function(){    

                   index++;  

                   if(index>=l1.length)index=0;

                   show(index);                               

         },2000);

}

 

2、  最常见的方法是把图片设置成排成一行(left)/一列(top),每次执行移动整个列表的的left/top,看起来就好像在滚动。

function show(ind){

                   index=ind;                 

                   aim=-index*400+"px";              //索引为0的图片本次移动的目标位置

   clearInterval(s);  //每次创建新的定时器删除之前的定时器

                   s=setInterval(function(){                   

                            if(l1[0].style.left!=aim){  //图片没有到达aim位置应该继续滑动

                                     if(index==0){  //index为0时应该所有图片回复一开始位置

                                               for(i=0;i<l1.length;i++)

                                                                  l1[i].style.left=parseInt(l1[i].style.left.substr(l1[i].length-2))+400+"px";

                                     }else{                                   

                                               for(i=0;i<l1.length;i++)

                                                                  l1[i].style.left=parseInt(l1[i].style.left.substr(l1[i].length-2))-100+"px";

                                     }

                            }else{   //到达aim位置清除定时器

                                     clearInterval(s);

                            }                

 

                   },50);                          

                   for(i=0;i<l2.length;i++)

                            l2[i].className="";         

                   count=0;                                      

                   l2[index].className="current";              

}

3、  不断的把列表的一个元素添加到最后一个,appendChild会将节点从原来的位置移除,所以借此可以产生切换效果。

var img_list =document.getElementById('img_list');

setInterval(function(){

     img_list.appendChild(firstchild(img_list));

     for(i=0;i<img_list.childNodes.length;i++)

              if(img_list.childNodes[i].nodeName!== "#text") //childnodes包含文本节点,要进行节点类型判断

                       img_list.childNodes[i].style.opacity=0;

     count=0;

     s=setInterval(function(){         

              /*省略实现渐变参考1*/

 

     },20);

},1000)

function firstchild(a){

         for(i=0;i<img_list.childNodes.length;i++)

                   if(img_list.childNodes[i].nodeName!== "#text") {                   

                            returnimg_list.childNodes[i];

                   }       

                           

}

4、  css3实现的幻灯片效果,像是平滑移动的长图。

@-webkit-keyframes myAnimation{

0%{

top:0;

}

40%{

top:-200px;

}

70%{

top:-400px;

}

100%{

top:-600px;

}

}

#test ul{

-webkit-animation-name:myAnimation;

-webkit-animation-duration:4s;

-webkit-animation-timing-function:linear;

-webkit-animation-iteration-count:infinite;

}

<div id="test">

<ul>

<li><img width="300"height="200" src="../image/a.jpg" alt=""/></li>

……

</ul>

</div>

 

所有的方法都是设置父元素relative,子元素absolute,则子以父为基,移动。

然后加上鼠标动作监听:鼠标停留在div上clear定时器;点击或滑过某个索引调用显示某个图的函数;鼠标离开div调用autoplay。就实现了基本的幻灯片播放啦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值