Js实现瀑布流效果

article/2025/8/31 13:38:15

Js实现瀑布流效果

通过JavaScript实现瀑布流效果,实现不同大小的图片有序展示

效果图:
在这里插入图片描述

核心:
1.将图片宽度固定,用浏览器窗口大小除以每个图片的宽度,求出要分成的列数
2.将每个图片定位
3.每次找到最小高度的列,将图片加到该列后

HTML部分以及CSS样式

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>* {margin: 0px;padding: 0px;}div {width: 150px;position: absolute;border: 1px solid;}img {display: inline-block;width: 150px;}#wrap {position: relative;width: 100%;}</style></head><body><div>瀑布流<img src="./img/1.jpg" alt=""></div><div>瀑布流<img src="./img/2.jpg" alt=""></div><div>瀑布流<img src="./img/3.jpg" alt=""></div><div>瀑布流<img src="./img/4.jpg" alt=""></div><div>瀑布流<img src="./img/5.jpg" alt=""></div><div>瀑布流<img src="./img/6.jpg" alt=""></div><div>瀑布流<img src="./img/7.jpg" alt=""></div><div>瀑布流<img src="./img/8.jpg" alt=""></div><div>瀑布流<img src="./img/9.jpg" alt=""></div><div>瀑布流<img src="./img/10.jpg" alt=""></div><div>瀑布流<img src="./img/11.jpg" alt=""></div><div>瀑布流<img src="./img/12.jpg" alt=""></div><div>瀑布流<img src="./img/13.jpg" alt=""></div><div>瀑布流<img src="./img/14.jpg" alt=""></div><div>瀑布流<img src="./img/15.jpg" alt=""></div><div>瀑布流<img src="./img/16.jpg" alt=""></div><div>瀑布流<img src="./img/17.jpg" alt=""></div><div>瀑布流<img src="./img/18.jpg" alt=""></div><div>瀑布流<img src="./img/19.jpg" alt=""></div><div>瀑布流<img src="./img/20.jpg" alt=""></div><div>瀑布流<img src="./img/1.jpg" alt=""></div></body>
</html>

js代码

<script>var div = document.getElementsByTagName("div");//因为图片较多,在加载时,就加载图片window.onload = function(){Full();}//当窗口大小改变时,重新分列并排序window.onresize = function(){Full();}//瀑布流函数function Full(){//求分几列var pw = document.documentElement.offsetWidth;   //页面宽度var dw = div[0].offsetWidth;           //每个div宽度var cols = Math.floor(pw/dw);//缝隙数等于列数加1,例如6行有7个缝隙var white = (pw - dw * cols)/(cols + 1);//每一列定位var t = 10;var arr = [];                              for(var i = 0;i<cols;i++){var pos = {//计算每个div的坐标(开始让每个top取一个固定值)//横坐标每次不变,只有top变/* div[0]   left: whitediv[1]   left: white*2 + dwdiv[2]   left: white*3 + dw*2*/x:Math.floor((i+1)*white+dw*i),y:t                      }arr.push(pos);      //将坐标存入数组  }console.log(arr);//每次找高度最小的一列for(var j = 0;j<div.length;j++){var index = getMinTop(arr);div[j].style.left = arr[index].x + "px";div[j].style.top = arr[index].y + "px";arr[index].y += div[j].offsetHeight + t;console.log("arr[index]",arr[index]);}}//求每次最小高度的列function getMinTop(arr){var minT = arr[0].y;var index = 0;for(var k = 0;k<arr.length;k++){if(arr[k].y < minT){minT = arr[k].y;index = k;}}return index;}
</script>

http://chatgpt.dhexx.cn/article/UVYjocut.shtml

相关文章

Java编译器插件Manifold(流形)

流形 文天祥正气歌中有云&#xff1a;“天地有正气&#xff0c;杂然赋流形”。 流形是一种抽象而又具体的事务&#xff0c;要研究一个事务就要格物&#xff0c;不格物就不能知道事物的具体描绘形式。流形大多数情况下是一种数学计算方式&#xff0c;可以将一个复杂的模型抽象…

矩阵范数

1、常用的矩阵范数主要是p1,2&#xff0c;∞ 2、谱半径 3、谱半径与矩阵范数的关系

【转】L1范数与L2范数的区别

把答案放在前面 L0范数是指向量中非0的元素的个数。(L0范数很难优化求解)。 L1范数是指向量中各个元素绝对值之和。 L2范数是指向量各元素的平方和然后求平方根。 L1范数可以进行特征选择&#xff0c;即让特征的系数变为0。 L2范数可以防止过拟合&#xff0c;提升模型的泛化能…

什么是范数(norm)?以及L1,L2范数的简单介绍

什么是范数&#xff1f; 范数&#xff0c;是具有“距离”概念的函数。我们知道距离的定义是一个宽泛的概念&#xff0c;只要满足非负、自反、三角不等式就可以称之为距离。范数是一种强化了的距离概念&#xff0c;它在定义上比距离多了一条数乘的运算法则。有时候为了便于理解…

范数(norm) 几种范数的简单介绍

什么是范数&#xff1f; 我们知道距离的定义是一个宽泛的概念&#xff0c;只要满足非负、自反、三角不等式就可以称之为距离。范数是一种强化了的距离概念&#xff0c;它在定义上比距离多了一条数乘的运算法则。有时候为了便于理解&#xff0c;我们可以把范数当作距离来理解。…

范数(简单的理解)、范数的用途、什么是范数

没学好矩阵代数的估计范数也不是太清楚&#xff0c;当然学好的人也不是太多。 范数主要是对矩阵和向量的一种描述&#xff0c;有了描述那么“大小就可以比较了”&#xff0c;从字面理解一种比较构成规范的数。有了统一的规范&#xff0c;就可以比较了。 例如&#xff1a;1比2小…

什么是范数(Norm),其具有哪些性质

文章目录 直观的感受一下范数范数的定义直观的感受下范数的边界图像范数的性质参考资料 直观的感受一下范数 先直观的感受一下二维空间的范数&#xff0c;假设在二维空间的向量为 v ( x , y ) \bold{v} (x,y) v(x,y) 则v的1范数为&#xff1a; ∣ ∣ v ∣ ∣ 1 ∣ ∣ ( x …

Webyog Sqlyog Ultimate_12.5.1最新版完美破解(带注册码)

链接: https://pan.baidu.com/s/1N3ufWDe-CKj4QvNIz8vXpA 提取码: 95hm 直接安装 接着用压缩白内的文档注册码注册即可使用。

SQLyog v12.09 (64 bit) 注册码

SQLyog v12.09 (64 bit) 注册码 姓名&#xff08;Name&#xff09;&#xff1a;cr173 序列号&#xff08;Code&#xff09;&#xff1a;8d8120df-a5c3-4989-8f47-5afc79c56e7c 或者&#xff08;OR&#xff09; 姓 名&#xff08;Name&#xff09;&#xff1a;ttrar 序 列…

SQLyog Ultimate旗舰版软件安装使用

1&#xff1a;下载地址 链接&#xff1a;https://pan.baidu.com/s/156QlwkfLL2wyKrfRTjvDhw 提取码&#xff1a; et4p 安装很简单&#xff0c;一步一步安装。填写名称时随便填&#xff0c;填写注册码时填写key.txt中对应的 2&#xff1a;建立连接 在新建连接时会出现错误2…

SQLyog下载及安装

1、下载安装包 sqlyog下载链接 2、安装 2.1、选择语言&#xff0c;默认即可 2.2、下一步即可 2.2、接受协议并下一步 2.3、选择选项 2.4、选定安装目录 2.5、安装完成 3、连接Mysql服务 看到这个界面就连接成功了。 版权声明&#xff1a;本文为CSDN博主「it00zyq」的原创文章…

sqlyog安装详细步骤

mysql安装步骤请点击&#xff1a;Mysql5.6安装详细步骤 我的sqlyog百度云链接&#xff08;永久有效&#xff09;&#xff1a;http://pan.baidu.com/s/1i5j4GG9 密码获取请点击&#xff1a;获取密码 注册码序列号&#xff08;Code&#xff09;&#xff1a;8d8120df-a5c3-4989…

SQLyog下载、安装和破解

1、SQLyog12.09的下载 链接 我的链接 2、SQLyog12.09的安装 默认步骤安装&#xff0c;但是在这里要记着更改安装位置 3、SQLyog12.09的破解 链接 我的链接 参考链接&#xff1a;https://blog.csdn.net/lihua5419/article/details/73881837/

SQLyog安装Ultimate版本(含注册码)

安装SQLyog 准备阶段 SQLyog12.08下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1iU6NtsthYwgx02zo10Trrw 提取码&#xff1a;cfz0 根据自己的电脑系统选择32\64位版本 安装阶段 1.双击SQLyog-12.0.8-0.exe 2.选择中文引导&#xff0c;点击OK 3.下一步…

SQLyog的下载安装与配置(转载)

SQLyog是一款MySQL可视化工具&#xff0c;他可以将部分SQL操作通过图形化界面操作来完成&#xff0c;方便开发者更好的进行开发及数据库设计。在安装SQLyog前最好先安装好MySQL。 MySQL下载安装教程&#xff1a;MySQL下载安装配置教程&#xff08;详细&#xff09;附下载资源 …

sqlyog 注册码

姓 名&#xff08;Name&#xff09;&#xff1a;ttrar 序 列 号&#xff08;Code&#xff09;&#xff1a;8d8120df-a5c3-4989-8f47-5afc79c56e7c 或者&#xff08;OR&#xff09; 姓 名&#xff08;Name&#xff09;&#xff1a;ttrar 序 列 号&#xff08;Code&#xff0…

excel多组数据散点图生成

在研究数据分布时&#xff0c;散点图是一类比较常用的方法&#xff0c;通过三点图可以很好的显示数据的分布位置。一组数据生成散点图&#xff0c;利用excel是很容易生成的&#xff1b;但是&#xff0c;多组数据生成散点图&#xff0c;不同组数据用不同颜色表示&#xff0c;那该…

Excel散点图 如何用平滑线 连接 不连续的点

周五临下班前&#xff0c;收到Q群&#xff08;EXCEL技术园&#xff09;消息&#xff1a;“各位老大&#xff0c;Excel2010散点图如何实现不连续点的连线”&#xff1f; 上图是散点图的原型,图表类型是带平滑线和数据标记的散点图。首先需要说明一点:”Excel图表是不识别 “”这…

excel图表美化:用散点标记制作不一样的折线图

柱形图常常用于显示一段时间内的数据变化或显示各项之间的比较情况。但当时间序列过多时&#xff0c;我们往往考虑用折线图来反映数据的变化趋势。之所以讲这个&#xff0c;是希望大家能够把折线图和柱形图的应用区分开来&#xff0c;根据自己的需求使用不同的图表。 以下是各个…

用excel画坐标散点图,并添加数据标签

今天在写毕业论文的时候发现自己需要画坐标图&#xff0c;在网上找来找去终于找到了方法&#xff0c;下面是记录&#xff1a; 打开excel之后填好数据&#xff1a; 像这样&#xff0c;之后选择要画的坐标点&#xff0c;点击插入散点图&#xff0c; 之后出现的散点图是这样的&a…