JS瀑布流效果

本篇内容实现类似百度图片的呈现功能,瀑布流+自动加载

index13.html

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4 <meta charset="UTF-8">
  5 <title>uvi</title>
  6      <link rel="stylesheet" href="style2.css" type="text/css">
  7      <script src="myjs.js"></script>
  8 </head>
  9 <body>
 10    <div id="container">
 11       <div class="box">
 12          <div class="box_img">
 13             <img src="img.jpg">
 14          </div>
 15       </div>
 16       <div class="box">
 17          <div class="box_img">
 18             <img src="img2.jpg">
 19          </div>
 20       </div>
 21       <div class="box">
 22          <div class="box_img">
 23             <img src="img3.jpg">
 24          </div>
 25       </div>
 26       <div class="box">
 27          <div class="box_img">
 28             <img src="img4.jpg">
 29          </div>
 30       </div>
 31       <div class="box">
 32          <div class="box_img">
 33             <img src="img5.jpg">
 34          </div>
 35       </div>
 36       <div class="box">
 37          <div class="box_img">
 38             <img src="img6.jpg">
 39          </div>
 40       </div>
 41       <div class="box">
 42          <div class="box_img">
 43             <img src="img7.jpg">
 44          </div>
 45        </div>
 46        <div class="box">
 47          <div class="box_img">
 48             <img src="img8.jpg">
 49          </div>
 50        </div>
 51        <div class="box">
 52          <div class="box_img">
 53             <img src="img9.jpg">
 54          </div>
 55        </div>
 56        <div class="box">
 57          <div class="box_img">
 58             <img src="img3.jpg">
 59          </div>
 60       </div>
 61       <div class="box">
 62          <div class="box_img">
 63             <img src="img4.jpg">
 64          </div>
 65       </div>
 66       <div class="box">
 67          <div class="box_img">
 68             <img src="img5.jpg">
 69          </div>
 70       </div>
 71       <div class="box">
 72          <div class="box_img">
 73             <img src="img6.jpg">
 74          </div>
 75       </div>
 76       <div class="box">
 77          <div class="box_img">
 78             <img src="img7.jpg">
 79          </div>
 80        </div>
 81        <div class="box">
 82          <div class="box_img">
 83             <img src="img8.jpg">
 84          </div>
 85        </div>
 86        <div class="box">
 87          <div class="box_img">
 88             <img src="img9.jpg">
 89          </div>
 90        </div>
 91        <div class="box">
 92          <div class="box_img">
 93             <img src="img3.jpg">
 94          </div>
 95       </div>
 96       <div class="box">
 97          <div class="box_img">
 98             <img src="img4.jpg">
 99          </div>
100       </div>
101       <div class="box">
102          <div class="box_img">
103             <img src="img5.jpg">
104          </div>
105       </div>
106       <div class="box">
107          <div class="box_img">
108             <img src="img6.jpg">
109          </div>
110       </div>
111       <div class="box">
112          <div class="box_img">
113             <img src="img7.jpg">
114          </div>
115        </div>
116        <div class="box">
117          <div class="box_img">
118             <img src="img8.jpg">
119          </div>
120        </div>
121        <div class="box">
122          <div class="box_img">
123             <img src="img9.jpg">
124          </div>
125        </div>
126
127
128       </div>
129    </div>
130
131 </body>
132 </html>

css代码:

 1 *{
 2     margin:0px;
 3     padding:0px;
 4 }
 5 #container{
 6     position:relative;
 7
 8 }
 9 .box{
10     padding: 5px;
11     float: left;
12 }
13 .box_img{
14     padding:5px;
15     border:1px solid #cccccc;
16     box-shadow:0 0 5px #cccccc;
17     border-radius:5px;
18 }
19 .box_img img{
20     width:1000px;
21     height:auto;
22 }

js代码

 1 window.onload = function(){
 2     imgLocation("container","box");
 3     var imgData={"data":[{"src":"img.jpg"},{"src":"img2.jpg"},{"src":"img3.jpg"}]};
 4     window.onscroll = function(){//监听滚动条
 5         if(checkFlag()){
 6             var cparent = document.getElementById("container");
 7             for(var i=0;i<imgData.data.length;i++){
 8                 var ccontent = document.createElement("div");
 9                 ccontent.className = "box";
10                 cparent.appendChild(ccontent);
11                 var boximg = document.createElement("div");
12                 boximg.className = "box_img";
13                 ccontent.appendChild(boximg);
14                 var img = document.createElement("img");
15                 img.src = imgData.data[i].src;
16                 boximg.appendChild(img);
17             }
18             imgLocation("container","box");
19         }
20     }
21 }
22
23 function checkFlag(){
24     var cparent = document.getElementById("container");
25     var ccontent = getChildElement(cparent, "box");
26     var lastContentHeight = ccontent[ccontent.length-1].offsetTop;//获取最后一张照片距离顶部的高度
27     var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
28     var pageHeight = document.documentElement.clientHeight||document.body.clientHeight;
29     if(lastContentHeight<scrollTop+pageHeight){
30         return true;
31     }
32
33 }
34
35 function imgLocation(parent,content){
36     //将parent下的所有content全部取出
37     var cparent = document.getElementById(parent);
38     var ccontent = getChildElement(cparent,content);
39     var imgWidth = ccontent[0].offsetWidth;
40     var num =Math.floor(document.documentElement.clientWidth/imgWidth);
41     cparent.style.cssText = "width:"+imgWidth*num+"px;margin:0px auto";
42
43     var BoxHeightArr = [];
44     for(var i = 0;i<ccontent.length;i++){
45         if(i<num){
46             BoxHeightArr[i] = ccontent[i].offsetHeight;
47         }else{
48             var minHeight = Math.min.apply(null,BoxHeightArr);//获得最小高度
49             var minIndex = getminheightLocation(BoxHeightArr,minHeight);
50             ccontent[i].style.position = "absolute";
51             ccontent[i].style.top = minHeight+"px";
52             ccontent[i].style.left = ccontent[minIndex].offsetLeft+"px";
53             BoxHeightArr[minIndex] = BoxHeightArr[minIndex]+ccontent[i].offsetHeight;
54         }
55     }
56 }
57
58 function getminheightLocation(BoxHeightArr,minHeight){
59     for(var i in BoxHeightArr){
60         if(BoxHeightArr[i]==minHeight){
61             return i;
62         }
63     }
64 }
65
66 function getChildElement(parent,content){
67     var contentArr = [];
68     var allcontent = parent.getElementsByTagName("*");
69     for(var i =0;i<allcontent.length;i++){
70         if(allcontent[i].className==content){
71             contentArr.push(allcontent[i]);
72         }
73     }
74     return contentArr;
75 }
时间: 2024-10-25 23:39:10

JS瀑布流效果的相关文章

JS瀑布流效果-布局

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>JS瀑布流效果-布局</title> <style> * { margin: 0px; padding: 0px; } #container { position: relative; } .box { padding: 5px; float: left; } .box_img {

面向对象js瀑布流效果

index.html <!doctype html><html lang="en"> <head>  <!--网站编码格式,UTF-8 国际编码,GBK或 gb2312 中文编码-->  <meta charset="UTF-8">  <meta name="Keywords" content="">  <meta name="Descri

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

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

利用JS实现简单的瀑布流效果

哈哈, 我又来啦, 在这一段时间里, 我简单的学习了一下javascript(JS), 虽然不是很懂啦, 但是我也简单的尝试着做了点小东西, 就比如现在流行的瀑布流效果, 经过我的努力终于成功的完成了, 虽然中间非常的坎坷, 并不是一帆风顺但是最终我还是实现了个简单的效果, 下面就为大家简单的介绍下, 不知道的友友们, 有兴趣的话, 可以来参考下, 欢迎指出缺点和不足! 一.瀑布流之准备工作   首先声明下, 为了方便演示和联系, 我使用的是本地图片, 如果大家有需要的话可以尝试着写下网络的,

js 瀑布流

项目没上线,办公室里坐着学习技术,尼玛钱不够花啊,所以多学技术呗,仿写了个js 瀑布流,ide用的是idea14. 效果还可以. 1.项目效果图 index.html <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>js瀑布流</title> <link href="css/app.css

【前端】用jQuery实现瀑布流效果

jQuery实现瀑布流效果 何为瀑布流: 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pinterest,逐渐在国内流行开来.国内大多数清新站基本为这类风格. 瀑布流的应用: 瀑布流对于图片的展现,是高效而具有吸引力的,用户一眼扫过的快速阅读模式可以在短时间内获得更多的信息量,而瀑布流里懒加载模式又避免了用户鼠标点击的翻页操作,瀑布流的主要特性便是错落有致,定宽而不

用jQuery实现瀑布流效果学习笔记

jQuery一直没系统的学,只知道是js库,封装了好多js函数,方便了开发.以前做过一个原生的图片网站瀑布流效果,超级麻烦,这次用了jQuery方法,瞬间代码浓缩了,只有56行js代码.神奇的让我来把其中的几个函数具体记录一下. 首先,在WebStorm中新建一个工程,导入jquery库和几张img放在img文件夹下,新建html和css文件,用来搭建基本的网页结构.我们设定图片的宽度固定,高度不定,绝对定位,左浮动.这里就不细说了.我们主要讲jquery部分的知识. 这里我们讲一下我们要实现的

jQuery+HTML5图片瀑布流效果

JavaScript与HTML5实现美女瀑布流布局,本方法是把图片的路径写在了JS的数组里,不过重点好像不是在这里,而是在图片如何自动排列的问题,你可以运行本实例后,点击“加载瀑布流布局”按钮,即可看到图片的瀑布流排列效果,现在很流行这个,希望您从本代码中能找到一些灵感. <!DOCTYPE HTML> <html> <head> <title>jQuery+HTML5图片瀑布流效果丨河北电动叉车|石家庄苗木</title> <style

Jquery瀑布流效果(下篇)

接着上篇瀑布流效果说(上篇地址为http://www.cnblogs.com/jiaojiaome/articles/4123586.html). 第一个文件myself实现了瀑布流的效果,但是存在可以优化的地方. 比如initial方法,第一次刚加载的时候调用initial方法从第一张慢慢布局是没有问题的. but,后面拖动滚动后,如果满足条件,继续加载其他的,加载毕后再次调用initial()方法, 这里是可以优化的,因为之前的元素已经布局好了,不需要重新布局.所以可以从后面的元素开始 本篇