|
阅读:12236回复:2
js 多动画轮播效果图片:轮播.jpg
如图,所示的轮播,不但要切换大的背景图,还有文字及其它一些图片,也要动画显示。 当然,这个效果的实现,网上有类似的插件. 不过,也可以自己写出来. 下面我们就一起来看看。燥起来吧!!! 第一步: 大家暂时不要考虑动态这些的,就是把要轮播的页面及内容,全部显示出来. ( 注:轮播一般也称幻灯片播放,下面,我们就把每一次图片的切换,称为幻灯片的切换,每一张幻灯片就用一个LI来实现,而每个幻灯片里还可以包含其它信息,文字,图片都可以,将它们用div包起来,然后,用class来指定样式,让它显示到对应的位置 ) 如下: HTML代码: <ul> <li thumb="img/wide1.jpg"> <div class="li1sub1"><img src="img/rb.png"/></div> <div class="li1sub2"><img src="img/inspira.png"/></div> <div class="li1sub3">my name is doubleyong</div> <div class="li1sub4"><a href="#">purcharse</a> </div> </li> </ul> CSS代码: ul{ height: 450px; width: 1600px; overflow: hidden; } li{ height: 450px; width: 1600px; } li>div{ position: absolute; } .li1sub1{ top:150px; left:200px; } .li1sub2{ top:120px; left:350px; } 第二步:将每一张幻灯片的背景显示出来 这里不需要将每个幻灯片添加样式,通过在li上添加thumb属性来指定背景图片的地址,然后通过JS来添加背景图片 代码如下(JS): var liarr = document.getElementById("banner").getElementsByTagName("li"); for(var i=0;i<liarr.length;i++){ var imgSrc= liarr.getAttribute("thumb"); liarr.style.backgroundImage='url('+imgSrc+')'; } 第三步,就可以来做幻灯片的切换 1. 定义两个全局变量 var timerArr= []; // 存储定时器的数据,每一张幻灯片各种动画的定时器对象 var currentSolid = 0; //当前显示的幻灯片,从0开始数 2. 显示第几张幻灯片调用的方法 //显示第几张幻灯片,num为显示的幻灯片数字,从0开始计算 function current(num){ hide(); //先把所有的幻灯片隐藏 clearTimer(); //清空之前的所有定时器 liarr[num].style.display="block"; //将要显示的那张幻灯片显示出来 // 上面,实现了显示了大的背景图片切换,但除此这外还有其它的内容,并且,还有动效,那如何来完成? // 重点分析:动效,其它就是开始是一个样式,最终是另一个样式,然后,在样式的改变过程中,加上过渡效果即可 // 最终一个样式,已经通过class来进行了定义,下面只需要设置,每一张幻灯片里的子元素的开始样式就好,即如何设置? // 通过在标签添加属性的方式来实现 var childArr = liarr[num].getElementsByTagName("div"); for(var i =0 ;i<childArr.length;i++){ childArr.style.top = childArr.getAttribute("data-y")+"px"; //设置元素的开始位置,在元素中的属性获得 childArr.style.left = childArr.getAttribute("data-x")+"px"; //设置元素的开始位置,在元素的属性中获得 //注:这里很多的值,来源于元素的属性,所以,HTML代码中,将会进行一些添加,加上需要的数据, 详细查看后面HTML修改后 childArr.style.opacity = 0; var startTime =childArr.getAttribute("data-start"); //开始时间,也是在属性中设置 //注:此setTimeout 实现了传递参数,详情参考:http://bugshouji.com/shareweb/t84-1 var timer =setTimeout(annimal(childArr),parseInt(startTime)); //添加定时器,在指定时添加指定方法,只调一次 timerArr.push(timer); //将定时器放到数组中 } } //执行动画效果的方法 function annimal(ele){ return function(){ //返回一个函数,让setTimeout执行 var speed = ele.getAttribute("data-speed")/1000; //得到动态时间,在元素属性中获得 ele.style.transition = "all "+speed+"s linear"; //添加过渡效果 ele.style.opacity = 1; ele.style.top=""; ele.style.left=""; //注,上面这两个清空,不是简单的清空了样式里的值,因为style是行内样式,指定时它的优先级高于class, //这时会应用style里的样式,而我们清空样式里设置的值,这里就将应用class里设置的值 //这就是一个亮点,通过style属性的设置,来达到两种不同样式的应用 } } // 隐藏所有的幻灯片 function hide(){ for(var i=0;i<liarr.length;i++){ liarr.style.display="none"; } } //清空之前的所有定时器 function clearTimer(){ for(var i=0;i<timerArr.length;i++){ clearTimeout(timerArr); } timerArr.length=0; } 因,上面的方法,需要在HTML中设置相关的一些属性,所以,HTML做了以下修改,如下: <li thumb="img/wide1.jpg"> <div class="li1sub1" data-x="-100" data-y="50" data-speed="300" data-start="300"><img src="img/rb.png"/></div> <div class="li1sub2" data-x="350" data-y="-50" data-speed="300" data-start="800"><img src="img/inspira.png"/></div> <div class="li1sub3" data-x="350" data-y="-50" data-speed="500" data-start="1200">my name is doubleyong</div> <div class="li1sub4" data-x="350" data-y="-50" data-speed="800" data-start="1500"><a href="#">purcharse</a> </div> </li> 添加了data-x : 开始位置的X轴坐标(left),data-y:开始位置的Y轴坐标(top),data-speed:过渡效果的动画时间,data-start: 定时器的开始时间. 这样,多动画的轮播,就写好了. 多个幻灯片的HTML代码,如下 (有多少张,就添加多少项,里面的内容也可以设置多个,注:按钮相应的要求来指定开始位置; js代码就不能修改,只需要在HTML添加对应的元素即可). <li thumb="img/wide1.jpg"> <div class="li1sub1" data-x="-100" data-y="50" data-speed="300" data-start="300"><img src="img/rb.png"/></div> <div class="li1sub2" data-x="350" data-y="-50" data-speed="300" data-start="800"><img src="img/inspira.png"/></div> <div class="li1sub3" data-x="350" data-y="-50" data-speed="500" data-start="1200">my name is doubleyong</div> <div class="li1sub4" data-x="350" data-y="-50" data-speed="800" data-start="1500"><a href="#">purcharse</a> </div> </li> <li thumb="img/wide2.jpg"> <div class="li1sub1" data-x="-100" data-y="50" data-speed="300" data-start="300"><img src="img/lightweight.png"/></div> <div class="li1sub2" data-x="350" data-y="-50" data-speed="300" data-start="800"><img src="img/macbook.png"/></div> <div class="li1sub3" data-x="350" data-y="-50" data-speed="500" data-start="1200">哇,动效出来了,好开心</div> <div class="li1sub4" data-x="350" data-y="-50" data-speed="800" data-start="1500"><a href="#">开心</a> </div> </li> <li thumb="img/wide3.jpg"> <div class="li1sub1" data-x="-100" data-y="50" data-speed="300" data-start="300"><img src="img/rm.png"/></div> <div class="li1sub2" data-x="350" data-y="-50" data-speed="300" data-start="800"><img src="img/bootstrap.png"/></div> <div class="li1sub3" data-x="350" data-y="-50" data-speed="500" data-start="1200">Bang bang bang</div> <div class="li1sub4" data-x="350" data-y="-50" data-speed="800" data-start="1500"><a href="#">嗨起来</a> </div> </li> |
|
|
沙发#
发布于:2017-09-08 11:40
多图轮播
|
|
