瀑布流现在基本上是图片显示网页的标配,主要是为了适配图片和文字块的大小,使显示出的效果没有那么呆板
实现这个功能首先要有html,css和js基础
首先先实现瀑布流
即下一行的图片放在上一行的凹下去的地方
基本的html代码如下
<html lang="en"> <head> <meta charset="UTF-8"> <title>瀑布流</title> <link rel="stylesheet" type="text/css" href="css/style.css"> <!--script不能用<script/>--> <script src="/UploadFiles/2021-04-02/app1.js">然后再写一下css
*{ margin: 0px; padding: 0px; } /*container为相对布局*/ #container{ position:relative; } /*box向左浮动*/ .box{ padding:5px; float: left; } /*加一些边框*/ .img_box{ padding: 5px; border:1px solid #ccc; box-shadow:0 0 5px #ccc; border-radius: 5px; } /*宽度固定,高度自适应,使图片不变形*/ .img_box img{ width: 150px; height: auto; }接下来就是这次的核心,写js
//开始加载要执行的方法 window.onload=function(){ imgLocation("container","box") } function imgLocation(parent,content){ var cparent=document.getElementById(parent); var ccontent=getChildElement(cparent,content) //图片宽度 var imgWidth=ccontent[0].offsetWidth; //每一行图片个数 var cols= Math.floor(document.documentElement.clientWidth/imgWidth); //使宽度一定,内容居中 cparent.style.cssText="width:"+imgWidth *cols+"px;margin:0 auto"; var BoxHeightArr=[]; for(var i=0;i<ccontent.length;i++){ //获取第一行图片的高度 if (i<cols){ BoxHeightArr[i]=ccontent[i].offsetHeight; }else { //Math.min对数组要加上apply var minheight=Math.min.apply(null,BoxHeightArr); var minIndex=getminheightLocation(BoxHeightArr,minheight) //设为绝对布局使内容不随屏幕大小改变 ccontent[i].style.position="absolute"; ccontent[i].style.top=minheight+"px"; ccontent[i].style.left=ccontent[minIndex].offsetLeft+"px"; //该列的高度加上后添加进去图片高度 BoxHeightArr[minIndex]=BoxHeightArr[minIndex]+ccontent[i].offsetHeight } } } //获取最小高度的位置 function getminheightLocation(BoxHeightArr,minHeight){ for(var i in BoxHeightArr){ if (BoxHeightArr[i]==minHeight){ return i; } } } function getChildElement(parent,content){ var contentArr=[]; //获取所有子Element var allcontent=parent.getElementsByTagName("*") for(var i=0;i<allcontent.length;i++){ //如果className是box就添加进去 if (allcontent[i].className==content){ contentArr.push(allcontent[i]); } } return contentArr }这样就简单实现了瀑布流效果
接下来是下拉到底部自动刷新
主要是在滚动时监听是否到底部,到达差不多底部的位置就加载
添加以下代码即可
window.onscroll=function(){ //模拟数据 var imgData={"data":[{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"}]} if (checkFlag()){ var cparent=document.getElementById("container"); for(var i =0;i<imgData.data.length;i++){ var ccontent=document.createElement("div"); ccontent.className="box"; cparent.appendChild(ccontent); var boximg=document.createElement("div"); boximg.className="img_box"; ccontent.appendChild(boximg); var img=document.createElement("img"); img.src="/UploadFiles/2021-04-02/">效果图如下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
js,瀑布流,底部刷新
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“JavaScript实现图片瀑布流和底部刷新”评论...
更新动态
2024年11月15日
2024年11月15日
- 黄乙玲1988-无稳定的爱心肝乱糟糟[日本东芝1M版][WAV+CUE]
- 群星《我们的歌第六季 第3期》[320K/MP3][70.68MB]
- 群星《我们的歌第六季 第3期》[FLAC/分轨][369.48MB]
- 群星《燃!沙排少女 影视原声带》[320K/MP3][175.61MB]
- 乱斗海盗瞎6胜卡组推荐一览 深暗领域乱斗海盗瞎卡组分享
- 炉石传说乱斗6胜卡组分享一览 深暗领域乱斗6胜卡组代码推荐
- 炉石传说乱斗本周卡组合集 乱斗模式卡组最新推荐
- 佟妍.2015-七窍玲珑心【万马旦】【WAV+CUE】
- 叶振棠陈晓慧.1986-龙的心·俘虏你(2006复黑限量版)【永恒】【WAV+CUE】
- 陈慧琳.1998-爱我不爱(国)【福茂】【WAV+CUE】
- 咪咕快游豪礼放送,百元京东卡、海量欢乐豆就在咪咕咪粉节!
- 双11百吋大屏焕新“热”,海信AI画质电视成最大赢家
- 海信电视E8N Ultra:真正的百吋,不止是大!
- 曾庆瑜1990-曾庆瑜历年精选[派森][WAV+CUE]
- 叶玉卿1999-深情之选[飞图][WAV+CUE]