本文實例為大家分享了js實現瀑布流效果的具體代碼,供大家參考,具體內容如下
前端內容:
使用Javascript和四個div,將照片放入四個div中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.container {
width: 1000px;
margin: 0 auto;
background-color: lightgray;
}
.item {
width: 24%;
margin-right: 10px;
float: left;
}
.item img{
width: 100%;
}
</style>
</head>
<body>
{#將內容放在container中#}
<div class="container">
{# 將圖片內容放入四個item中,形成四個item#}
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<script src="/static/js/jquery-2.1.4.min.js"></script>
<script>
$(function () {
{# 網頁加載時自動執行#}
var obj = new ScrollImg();
obj.fetchImg();
obj.scrollEvent();
})
{# 定義對象#}
function ScrollImg() {
this.nid = 0;
{# 取照片方法#}
this.fetchImg = function () {
var that = this
$.ajax({
url: '/get_imgs.html',
type: 'GET',
{# 傳輸數據,已經取了多少照片,後台可以依據,繼續取照片#}
data: {'nid': that.nid},
dataType: 'JSON',
success: function (args) {
if (args.status) {
var img_list = args.data;
$.each(img_list, function (index, obj) {
var eqv = that.nid % 4;
var tag = document.createElement('img')
tag.src = '/' + obj.img_dir;
console.log(eqv)
$('.container').children().eq(eqv).append(tag)
that.nid += 1;
})
}
}
})
}
{# 監聽滾動條,當滾到底部時,自動加載數據#}
this.scrollEvent = function () {
var that = this;
$(window).scroll(function () {
var srollTop = $(window).scrollTop();
var winHeight = $(window).height();
var docHeight = $(document).height();
if (srollTop + winHeight >= docHeight - 2) {
that.fetchImg();
}
})
}
}
</script>
</body>
</html>
後台內容:
基於Django的FBV,函數視圖,進行數據的讀取和處理ajax請求
def get_imgs(request):
# 獲取已經取得的照片數目
index = request.GET.get('nid')
#獲取QuerySet集合對象,取從index後的10調數據
imgs_list = models.Student.objects.values('id','img_dir','name')[index:index+10]
imgs_list = list(imgs_list)
# 傳送狀態和數據內容
ret = {
'status':True,
'data':imgs_list
}
return JsonResponse(ret)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。