前端js实现瀑布图代码

简介: 前端js实现瀑布图代码

以下是使用原生JavaScript实现瀑布图的代码:

HTML结构:

<div id="waterfall">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
  <div class="item">Item 4</div>
  <div class="item">Item 5</div>
  <div class="item">Item 6</div>
  <div class="item">Item 7</div>
  <div class="item">Item 8</div>
  <div class="item">Item 9</div>
  <div class="item">Item 10</div>
  <div class="item">Item 11</div>
  <div class="item">Item 12</div>
</div>

CSS样式:

#waterfall {
  column-count: 3; /* 列数为3 */
  column-gap: 20px; /* 列间距为20px */
}
.item {
  margin-bottom: 20px; /* 每个item的底部间距为20px */
  break-inside: avoid; /* 避免item跨列铺满 */
}

JavaScript代码:

function waterfall() {
  const waterfall = document.getElementById('waterfall'); // 获取瀑布流容器
  const items = waterfall.querySelectorAll('.item'); // 获取所有item
  let cellWidth = items[0].offsetWidth; // 计算item的宽度
  let cellMarginRight = parseInt(window.getComputedStyle(items[0]).marginRight); // 计算item的右边距
  let containerWidth = waterfall.offsetWidth; // 获取容器宽度
  let colNum = parseInt(containerWidth / (cellWidth + cellMarginRight)); // 计算出列数
  let colHeight = new Array(colNum).fill(0); // 创建一个长度为列数的数组,用于存储每列的高度
  for (let i = 0; i < items.length; i++) {
    let item = items[i];
    let minHeight = Math.min(...colHeight); // 获取最小高度的列
    let minIndex = colHeight.indexOf(minHeight); // 获取最小高度的列的索引
    item.style.position = 'absolute'; // 设置item为绝对定位
    item.style.left = minIndex * (cellWidth + cellMarginRight) + 'px'; // 计算item的left值
    item.style.top = colHeight[minIndex] + 'px'; // 计算item的top值
    colHeight[minIndex] += item.offsetHeight + cellMarginRight; // 更新当前列的高度
    waterfall.style.height = Math.max(...colHeight) + 'px'; // 更新瀑布流容器的高度
  }
}
// 监听窗口变化,重新计算瀑布流
window.onresize = function() {
  waterfall();
}
// 页面加载时计算瀑布流
window.onload = function() {
  waterfall();
}

以上代码实现了一个简单的瀑布流布局,当窗口大小改变时,会重新计算瀑布流的布局。你可以根据自己的需求调整样式和JavaScript代码。


目录
相关文章
|
21天前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
6月前
|
人工智能 自然语言处理 前端开发
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
DeepSite是基于DeepSeek-V3模型的在线开发工具,无需配置环境即可通过自然语言描述快速生成游戏、网页和应用代码,并支持实时预览效果,显著降低开发门槛。
1231 93
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
|
3月前
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
96 1
|
4月前
|
JavaScript 前端开发
怀孕b超单子在线制作,p图一键生成怀孕,JS代码装逼娱乐
模拟B超单的视觉效果,包含随机生成的胎儿图像、医疗文本信息和医院标志。请注意这仅用于前端开发学习
|
6月前
|
JavaScript 前端开发 API
|
5月前
|
自然语言处理 前端开发 IDE
用通义灵码全新智能体+MCP实现从设计稿到前端代码,个人免费用
通义灵码全新升级,发布国内首个支持“自主决策+工具链闭环”的编程智能体,面向个人免费!新增功能包括智能体模式、混合推理模型Qwen3支持、全面集成MCP中文社区(涵盖2400+服务)及长期记忆能力。用户可通过IDE插件使用,兼容主流开发环境如JetBrains、VS Code和Visual Studio。教程展示如何将MasterGo设计稿转化为前端代码,简化开发流程。探索链接:[通义灵码官网](https://lingma.aliyun.com/)。
|
6月前
|
前端开发 JavaScript 安全
|
4月前
|
JavaScript
JS代码的一些常用优化写法
JS代码的一些常用优化写法
74 0
|
6月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
470 9
|
6月前
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
229 8

热门文章

最新文章