js 之瀑布流

页面:

<div id="continars">
</div>

CSS:

* {margin:0;padding:0;}
.box {position:relative;float:left;}
.content {padding:10px;border:1px solid #ccc;box-shadow:0 0 5px #ccc;border-radius:5px;}
.content img {width:190px;height:auto;}

JS代码:

 1 var ImageDat = { "data": [{ "src": "1.jpg" }, { "src": "2.jpg" }, { "src": "3.jpg" }, { "src": "4.jpg" }, { "src": "5.jpg" }, { "src": "6.jpg" }, { "src": "7.jpg" }, { "src": "8.jpg" }, { "src": "9.jpg" }, { "src": "10.jpg" } ] };
 2 $(document).ready(function () {
 3 $(window).on("load", function () {
 4 imaglocation();
 5 window.onscroll = function () {
 6 if (scrollside()){
 7 $.each(ImageDat.data, function (index, value) {
 8 var box = $("<div>").addClass("box").appendTo("#continars");
 9 var content = $("<div>").addClass("content").appendTo(box);
10 $("<img>").attr("src", "./image/" + $(value).attr("src")).appendTo(content);
11 });
12 imaglocation();
13 }
14 };
15 });
16 });
17 function scrollside() {
18 var box = $(".box");
19 var lastboxheight = box.last().get(0).offsetTop + Math.floor(box.last().height() / 2);//当滚动条滚动到最下面张图片的一般位置的时候
20 var documentheight = window.screen.availHeight;//当前浏览器可见页面高度
21 var scrollTop = $(window).scrollTop();//可见页面顶部到页面顶部的距离
22 return (lastboxheight < (documentheight + scrollTop)) ? true : false;
23 }
24 function imaglocation() {
25 var box = $(".box");
26 var boxwidth = box.eq(0).width();//第一张图片的宽度
27 var num = Math.floor($(window).width() / boxwidth);
28 var boxArr = [];
29 box.each(function (index, value) {
30 var boxheight = box.eq(index).height();
31 if (index < num) {
32 boxArr[index] = boxheight;
33 }
34 else {
35 var minboxheight = Math.min.apply(null, boxArr);
36 var minboxindex = $.inArray(minboxheight, boxArr);//判断高度最低的图的位置
37 $(value).css({
38 "position": "absolute",
39 "top": minboxheight,
40 "left": box.eq(minboxindex).position().left
41 });
42 boxArr[minboxindex] += box.eq(index).height();//将最新加入图片高度加到列高度计算中
43 }
44 });
45 }
46
47  

其中:1-10的图片可以随机选择放入

时间: 2024-08-06 07:55:31

js 之瀑布流的相关文章

一步步教你js原生瀑布流效果实现

一步步教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一张挨着一张竖直排列 4.鼠标向下滚动,一直不停的加载图片 5.浏览器的宽度改变,图片的列数会进行相应的更改 那么这种效果类似现实生活中的瀑布,所以我们叫它瀑布流的效果. Js原生瀑布流效果的实现 从上述分析中,我们可以把整个效果分为以下四个部分: html+css界面搭建 瀑布流效果 浏览器向下滚动

原生JS实现瀑布流

浏览网页的时候经常会遇到瀑布流布局的网站.也许有些读者不了解瀑布流.瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.比如下面图片的效果,就是一个典型的瀑布流. 网上有很多JQ的瀑布流插件,而且都写好了兼容,都可以尝试去使用,这里只是跟大家分享一下原生js实现瀑布流的效果,一起学习. 一步一步来: 首先新建一个文件,就叫瀑布流.html吧. <!doctype html> <html

bootstrap+masonry.js写瀑布流

最近在用bootstrap写一个网站,其中有个图文展示的页面要用到瀑布流的效果.因为项目要求,项目要以bootstrap为基准,不准私自添加内联样式.内部样式,所以,自己写瀑布流就不行了,所以,根据要求,百度查找相关资料,看到masonry.js.个人认为这是一个非常好用的瀑布流插件.下面说一下我在引用的过程中遇到的问题,一开始我用bootstrap栅格系统布局,代码如下 <div class="row masonry"> <div class="col-x

js实现瀑布流以及加载效果

一.瀑布流是个啥? 瀑布流,是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部. 最早采用瀑布流布局的网站是Pinterest,逐渐在国内流行开来,比如我们熟知的百度图片的布局,在"很久"以前,百度图片还是需要一页一页的点击进行查看更多图片,而现在的瀑布流布局使用户查找图片更加方便. 二.瀑布流的优缺点 优点: 1.节省了页面的空间,不再需要导航和页码按钮. 2.增强了用户的体验,使用户的体验更多的是在于浏览图

js实现瀑布流

下午查找了瀑布流的相关原理,找了一些css3实现的还有js实现的,最后总结了一些比较简单的,易懂的整理起来 1.css3实现 只要运用到    column-count分列 column-width固定宽度 column-gap设置列间的间隔 break-inside:avoid防止换行 注意: Internet Explorer 9及更早 IE 版本浏览器不支持 column-count 属性. 下面是一个例子: html代码: <!DOCTYPE html> <html> &l

js实现瀑布流加载图片效果

今天学习了一个瀑布流加载效果,很多网站都有瀑布流效果,瀑布流就是很多产品显示在网页上,宽相同,高度不同,表现为多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.原理是:1.设定一行中的列数:2.取第一行中每一个div的高度并把每一个高度放进一个数组中:3.算出数组中最小高度的index值:4.把第二行的第一个div放到最小高度的div的下方并把重新算出的高度值放进数组中,重新计算最小高度的index值:5.以此类推实现多栏布局的瀑布流效果:6.如果最后一张div的高度

blocksit.js插件瀑布流

<!DOCTYPE html> <html> <head> <title>jQuery瀑布流插件BlocksIt </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel='stylesheet' href='css/style.css' media='screen' /

js图片瀑布流

一个简单的图片瀑布流 首先准备一个html文件,css用到很少,所以写在html里,还需要一个js文件及几张图片(分辨率随意) html的代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> body { margin: 0px; padding: 0px;

JS图片瀑布流制作

这里为大家带来了两种通过js制作图片瀑布流的方法. 一.绝对定位法 计算每个元素的绝对位置进行设置. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">