Macy.js - 垂直布局的神器
2026-01-15 16:45:24作者:裴锟轩Denise
Macy.js 是一个轻量级的,无依赖的JavaScript库,其目标是通过寻找最小高度的最佳布局,将元素垂直地分栏排序。这个小巧而强大的工具让你的网页在不同屏幕尺寸下都能保持整洁美观。
安装
你可以通过npm或Bower进行安装,或者直接通过jsDelivr CDN引入:
npm:
npm install macy
Bower:
bower install macy
CDN引用:
<script src="https://cdn.jsdelivr.net/npm/macy@2"></script>
使用方法
只需简单调用Macy函数并配置选项:
var macyInstance = Macy({
// 在这里配置你的选项
});
选项
Macy提供了多种定制化选项以适应不同的需求:
- container:默认未设置,用于指定要应用Macy的容器元素,其所有直接子元素将被作为可排序项。
- columns:默认为4,定义默认的列数,可以使用
breakAt选项来设定响应式断点。 - trueOrder:默认为false,当设为false时,会优先平衡每列的高度而非保留原始顺序。
- margin:默认为0,可以调整列之间的像素间距;从v2.1版本开始,你还可以设定x和y方向上的独立值,甚至可以用百分比单位。
- waitForImages:默认为false,设为true则会在页面所有图片加载完成后再运行Macy。
- useOwnImageLoader:默认为false,如果你想使用自定义的图像加载器,可设为true。
- mobileFirst:默认为false,设为true启用移动优先模式,改变断点行为。
- breakAt:用于根据视口宽度更改列数的断点对象。例如,
780: 3表示当视口宽小于等于780px时,列数为3。 - cancelLegacy:默认为false,如果设为true,将在不支持Promise的浏览器中取消运行。
- useContainerForBreakpoints:默认为false,若设为true,断点基于容器元素而不是文档宽度。
方法
除了初始化之外,Macy还提供了一些实用的方法:
- recalculate():重新计算整个布局,当有新的内容插入时非常有用。
- runOnImageLoad():在图片加载时运行回调,可用于动态内容加载后的布局更新。
- remove():移除由Macy添加的所有样式和事件监听器。
- reInit():重新初始化当前的Macy实例。
- on() 和 emit():事件绑定与触发,可用于构建自定义的事件处理。
应用场景
Macy.js适用于任何需要响应式网格布局的地方,如产品展示、照片墙、卡片式设计等。它可以轻松处理图片加载,确保即使图片加载时间较长,也能呈现出漂亮的布局效果。
特点
- 轻量化:没有额外的依赖,只关注核心功能。
- 灵活的配置:多样化的选项允许你按需定制,包括列数、断点、图像加载策略等。
- 性能优化:能够等待图片加载完成再执行布局,避免因图片延迟加载导致的布局问题。
- 兼容性:全面支持主流浏览器,尽管IE11及以上版本需要Promise polyfill。
总的来说,Macy.js是一个强大且易用的工具,能帮助你打造优雅的响应式布局。立即尝试,并让网页呈现更佳视觉效果!
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0126- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniCPM-V-4.6这是 MiniCPM-V 系列有史以来效率与性能平衡最佳的模型。它以仅 1.3B 的参数规模,实现了性能与效率的双重突破,在全球同尺寸模型中登顶,全面超越了阿里 Qwen3.5-0.8B 与谷歌 Gemma4-E2B-it。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00
项目优选
收起
暂无描述
Dockerfile
720
4.62 K
Ascend Extension for PyTorch
Python
594
743
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
424
372
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
983
974
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
872
126
deepin linux kernel
C
29
16
暂无简介
Dart
966
244
Oohos_react_native
React Native鸿蒙化仓库
C++
345
390
昇腾LLM分布式训练框架
Python
158
187
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.64 K
964