瀑布流布局(等宽不等高jQuery)
在百度上看见的好多都是引用Masonry插件 ,之后我自己尝试了一个没有使用插件的
<body>
<div id="main">
<div class="box">
<div class="pic">
<img src="../picture/1.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/2.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/3.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/4.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/5.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/6.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/2.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/4.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/5.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/6.png">
</div>
</div>
<div class="box">
<div class="pic">
<img src="../picture/2.png">
</div>
</div>
</div>
</body>
下面是全部的css比较简单
<style>
* {
margin:;
padding:;
} #main {
position: relative;
width: 900px;
margin: 0 auto;
} .box {
padding: 15px 0 0 15px;
float: left;
} .pic img {
width: 165px;
height: auto;
}
</style>
最重要的这一段啦
<script>
$(window).on('load', function() {
waterfall();
var dataInt = {
"data": [{
"src": "../picture/1.png"
}, {
"src": "../picture/2.png"
}, {
"src": "../picture/3.png"
}]
};
})
function waterfall() {
var $boxs = $('#main>div');
var w = $boxs.eq(0).outerWidth();
var cols = Math.floor($(window).width() / w);
$('#main').width(w * cols).css('margin', '0 auto');
var hArr = [];
$boxs.each(function(index, value) {
var h = $boxs.eq(index).outerHeight();
if (index < cols) {
hArr[index] = h;
} else {
var minH = Math.min.apply(null, hArr);
var minHIndex = $.inArray(minH, hArr);
$(value).css({
'position': 'absolute',
'top': minH + 'px',
'left': minHIndex * w + 'px'
})
hArr[minHIndex] += $boxs.eq(index).outerHeight();
}
}) } </script>
下面这段jq 是可以根据鼠标轮播 下拉加载页面
<script>
$(window).on('load', function() {
waterfall();
var dataInt = {
"data": [{
"src": "../picture/1.png"
}, {
"src": "../picture/2.png"
}, {
"src": "../picture/3.png"
}]
};
$(window).on('scroll', function() {
if (checkScrollSlide) {
$.each(dataInt.data, function(key, value) {
var oBox = $('<div>').addClass('box').appendTo($('#main'));
var oPic = $('<div>').addClass('pic').appendTo($(oBox));
var oImg = $('<img>').attr('src', $(value).attr('src')).appendTo($(oPic));
})
waterfall();
}
})
})
function waterfall() {
var $boxs = $('#main>div');//包含选择器, 空格选择器会选择所有的子元素 ,> 取mian元素的第一个子元素
var w = $boxs.eq(0).outerWidth();// 列宽 width()只能获得图片的宽度,outerWidth()能获得包括边界的宽度
var cols = Math.floor($(window).width() / w);
$('#main').width(w * cols).css('margin', '0 auto');
var hArr = [];
$boxs.each(function(index, value) {
var h = $boxs.eq(index).outerHeight();// 获取每个图片的高
if (index < cols) {
hArr[index] = h;// 获取第一行的高度
} else {
var minH = Math.min.apply(null, hArr);// 获取最矮图片的索引
var minHIndex = $.inArray(minH, hArr);inArray函数能获取指定数值的索引
console.log(value);
$(value).css({
'position': 'absolute',
'top': minH + 'px',
'left': minHIndex * w + 'px'
})
hArr[minHIndex] += $boxs.eq(index).outerHeight();
}
})
}
function checkScrollSlide() {
var $lastBox = $('#main>div').last();// 获取最后一个图片
var lastBoxDis = $lastBox.offset().top + Math.floor($lastBox.outerHeight() / 2);// 最后一个图片距离父元素的高度和自身一半的高度
var scrollTop = $(window).scrollTop();// 划过的高度
var documentH = $(window).height();//浏览器的高度
return (lastBoxDis < scrollTop + documentH) ? true : false;
} </script>
两个js的 区别:前者没有下拉加载效果 后者有下拉加载效果
瀑布流布局(等宽不等高jQuery)的更多相关文章
- flexbox实现不等宽不等高的瀑布流布局
第一次做不等宽不等高的瀑布流布局,刚开始企图用ccs3的column属性+flexbox来实现,瞎捣鼓半天都没有能弄好, 弱鸡哭晕在厕所(┬_┬),气的午饭都没有吃. 后来逼着自己冷静下来,又捣鼓了1 ...
- js实现网页瀑布流布局
效果图: html代码实现网页布局: <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- JS原生方法实现瀑布流布局
html部分(图片都是本地,自己需要改动图片) p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 30.0px Consolas; color: #2b7ec ...
- jquery实现简单瀑布流布局
jquery实现简单瀑布流布局 是开头都会说的原理 瀑布流布局有两种,一种是固定列,一种是非固定列.在此主要记述第一种的实现. 固定列的特征是:无论页面如何缩放,每行的总列数都一致. 一行4列的瀑布流 ...
- jQuery Wookmark Load 瀑布流布局实例演示
瀑布流布局非常适合大量图片的展示,一改过去裁剪图片尺寸统一的排版,每张图片都能完全展示,并错落有致,让人眼前一亮. 版本: jQuery v1.4.3+ jQuery Wookmark Load v1 ...
- jQuery Wookmark 瀑布流布局
瀑布流布局非常适合大量图片的展示,一改过去裁剪图片尺寸统一的排版,每张图片都能完全展示,并错落有致,让人眼前一亮. 版本: jQuery v1.4.3+ jQuery Wookmark Load v1 ...
- Jquery瀑布流布局
瀑布流布局最近真的很流行,很多人都跟我一样想知道是怎么做出来的吧,经过网上搜索大量的参考结合N边的实验今天终于被我写出来了,为了便于大家理解我使用了jQuery(当然用源生js代码执行的效率会高一些, ...
- Ajax+json+jquery实现无限瀑布流布局
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- AJAX+json+jquery实现预加载瀑布流布局
宽度是一定的高度不定的瀑布流布局 也可以说是无缝拼图 当浏览器滚动到底部时候自动加载图片 加载的图片地址用json 在img.js里 ,还有正在加载动画是用 css3制作的 在ff等支持css3可以显 ...
随机推荐
- nginx+fastCGI
首先贴些遇到的问题,之后再整理 1.yum -y install pcre zlib OpenSSL openssl-devel pcre-devel 2. nginx: [emerg] " ...
- Visual Studio 2019 16.0 正式版下载
Visual Studio 2019 16.0 最新版 现在流行 官方版直接下载 在线选择性安装https://www.visualstudio.com/zh-hans/downloads/ Vis ...
- mysql数据库设计三范式
为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际 ...
- djanggo中自定义过滤器的步骤图解
- 洛谷 K短路(魔法猪学院)
A*+迪杰特斯拉... 第十一个点卡爆 不管了 #include<iostream> #include<algorithm> #include<cstring> # ...
- 高版本mysql8.0解压版安装步骤
解压版安装操作官网下载: mysql-installer-community-8.0.12.0.msi如上操作: http://www.cnblogs.com/elfin/p/9429877.html ...
- vue 脚手架关于路由的一点理解
https://router.vuejs.org/zh/ 可以先翻翻文档看看介绍啊,一般我不怎么喜欢看文档,都是直接看人家案例,在回头看文档的,所以学习速度慢很多,希望我以后成为一个爱学习的妹子,比较 ...
- vue脚手架3
跟脚手架2安装都一样,已经安装脚手架2的要执行下面的命令 ,先删除 npm uninstall vue-cli -g 或 yarn global remove vue-cli 卸载 在执行下面的命令 ...
- Overture如何更改音符符尾设置
Overture作为一款专业的五线谱打谱软件,深受每一个音乐爱好者喜爱.在我们使用Overture来进行打谱操作时,往往会遇到下面这种情况:我们一般打上两个八分音符时,软件会自动符尾相连,但当我们连续 ...
- Spring history、design philosophy (Spring的历史及设计理念)
一,Spring的发展史 1,Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和x ...