模擬移動端上拉加載功能

代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>上拉加載</title>
	<style>
		html{
			font-size: 18px;
		}
		.containter{
			background: #ccc;
			height: 700px;
			overflow: auto;
		}
		.content{
			
		}
		.item{
			font-size: 3rem;
			text-align: center;
		}
		.bottom-line{
			text-align: center;
			background: #666
		}
	</style>
	<!-- $('.bottom-line').css('display','block').text('正在刷新...') -->
</head>
<body>
	<div class="containter">
		<div class="content">
			<div class="item">上拉加載功能1</div>
			<div class="item">上拉加載功能2</div>
			<div class="item">上拉加載功能3</div>
			<div class="item">上拉加載功能4</div>
			<div class="item">上拉加載功能5</div>
			<div class="item">上拉加載功能6</div>
			<div class="item">上拉加載功能7</div>
			<div class="item">上拉加載功能8</div>
			<div class="item">上拉加載功能9</div>
			<div class="item">上拉加載功能10</div>
			<div class="item">上拉加載功能1</div>
			<div class="item">上拉加載功能2</div>
			<div class="item">上拉加載功能3</div>
			<div class="item">上拉加載功能4</div>
			<div class="item">上拉加載功能5</div>
			<div class="item">上拉加載功能6</div>
			<div class="item">上拉加載功能7</div>
			<div class="item">上拉加載功能8</div>
			<div class="item">上拉加載功能9</div>
			<div class="item">上拉加載功能10</div>
		</div>
		<div class="bottom-line">正在刷新</div>
	</div>
	<script typet="text/javascript" src="zepto.min.js"></script>
	<script>
		var data = {
		    num: 0,
		    startY: '',
		    moveEndY: '',
		    isLoading: true,
		}
		// 上拉加載
		$(document).on('touchstart','.content', function(e) {
		    // e.preventDefault();
		  data.startY = e.originalEvent.changedTouches[0].pageY;
		})
		$(document).on('touchmove', '.content',function(e) {
		    // e.preventDefault();
		  data.moveEndY = e.originalEvent.changedTouches[0].pageY,
		  Y = data.startY - data.moveEndY;
		    if(Y>80){
		    	upLoading()
		    }
		})
		function upLoading(){
		    //判斷最後一個元素是否在底部之上
		    if( $('.item').eq($('.item').length-1).offset().top + $('.bottom-line').height() < $('.containter').height() ){
		        if( data.isLoading === false ){
		          	return
		        }else{
		          	$('.bottom-line').css('display','block').text('正在刷新...')
		          	//請求數據
		          	getRequestData( data.pageNum,data.thisId )
		          	data.pageNum ++
		        }
		    }
		}
		//模擬ajax請求數據
		function getRequestData(pageNum,id){
		    isLoading = false
		    var msg = ['請求數據1','請求數據2','請求數據3','請求數據4','請求數據5'];
        	if( data.num < 5 ){
          		$('.bottom-line').css('display','none')
		        addData(msg)
		        isLoading = true
        	}else if( data.num >=5 ){
          		$('.bottom-line').css('display','block').text('數據加載完畢')
          		setTimeout(function(){
            		$('.bottom-line').css('display','none')
          		},1000)
          		isLoading = false
        	}
        	data.num ++
		}
		//添加數據
		function addData( list ){
		    var str = ''
		    for( var i = 0; i < list.length; i++ ){
		      	str +=  '<div class="item">' + list[i] + '</div>'
		    } 
		    $('.content').append(str)
		}
	</script>
</body>
</html>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章