jquery瀑布流,css瀑布流

web前端原生js实现瀑布流

思路分析

成都创新互联公司从2013年开始,先为奉化等服务建站,奉化等地企业,进行企业商务咨询服务。为奉化企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

步骤一:构建成行元素 + 寻找新增元素追加位置

瀑布流所有元素的宽度是固定的,我们用浏览器的宽度除以每个瀑布流块的宽度,就是每一行可容纳的瀑布流块的个数.因为,每个瀑布流块的高度不一,我们姑且把组成一行的这组元素称为成行元素,在成行元素放置完毕后,我们如果要再增加一个元素,那么它的位置应该这样找?

“获取成行元素集合中高度最低的那个元素,待放置的元素的top值应该是这个最低元素的高,left值应该是这个最低元素的left值”

这样,新增的这一个元素我们就找到了它存放的位置.这样成行元素中的最低高度值就变为了原来的高度+新增元素的高度.

步骤二:重复步骤一,依赖成行元素追加新元素

步骤一中我们已经实现了一次成行元素追加一个新的元素,这样新元素增加之后我们就构建了新的成行元素,之后的操作就是在新的成行元素中追加新元素,原理同步骤一.

!doctype html

meta charset="UTF-8"

title瀑布流效果实现

script type="text/javascript" src="scripts/jquery-1.8.2.min.js"

script type="text/javascript" src="scripts/jquery.easydrag.handler.beta2.js"

script type="text/javascript"

  window.onload=function(){

//获取父级对象

    var oParent = document.getElementById("main");

    //获取父级[第一个参数]下的所有的子元素[按照第二个参数匹配]

    var aPin =getClassObject(oParent,"pin");

    //获取每一个块的宽度

    var iPinW = aPin[0].offsetWidth;

    // //计算每行放多少个pin(瀑布流块)页面的宽度/每一个瀑布流块的宽度

    var num = Math.floor(document.documentElement.clientWidth/iPinW);

    //重置父级的样式,这样保证图片整体居中

    oParent.style.cssText="width:" + num*iPinW +"px;margin:0 auto;";

    var compareArray = [];

    //遍历获取到的所有瀑布流块

    for (var i =0; i

if(i

//成行元素

        compareArray[i] = aPin[i].offsetHeight;

      }else{

//获取成行元素中高度最低的值

        var minHeight = Math.min.apply('',compareArray);

        //alert(compareArray + ",min=" + minHeight);

//获取成行元素中高度最低元素的索引

        var minHkey =getMinHeightKey(compareArray,minHeight);

        //为新增的瀑布流块设置定位

        aPin[i].style.position ="absolute";

        aPin[i].style.top = minHeight +"px";

        //设定新增加的瀑布流块的top和left

        aPin[i].style.left =aPin[minHkey].offsetLeft +"px";

        //将该索引位置的高度改变为新增后的高度[原来瀑布流块的高度+新增的瀑布流块的高度]

        compareArray[minHkey] += aPin[i].offsetHeight;

      }

}

}

/**

*    获取parent下所有样式名为className的对象集合

*/

  function getClassObject(parent,className){

var obj = parent.getElementsByTagName("*");

    var result = [];

    for(var i=0; i

//变量如果匹配className,将匹配的对象放入数组

      if(obj[i].className==className){

result.push(obj[i]);

      }

}

return result;

  }

/**

*    获取arr数组中值为minH的值在数组中的索引

*/

  function getMinHeightKey(arr,minH){

for(key in arr){

if(arr[key] == minH){

return key;

      }

}

}

style type="text/css"

    /*设置每一个瀑布流块*/

    #main .pin{

width:220px;

        height:auto;

        padding:15px 0px 0px 15px; /*上 右 下 左*/

        float:left;

    }

/*设置每一个瀑布流块中的图像样式*/

    #main .pin .box{

width:200px;

        height:auto;

        padding:10px;

        background:#FFF;

        border:1px solid #ccc;

        box-shadow:0px 0px 6px #ccc; /*中间投影*/

        border-radius:5px; /*圆角*/

    }

#main .pin .box img{

width:200px;

    }

div id="main"

div class="pin"

    div class="box"

        img src="images/1.webp"

div class="pin"

    div class="box"

        img src="images/2.webp"

div class="pin"

    div class="box"

        img src="images/3.webp"

div class="pin"

    div class="box"

        img src="images/4.webp"

div class="pin"

    div class="box"

        img src="images/5.webp"

div class="pin"

    div class="box"

        img src="images/6.webp"

div class="pin"

    div class="box"

        img src="images/7.webp"

/html

怎样使用jQuery实现网页瀑布流示例讲解

itemSelector class选择器,默认'.item',这个表示每个块的选择器

columnWidth 一列的宽度

isAnimated 使用jquery的布局变化,默认true

animationOptions animate属性渐变效果(Object { queue: false, duration: 500 })

gutterWidth 列的间隙 Integer

isFitWidth 自适应浏览器宽度Boolean

isResizableL 是否可调整大小 Boolean

isRTL 使用从右到左的布局 Boolean

2、jquery.infinitescroll,有了瀑布流布局,我们还需要一个动态加载的功能,也就是浏览器滚动条滚动到底部的时候,需要动态加载数据,这里介绍使用分页的方式加载数据,插件名称为jquery.infinitescroll,官网地址为:,详细说明可以到官网查看,这里介绍他的一些核心的参数

itemSelector class选择器,默认'div.post',这个表示上面介绍的瀑布流的块的选择器

nextSelector 表示分页中下一页的选择器,默认为div.navigation a:first

navSelector 表示分页导航的选择器,分页导航会被隐藏

extraScrollPx 滚动条距离底部多少像素的时候开始加载,默认150

dataType 表示动态加载返回数据的格式,默认html

template 表示返回json时,用来生成瀑布流块html代码的模板方法,如果返回是json,那么必须指定这个参数,否则会报错

瀑布流布局jquery特效代码怎么用

楼主您好

引入infinitescroll

页面元素

div data-am-widget="list_news" class="am-list-news am-list-news-default" style="margin:0px 10px 0px 10px;"

!--列表标题--

div class="am-list-news-bd"

ul class="am-list block" id="container"/ul

/div

/div

div class="loading" style="text-align:center;"

/div

div id="navigation"

a/a

/div

初始化

var navigationUrl = "xxxx?pageNo=1";

$("#navigation a").attr("href", navigationUrl);

$.ajax({

url: 'xxxx',

type: 'post',

dataType:'json',

success: function(items) {

var html = successCallBack(items);//渲染每一个瀑布流块

$('#container').html(html);

},

error: function() {

alert('加载失败');

}

});

初始化方法调用

$('#container').infinitescroll({

navSelector : "#navigation", //导航的选择器,会被隐藏

nextSelector : "#navigation a", //包含下一页链接的选择器

itemSelector : ".block", //你将要取回的选项(内容块)

debug : true, //启用调试信息

animate : true, //当有新数据加载进来的时候,页面是否有动画效果,默认没有

extraScrollPx : 150, //滚动条距离底部多少像素的时候开始加载,默认150

bufferPx : 40, //载入信息的显示时间,时间越大,载入信息显示时间越短

errorCallback : function() {

//alert('error');

}, //当出错的时候,比如404页面的时候执行的函数

localMode : true, //是否允许载入具有相同函数的页面,默认为false

dataType : 'json',//可以是json

template: function(items) {

itemsTemp = items;

return successCallBack(items);

},

loading : {

img: '${ctx}/images/loading.gif',

msgText : "加载中...",

finishedMsg : '没有新数据了...',

selector : '.loading' // 显示loading信息的div

}

}, function() {

});

分享题目:jquery瀑布流,css瀑布流
文章地址:https://www.cdcxhl.com/article10/phcido.html

成都网站建设公司_创新互联,为您提供自适应网站面包屑导航营销型网站建设网站维护关键词优化微信公众号

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设