jQuery实现瀑布流
jQuery实现瀑布流js分析:首先监听window事件获取图片加载的位置,调用图片加载位置的函数,然后以鼠标滑动的距离来加载图片
1.HTML布局:
1 <div id="container"> 2 <div class="box"> 3 <div class="content"> 4 <img src="../img/1.jpg"> 5 </div> 6 </div> 7 <div class="box"> 8 <div class="content"> 9 <img src="../img/9.jpg"> 10 </div> 11 </div> 12 <div class="box"> 13 <div class="content"> 14 <img src="../img/11.jpg"> 15 </div> 16 </div> 17 <div class="box"> 18 <div class="content"> 19 <img src="../img/12.jpg"> 20 </div> 21 </div> 22 <-- class为box可以多复制几个--> 23 </div>
2.css样式:
1 <style> 2 *{padding:0;margin:0;} 3 .box{position:relative;float:left;/*position:absolute*/} 4 .content{padding:10px;border:1px solid #ccc;box-shadow: 0 0 5px #ccc; 5 border-radius: 5px;} 6 img{width:190px;height:auto;} 7 </style>
3.js代码(注释写的有点乱)
<script>$(function(){//监听window事件来获取图片加载的位置$(window).on("load",function(){imgLoction();var dataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};window.onscroll=function(){if(checkscrollside()){$.each( dataInt.data, function( index, value ){var $oPin = $('<div>').addClass('box').appendTo( $( "#container" ) );var $oBox = $('<div>').addClass('content').appendTo( $oPin );$('<img>').attr('src','./img/' + $( value).attr( 'src') ).appendTo($oBox);});imgLoction();};}})})function checkscrollside(){var $aPin = $( ".box" );var lastPinH = $aPin.last().get(0).offsetTop + Math.floor($aPin.last().height()/2);//创建【触发添加块框函数waterfall()】的高度:最后一个块框的距离网页顶部+自身高的一半(实现未滚到底就开始加载)var scrollTop = $( window ).scrollTop()//注意解决兼容性var documentH = $( document ).width();//页面高度return (lastPinH < scrollTop + documentH ) ? true : false;//到达指定高度后 返回true,触发waterfall()函数 }function imgLoction(){//首先创建一个盒子对象,对应的就是index文件当中的box元素var box=$(".box");//获取盒子的宽度==第一个盒子的宽度var boxwidth=box.eq(0).width();//获取盒子宽度后看一排能摆放多少个//一排的个数等于当前浏览器窗口的宽度除以每个盒子的宽度,注意除以得到的数是小数,要将其转化为整数var num=Math.floor($(window).width()/boxwidth);//定义一个数组来承载储存列中所有盒子的高度,然后获取一排盒子中高度最小的那个var boxArr=[];//遍历box之后获取每个盒子的高度box.each(function(index,value){//这里的value是盒子对象//console.log(index);//创建一个盒子的高度,用来获取每个盒子的高度var boxheight=box.eq(index).height();//然后 判断:储存第一排中每一个图片的高度,放在数组中储存它if(index<num){boxArr[index]=boxheight;//console.log(boxheight);}else{//获取到高度之后,第二排开始摆放,首先获取到图片最小的一个高度var minboxheight=Math.min.apply(null,boxArr);//console.log(minboxheight);//设置图片的位置,获取第一排中最小图片存放的位置var boxminindex=$.inArray(minboxheight,boxArr);//console.log(boxminindex);//接下来通过位置进行摆放//console.log(value);//获取对象 $(value).css({"position":"absolute","top":minboxheight,"left":box.eq(boxminindex).position().left})//然后还要记一个图片摆放的高度boxArr[boxminindex]+=box.eq(index).height();}})}</script>
转载于:https://www.cnblogs.com/karry990921/p/7489408.html
jQuery实现瀑布流相关推荐
- masonry ajax瀑布流,jquery.masonry瀑布流插件的4个使用步骤
解释:很简单,就是把下载之后的脚本文件嵌入到你想使用2.瀑布流布局样式代码 .container-fluid { padding: 20px; } .box { margin-bottom: 20px ...
- jQuery图片瀑布流demo效果示例(整理)jQuery瀑布流效果
效果图: <!DOCTYPE html> <html lang="zh"><head><meta charset="UTF-8& ...
- jquery版瀑布流
一个月前用jquery实现了瀑布流效果,看着当时的代码有点难过--今天抽时间稍微修改了一下.额,现在看起来不是那么难受了,就来和大家分享一下.废话不多说,开始正题~ 一.演示效果 二.html代码 & ...
- Jquery之瀑布流
效果图展示: 示例代码如下: html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...
- ES6+JQuery实现瀑布流效果
瀑布流 1. 定位后确定浏览器显示区域内,一行能放多少列图片盒子. 获取页面的宽度获取图片盒子的宽度 获取页面的宽度获取图片盒子的宽度 显示的列数=页面宽度/图片盒子宽度 column = pageW ...
- jquery 与php交互,jquery实现瀑布流并与php实现数据交互
以前js 实现过一个瀑布流,jquery 也来实现一个 主要思路: 1 先显示出来大概20张图片,使界面出现滚动条 2 设置显示出来图片父id 设置为relative 定位,图片定位方式为float ...
- 利用jquery实现瀑布流效果
前言: 现在很多内容型网站都会采用瀑布流布局来实现内容展示,包括文章类及图片类,我们可以自己动手来编写属于我们自己的瀑布流插件. 效果: CSS部分: *{margin: 0;padding: 0;} ...
- 前端学习(1032):jquery插件-瀑布流
1网址打开 下载插件 2引入css和js和html 3修改图片
- 堆糖瀑布流完整解决方案(jQuery)
2010年堆糖创办以来,网站界面经历过3-5次重大改版,logo也曾更换过两次,早期蓝红相间三个圈的logo恐怕很少有人记得了.与此同时,前端 js 框架也在默默的更新换代.最早堆糖上线时,js 采用 ...
- jQuery动态加载瀑布流
jquery实现瀑布流 案例分析 首先,它的每个图片是等宽的 其次,除第一排正常显示其余的图片都会显示在上一排中高度最小的那个图片的下面 最后,就是根据最矮图片所在位置的宽高来,决定绝对定位设置图片显 ...
最新文章
- php查询一对多,PHP并输出一对多结果
- UIMenuController 和 UIResponderStandardEditActions
- Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
- kafka安装完整步骤_还在寻找Kafka最新的安装教程吗?精细的安装步骤分享给大家...
- java私有的构造函数_Java 私有构造函数的使用
- 未来公务员都会是数据分析高手了,你还要当个只会Excel的小白吗?
- 探究文华盘整(PANZHENG)函数之一
- Technorati Grabber:获得您的Technorati排名和权限
- kafka:sync、async以及oneway 几种发送消息模式
- Kubernetes入门一:介绍及环境准备
- 数据分析---arXiv论文数据统计
- 树莓派科学小实验4B--07_继电器
- 服务器型号类型,cpu类型和型号服务器
- MTC生态最新的落地应用,连环竞技场即将耀世而来
- linux支持cpu类型,cpu类型
- Hbase统计表的行数的3种方法
- 华南x79主板u盘装系统教程_华南x99主板装win7系统及BIOS设置教程
- 福布斯:历史上十大商业败笔
- DataFrame数据分析
- 【码上实战】【立体匹配系列】经典SGM:(5)视差优化
热门文章
- dpkg-buildpackage: error: debian/rules binary subprocess was killed by signal 2
- Detected problems with app native libraries (please consult log for detail): lib.so: text relocation
- 疫情严峻,被迫在家办公
- C中使用errno查看函数调用的错误
- 称赞上海禁用一次性酒店用品
- PyCharm中,如何成功 import caffe?
- Ubuntu安装GitKraken
- 全网首发:gstreamer如何接入RTSP流(IP摄像头)的代码范例
- 管理感悟:计算缺陷的权重
- setitime和相关函数