瀑布流的简单实现
基本流程
- 第一屏图片不用Ajax加载,默认写在页面上。第一屏要以最快效率打开,待JS文件下载后再Ajax请求明显要慢。
- 滚动到最后一行图片时开始加载图片,每次加载两行,每行4张图片(4列布局)。位置计算是关键的,可以以页面中翻页容器或页面footer为参考点,如果scrollTop大概等于翻页容器或footer的top则开始加载。这里的大概根据需求适当缩减100-300px。
加载规则
- 各列容器按高度从低到高排序
- Ajax请求的图片数据按高度从高到低排序
- 拼凑HTML片段后把最高的item添加到最低的列容器中,以尽量保证拖动多次后各列高度相当,不至于某列空白太多
一些补充
- 加载的元素item一般采用动画淡出(fadeIn)
- 滚动事件scroll的hander被调用太频繁,可采用“防弹跳”技术,即设定一个时间值,比如300ms,300ms内的调用被clearTimeout掉。可避免拖动滚动条时卡。
1 2 3 4 5 6 7 8 9 10 11 12 | // 防止弹跳,避免scroll时频繁调用 function debounce(fn, wait) { var timer return function () { var later = function () { timer = null fn(arguments) } clearTimeout(timer) timer = setTimeout(later, wait) } } |
分类:
Widget
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端