欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于JavaScript实现瀑布流效果

程序员文章站 2022-04-29 16:40:13
本文实例为大家分享了js实现瀑布流效果的具体代码,供大家参考,具体内容如下 前端内容: 使用javascript和四个div,将照片放入四个div中 &l...

本文实例为大家分享了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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。