masterslider支持动态加载数据,懒加载图片

27 篇文章 4 订阅

使用masterslider动态加载图片,并且懒加载图片,使网页运行更快

思路:先动态获取到图片的url,将url赋给<img>的一个自定义属性address-src,当获取完数据之后,在使用setup()函数对slider进行初始化;当slider的Index改变的时候,在j将address-src的值赋给src。这样会加快网页渲染速度,因为只有遇到src有值的时候,浏览器才会解析它。

1、先加载slider所需文件

<link rel='stylesheet' href='css/ms-showcase2.css' type='text/css' media='all' />  
<link rel='stylesheet' href='css/masterslider.main.css' type='text/css' media='all' />  
  
<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>  
<script type='text/javascript' src='js/masterslider.js'></script>  
<script type='text/javascript' src='js/jquery.easing.min.js'></script>  

2、html如下

        <div class="ms-showcase2-template ms-dir-v"> 
            <!-- masterslider -->
            <div class="master-slider ms-skin-default" id="masterslider">
                
            </div>
          <!-- end of masterslider --> 
        </div>

3、js如下:

$(function(){
	
	 activity_id = sessionStorage.getItem('activity_id'),
	 user_id = sessionStorage.getItem('user_id'),
	 slider = new MasterSlider(),                //调用masterSlider.js,生成滚动的对象

    
        //初始化slider
	slider.control('arrows');	
	slider.control('scrollbar' , {dir:'h'});	
	slider.control('thumblist' , {autohide:false ,dir:'v',arrows:false});
	slider.__needsSnap = 1;

       // 请求微信墙样式
	requestAllImgStyle();


  
    // 懒加载图片
    function load2img(index){
    	var totalSlider = slider.api.count(),
    	    pageImg = null,
    	    imgSrc = '';

    	if( index == totalSlider-1 ){
    		// slider的下标从0开始,到了最后一张slider特殊处理
    		pageImg = $('#cropedBigImg');
    		imgSrc = pageImg.attr('data-address');
    		pageImg.attr('src',imgSrc);
    	}else{
    		pageImg = $('#'+index),
    		imgSrc = pageImg.attr('data-address');
    		pageImg.attr('src',imgSrc);
    	}
    }

	// 初始化的时候请求所有的样式
	function requestAllImgStyle(){
		var url = globalConfig.pre_api_url + "/wxwall_api/activity/get_wall_styles.php",
			data = {
				'activity_id':activity_id
			};
		
		request(url,data,function(res){
			console.log(res.msg);
			var data = res.data;

			if( data == false || data == undefined ){
				error_prompt_alert('没有获取到数据');	
			}else{
				addWallStyleToDOM(data);
			}
		},function(res){
			
			alert(res.msg);
		});
	}

	// 将获取到的所有微信墙的样式加载到DOM里面
	function addWallStyleToDOM(datas){
		var len = datas.length,
			data = null,
			en_name = '',
			ch_name = '',
			bigImgPreURL = globalConfig.pre_api_url + "/wall/style",
			smallImgPreURL = globalConfig.pre_api_url + '/img',
			bigImgSrc = '',
			smallImgSrc = '';



        $('#masterslider').empty();
		for(var i = 0 ;i<len;i++ ){
			data = datas[i];
			en_name = data.en_name;
			ch_name = data.ch_name;
			var imgList = '';

			// 图片路径
			if( en_name == 'custom' ){
				// 自定义微信墙样式
				bigImgSrc = bigImgPreURL + '/' + en_name + '/images/' + activity_id + '/kuxuan.jpg';
				smallImgSrc = smallImgPreURL + '/custom_style/' + activity_id +'/' + en_name +'.jpg';
			}else{
				bigImgSrc = bigImgPreURL + '/' + en_name + '/images/kuxuan_middle.jpg';
				smallImgSrc = smallImgPreURL + '/' + en_name +'.jpg';
			}
            
            
        	// 第一张大图不需要懒加载
        	if(i==0){
	        	imgList = '<div class="ms-slide">' +
	                        '<img id="'+i+'" alt="lorem ipsum dolor sit" value="'+en_name+'"  title="'+ch_name+'"  src="'+bigImgSrc+'"/> ' +
	                        '<img class="ms-thumb" alt="thumb" id="thumb'+i+'"  src="'+smallImgSrc+'"  value="'+en_name+'"  title="'+ch_name+'"/>' + 
	                      '</div>'; 
            }else{
            	imgList = '<div class="ms-slide">' +
                            '<img id="'+i+'" alt="lorem ipsum dolor sit" value="'+en_name+'"  title="'+ch_name+'"  data-address="'+bigImgSrc+'"/> ' +
                            '<img class="ms-thumb" alt="thumb" id="thumb'+i+'"  src="'+smallImgSrc+'"  value="'+en_name+'"  title="'+ch_name+'"/>' + 
                          '</div>'; 
            }

            $('#masterslider').append(imgList);

			if( i == len-1 ){

				// 加载自定义的图片
				imgList =  '<div class="ms-slide">'+
                               '<img id="cropedBigImg" value="custom" alt="lorem ipsum dolor sit" data-address="image/addIconBig.jpg"  title="自定义背景"/>'+ 
                               '<img class="ms-thumb" value="custom"  id="customImg" title="自定义背景" src="image/addIconSmall.jpg" alt="thumb" data-toggle="modal" data-target="#myModal"/>' +
                           '</div>'; 
                $('#masterslider').append(imgList);
				
    	        // 获取完最后一张图片之后,使用setup()函数初始化slider
				slider.setup('masterslider' , {
					width:900,                     
					height:450,
					space:5,
					view:'flow',
				});


   				//监听slider滑动事件触发加载图片
   				slider.api.addEventListener(MSSliderEvent.CHANGE_START,function(){
			   		// slider每改变一屏的时候触发
			   		var index = slider.api.index();
			   		if( index != 0){
			   			load2img(index);
			   		}
    			});

		  

			}
		}
		                 
	}


});


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值