js写轮播图的两种方法

第一种:引入插件法

   导入如下的js。(js需要自己下载,放在项目的相关路径下,我是以我的项目为模板讲解的,具体情况视自己项目而定)

 <script src="../../static/wchat/js/amazeui.js"></script>
     如下,动态插入后台返回的数据。                                                                    
$.ajax({
		url : '....', 
		data : {
			
		},
		dataType : 'json',
		type : 'get',
		success : function(jsonArr) {
			 for(var i=0; i<jsonArr.length;i++){
	          	 var ds = "<li><img src='"+image+"'></li>";
	          	 $(".am-slides").append(ds);
			 }

   css如下。

<div data-am-widget="slider" class="am-slider am-slider-a1" style="position: relative;" >
		    <ul class="am-slides"> 
		     	
		    </ul>
		</div> 

   此番操作便可实现轮播效果。但是根据调试,并不能实现轮播效果,可能是js冲突的问题,可用复写amazeui 的js  解决。如下,在ajax的success的外面写上:                                                      

success : function(jsonArr) {//ajax的success函数
			 }
				
	$('.am-slider').flexslider({  
                 animation: "slide", //平滑过渡
                 pauseOnAction: true, //操作中断
                 pauseOnHover: false, //hover事件中断
                 animationLoop: true,  //循环播放
                 smoothHeight: true, 
                 slideshowSpeed: 3000,
                 touch: true,  //可以滑动
                 initDelay: 0,  
                 animationSpeed: 2000  //动画速度
            	 });   

注:只需要这么多参数足够。若有不同的需求,请参考amazeui的官方文档。

第二种:setInterval函数

var image0 = "";
var image1 = "";
var image2 = "";
var image3 = "";
var image4 = "";
          	 	
 var arr = [0,1,2,3,4];//此数组记录需要循环的li
 var arr_image = [image0,image1,image2,image3,image4];//将图片放进数组里
 var new_arr =[0,1,2,3,4];//用来循环数组
           var clock = setInterval(function self(){
		       new_arr.splice(0,5,arr_image[1],arr_image[2],arr_image[3],arr_image[4],arr_image[0]);    //splice函数从0位开始替换后面5个
		       arr_image = new_arr;//将每次替换过的数组赋予给图片数组
		          	for(var ab=0;ab<arr.length;ab++){
		          		document.getElementById(ab).src = new_arr[ab];//给image标签的src赋值。
		          	}
	          	}, 3000); 
原理:每到3秒钟给五个li的img标签循环换src,造成轮播的效果

第二步,定义手指左右滑动的事件。

                 var startx;
            	 document.getElementById("Slide_f").addEventListener("touchstart", function(e) {  
            		 clearInterval(clock);
            		 startx  = e.touches[0].clientX;  
            	    }, false);  
            	    //手指离开屏幕  
            	  document.getElementById("Slide_f").addEventListener("touchend", function(e) {  
            		  var endx; 
            	        endx = e.changedTouches[0].clientX;  
            	        if(startx-endx>0){
            	        	new_arr.splice(0,5,arr_image[1],arr_image[2],arr_image[3],arr_image[4],arr_image[0]);
        		         	for(var ab=0;ab<arr.length;ab++){
        		          		document.getElementById(ab).src = new_arr[ab];
        		          	}
            	        	
            	        }else if(startx-endx<0){
            	        	new_arr.splice(0,5,arr_image[4],arr_image[0],arr_image[1],arr_image[2],arr_image[3]);
        		         	for(var ab=0;ab<arr.length;ab++){
        		          		document.getElementById(ab).src = new_arr[ab];
        		          	}
            	        }
            	    }, false);  
原理:获取手指开始和离开的x坐标位置,判断左滑动还是右滑动。数组循环同前面逻辑相同。

最后,贴上css代码。

<div class="Slide" id="Slide_f">
			<ul id="lunbotu">

			</ul>
		</div>

注:css的我动态数据是通过js插入的。

$.ajax({
		url : '...', 
		data : {
			...
		},
		dataType : 'json',
		type : 'get',
		success : function(jsonArr) {
			....
	          	var ds = "<li><a id=h"+i+" href= '../media/detail.jsp?id=" + jsonArr[i].f_cc_id+"&category=2'><img  id="+i+" src='"+image+"'></a></li>"
	          	 $("#lunbotu").append(ds);	
			 }





猜你喜欢

转载自blog.csdn.net/admin123fy/article/details/80405097