前端瀑布流的实现方法总结

看到网上有很多实现瀑布流的方法,一开始想用纯css试,试了很多后放弃了,网上有很多方法,但是要么代码很复杂,要么不能完美实现。说说我尝试过的方法

第一种JS为主,逻辑复杂,代码多,放弃

第二种用flex布局,float布局都会导致垂直方向间距较大等问题,无法完美实现。

第三种用column布局,这个方法会导致原本一个整体元素被拆分为若干份,会出现元素一部分在一列底部,另一部分在另一列顶部的情况,无法完美实现。2023/8/12日更新:break-inside属性可以解决截断问题,但column会默认优先竖向排列,不能横向排列

还有用一些奇怪的js+css方法的,都无法实现。目测当前不用插件能完美实现的只有第一种方法。

第四种就是用插件,例如 Masonry、Isotope 等

以Masonry为例,引入插件直接调用就行,插件下载地址:

BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务

插件参数和方法可以看这篇文章:

瀑布流插件Masonry使用教程_小言_互联网的博客_wya1


 Masonry会让每个item定位为绝对定位(absolute),这样就让实现两端对齐的瀑布流变得困难了。还有令人头疼的是gutter参数只能使用像素(px)为单位,而且不支持小数,所以只能用js计算百分比得到参数再赋值,一定要取容器宽度的值的百分比!!不要取到窗口的宽度了

    const gutter = Math.floor($('.company_body').width() * 0.04)$('.company_body').masonry({itemSelector: '.company_item',horizontalOrder:true,gutter:gutter,});

这样就实现两端对齐的瀑布流了

滑动加载参考这里:

jQuery瀑布流插件masonry使用教程 - 简书 (jianshu.com)

这个插件似乎不能和new IntersectionObserve()或图片懒加载使用,会导致top获取不正确导致item重叠情况


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部