用js实现图片自动加载的瀑布流效果
- <!DOCTYPE html>
- <html>
- <head lang="en">
- <meta charset="UTF-8">
- <title></title>
- <link rel="stylesheet" href="waterfall.css" type="text/css">
- <script src="waterfall.js"></script>
- <style>
- *{
- margin: 0;
- padding:0;
- }
- #content{
- position: relative;
- background-color: #006000;
- }
- .box{
- padding: 5px;
- float: left;
- }
- .box_img{
- padding: 5px;
- border: 1px solid #cccccc;
- box-shadow: 0 0 5px #cccccc;
- border-radius: 5px;
- }
- img{
- width: 150px;
- height: auto;
- }
- </style>
- </head>
- <body>
- <div id="content">
- <div class="box">
- <div class="box_img">
- <img src="img/1.jpg">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/1.jpg">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/kitten-medium.png">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/1.jpg">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/1.jpg">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/kitten-medium.png">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/1.jpg">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/1.jpg">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/kitten-medium.png">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/1.jpg">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/1.jpg">
- </div>
- </div>
- <div class="box">
- <div class="box_img">
- <img src="img/kitten-medium.png">
- </div>
- </div>
- </div>
- <script>
- /**
- * Created by asua on 2016/4/9.
- */
- window.onload=function(){
- imgLocation("content","box");
- var lodeImage={"Date":[{"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"},]}
- window.onscroll=function(){
- if(checkFlag()){
- for(var i=0;i<lodeImage.Date.length;i++){
- var box=document.createElement("div");
- box.className="box";
- var cparent=document.getElementById("content");
- cparent.appendChild(box);
- var box_img=document.createElement("div");
- box_img.className="box_img";
- box.appendChild(box_img);
- var img=document.createElement("img");
- img.src="Img/"+lodeImage.Date[i].src;
- box_img.appendChild(img);
- }
- imgLocation("content","box");
- }
- }
- }
- function checkFlag(){
- var cparent=document.getElementById("content");
- var ccontent=getChildElement(cparent,"box");
- var lastContentHeight=ccontent[ccontent.length-1].offsetTop;
- var scrollHeight=document.documentElement.scrollTop||document.body.scrollTop;
- var pageHeight=document.documentElement.clientHeight||document.body.clientHeight;
- console.log(lastContentHeight+":"+scrollHeight+":"+pageHeight);
- if(lastContentHeight<scrollHeight+pageHeight){
- return true;
- }
- }
- function imgLocation(parent,child){
- var cparent=document.getElementById(parent);
- var ccontent=getChildElement(cparent,child);
- var imgwidth=ccontent[0].offsetWidth;
- var cols=Math.floor(document.documentElement.clientWidth/imgwidth);
- cparent.style.cssText="width:"+imgwidth*cols+"px;margin:30px auto";
- var heightArr=[];
- for(var i=0;i<ccontent.length;i++){
- if(i<cols){
- heightArr.push(ccontent[i].offsetHeight);
- }else{
- var minHeight=Math.min.apply(null,heightArr);
- var minIndex=getMinIndex(heightArr,minHeight);
- ccontent[i].style.position="absolute";
- ccontent[i].style.top=minHeight+"px";
- ccontent[i].style.left=ccontent[minIndex].offsetLeft+"px";
- heightArr[minIndex]+=ccontent[i].offsetHeight;
- }
- }
- }
- function getMinIndex(heightArr,minHeight){
- for(var i=0;i<heightArr.length;i++){
- if(heightArr[i]==minHeight){
- return i;
- }
- }
- }
- function getChildElement(parent,content){
- var contentArr=[];
- var allcontent=parent.getElementsByTagName("*");
- for(var i=0;i<allcontent.length;i++){
- if(allcontent[i].className==content){
- contentArr.push(allcontent[i]);
- }
- }
- return contentArr;
- }
- </script>
- </body>
- </html>
用js实现图片自动加载的瀑布流效果的更多相关文章
- js原生图片懒加载 或 js原生图片预加载,html标签自定义属性
使用原声js来实现图片预加载,或图片懒加载,小伙伴们可以根据项目需要来结合vue或者是react来进行修改. 一.什么是图片懒加载或什么是图片预加载 当访问一个页面的时候,先把img元素或是其他元素的 ...
- JS实现图片预加载无需等待
网站开发时经常需要在某个页面需要实现对大量图片的浏览;用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考 ...
- js图片未加载完显示loading效果
<html> <title>js图片未加载完显示loading效果</title> <body> <style> img{float:lef ...
- 页面性能优化-原生JS实现图片懒加载
在项目开发中,我们往往会遇到一个页面需要加载很多图片的情况.我们可以一次性加载全部的图片,但是考虑到用户有可能只浏览部分图片.所以我们需要对图片加载进行优化,只加载浏览器窗口内的图片,当用户滚动时,再 ...
- js插件---图片懒加载echo.js结合 Amaze UI ScrollSpy 使用
js插件---图片懒加载echo.js结合 Amaze UI ScrollSpy 使用 一.总结 一句话总结:图片懒加载echo.js结合 Amaze UI ScrollSpy 使用的效果就是:懒加载 ...
- js插件---图片懒加载lazyload
js插件---图片懒加载lazyload 一.总结 一句话总结:使用异常简单,src里面放加载的图片,data-original里面放原图片,不懂的位置去官网或者github找API就好. 1.laz ...
- JS实现图片懒加载插件
一.前言 我在前几篇博客的记录中,有说自己在做一个图片懒加载的功能,然后巴拉巴拉的遇到哪些问题,结果做完了也没对懒加载这个功能做一些记录,所以这篇文章主要针对我所实现的思路,以及代码做个记录,实现不佳 ...
- js, javascript 图片懒加载 实例代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js判断图片是否加载完毕
附件: https://www.jb51.net/article/102385.htm 问题: .offset().top和$(window).scrollTop()每次刷新页面后滚动的值有时候会不 ...
随机推荐
- [转]Android中Application类的用法
原文链接:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application ...
- codeforces 591A. Wizards' Duel 解题报告
题目链接:http://codeforces.com/problemset/problem/591/A 题目意思:其实看下面这幅图就知道题意了,就是Harry 和 He-Who-Must-Not-Be ...
- BestCoder22 1003.NPY and shot 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5144 题目意思:有个人抛物体,已知抛的速度和高度,问可以抛到的最远距离是多少.即水平距离. 做的时候是 ...
- 【QT】C++ GUI Qt4 学习笔记4
感觉这本书的顺序设计的太不合理了,出现的最多的一句话就是后面会讲.按照使用的顺序讲不行吗?搞得代码都运行不了. 我决定先直接跳到73页,子类化QTableWidgetItem这一节.因为前面功能的实现 ...
- Mysql之取消主从复制
Mysql5.7 Mysql取消主从复制很简单.只需在其要终止同步的Server上[一般是Slave]执行下面语句即可: stop slave; reset slave; 如图: .
- Oracle dbms_lock.sleep()存储过程使用技巧-场景-分析-实例
<Oracle dbms_lock.sleep()存储过程使用技巧>-场景-分析-实例 摘要:今天是2014年3月10日,北京,雾霾,下午组织相关部门开会.会议的结尾一名开发工程师找到了我 ...
- Mac 下 gradle 路径
/Users/yourname/.gradle/wrapper/dists cmd:cd ~/.gradle/wrapper/dists/
- [转] C++的STL库,vector sort排序时间复杂度 及常见容器比较
http://www.169it.com/article/3215620760.html http://www.cnblogs.com/sharpfeng/archive/2012/09/18/269 ...
- Linux安装xwindow图形界面
在我们安装Linux系统时,刚开始的时候可能没有安装图形界面的需要,但在使用过程中却有可能产生这种需求.那么这种情况下,我们需不需要重新安装Linux系统来安装桌面呢?答案是不需要.下面我将交大家在已 ...
- 数据结构和算法 – 12.高级查找算法(下)
哈希(散列)技术既是一种存储方法,也是一种查找方法.然而它与线性表.树.图等结构不同的是,前面几种结构,数据元素之间都存在某种逻辑关系,可以用连线图示表示出来,而哈希技术的记录之间不存在什么逻辑关系, ...