先给大家展示下效果图:
向下滑动网页的时候能够自动加载图片并显示。
盛放图片的盒子模型如下:
<div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/8.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div>
设置img-width为150px,然后box_img添加内边距和阴影效果,box的外边距为0,添加内边距。盒子的宽度是由img-width和边距撑开的。也就是说盒子之间是没有间距的,但是盒子内部有一些边距的效果。这样在js设置位置的时候就不用考虑边距问题,直接调用box的宽度就可以了。
设置盛放所有box的div的position为relative,这样在设置top值或是left值的时候,就不用考虑最外层的margin属性。
放置图片的位置:获得第一行图片的高度并且存放在数组里面,接下来的图片设置position为absolute,放置在高度最小的图片的下面,然后设置top和left,并且把数组的最小值加上新放置的图片的高度。也就是说HTML里面原始放置的图片除了第一行以外,其他的图片都是在js里面又重新定位的。
当滑动页面到底部的时候触发事件函数,紧接着放置一些图片,这样保证图片的无限加载。
HTML文件:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-"> <title></title> <link rel="stylesheet" href="waterfall.css" type="text/css"> <script src="waterfall.js"></script> </head> <body> <div id="content"> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box" > <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box" > <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box" > <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box" > <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box"> <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> <div class="box" > <div class="box_img"> <img src="/static/imghwm/default1.png" data-src="Img/.jpg" class="lazy" alt="JavaScript实现图片自动加载的瀑布流效果_javascript技巧" > </div> </div> </div> </body> </html>
CSS文件:
*{ margin: ; padding:; } #content{ position: relative; background-color: #; } .box{ padding: px; float: left; } .box_img{ padding: px; border: px solid #cccccc; box-shadow: px #cccccc; border-radius: px; } img{ width: px; height: auto; }
js文件:
Math.floor()函数能够向下取整。
Math.min.apply(null,heightArr);函数能获得heightArr数组的最小值。
window.onscroll=function(){};滑动页面的时候触发这个函数。
document.documentElement.clientHeight;浏览器显示出来的高度。
document.documentElement.scrollTop;滑动的距离。
/** * 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; }
好了,关于js实现图片自动加载的瀑布流效果代码到此给大家介绍完了,希望对大家有所帮助!

C 和JavaScript通过WebAssembly实现互操作性。1)C 代码编译成WebAssembly模块,引入到JavaScript环境中,增强计算能力。2)在游戏开发中,C 处理物理引擎和图形渲染,JavaScript负责游戏逻辑和用户界面。

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

WebStorm Mac版
好用的JavaScript开发工具