原理
其实这也是幻灯片功能,通过js的setInterval方法,在指定时间间隔内反复调用某函数。这个“某函数”我们可以写成一个几个同级div列表或者同级li列表的显示/隐藏,比如在5000毫秒的间隔下反复显示/隐藏这个列表中的各个标签就能达到类似幻灯片自动切换的功能。
实例
首先我通过上一篇的主函数输出了一个文章列表,列表的结构如下:
<div class="slider_post"> <div class="slider_content"></div> <div class="slider_content"></div> <div class="slider_content"></div> </div>
其中的<div class="slider_content"></div>就是以列表形式展现出来的结构。我们可以通过js控制来让它显示其中一个时,其他的隐藏。
js控制
下面的代码分成三部分,第一部分是鼠标悬停时停止切换,鼠标移开时恢复;第二部分为自动切换;第三部分为手动切换(当然你先要加一个按钮,下面绑定的是slider_nav这个类)
$(function() { // 自动切换 var o = 0; var timeInterval = 2000; var $cont = $(".slider_post .slider_content"); $('#slider').mouseover(function(){ // 鼠标悬停时清除setInterval方法 clearTimeout(set); }); $("#slider").mouseout(function(){ // 鼠标移开时使用setInterval方法 set = window.setInterval(auto, timeInterval); }); $cont.hide(); // 隐藏整个列表 $($cont[0]).show(); // 显示列表第一个子元素 function auto() { o < $cont.length - 1 ? o++:o = 0; // o是否小于列表数-1 ,如果是则 o++ ,否则o值为0 $cont.eq(o).fadeIn(800).siblings().hide(); // 当前列表子元素显示,其他同辈子元素隐藏 } set = window.setInterval(auto, timeInterval); // 使用setInterval方法让auto函数在指定时间间隔内执行一次 $('body').on('click','.slider_next',function(){ //手动切换下一页 o < $cont.length - 1 ? o++:o = 0; $cont.eq(o).fadeIn(800).siblings().hide(); }); $('body').on('click','.slider_prev',function(){ //手动切换上一页 o > 0 ? o-- : o = $cont.length-1; $cont.eq(o).fadeIn(800).siblings().hide(); }); });
看注释,逻辑是很简单的。当然你也可以换成图片img列表,这样就是幻灯片了。
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载但请务必注明出处,尊重他人劳动成果。
转载请注明出处链接 : https://www.inlojv.com/4414.html