vue实现瀑布流效果

vue2.0实现瀑布流布局+虚拟列表,附带源码及效果预览视频 vue2.0实现瀑布流布局+虚拟列表,支持视窗大小改变布局也能动态变化,附带源码 阅读详情

一、介绍

瀑布流,又称为瀑布流布局。是比较流行的一种网页展示形式,在视觉上表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次按照规则放入指定位置。

二、布局原理

等宽不等高的图片排列,从第二行开始,图片插入的位置根据上一行插入图片得最低处依次插入,最终形成参差不齐的布局效果。

三、具体实现

这里是根据移动端项目实现(两栏效果)

<template>
  <div class="waterfall-container" >
    <div v-for="(item, index) in list" :key="index" class="list">
      <div
        v-for="(it, key) in item"
        :key="key"
        class="item"
        :style="{ height: `${it.itemHeight}rem` }"
      >
        <img
          class="cover"
          :key="it.thumb_path"
          src="https://img1.halobear.com/upload_page/FvZmzzPmEhvRzE7ThqyrjcSZXAg_.png"
          v-lazy="it.thumb_path"
          :style="{ height: `${it.imageHeight}rem` }"
        />
      </div>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    data: {
      type: Array,
      default: () => []
    },
  },
  data() {
    return {
      index: 0
    };
  },
  computed: {
    list() {
      let leftHeight = 0;
      // let middleHeight = 0;
      let rightHeight = 0;
      const leftData = [];
      // const middleData = [];
      const rightData = [];
      this.data.forEach(item => {
        const w = item.width || item.cover_width;
        const h = item.height || item.cover_height;
        if (!item.imageHeight) {
          item.imageHeight = (((h || 100) / (w || 100)) * 324) / 100;
        }
        // if (Math.min(leftHeight, middleHeight, rightHeight) == leftHeight) {
        //   leftHeight += item.imageHeight;
        //   leftData.push(item);
        // } else if (
        //   Math.min(leftHeight, middleHeight, rightHeight) == middleHeight
        // ) {
        //   middleHeight += item.imageHeight;
        //   middleData.push(item);
        // } else {
        //   rightHeight += item.imageHeight;
        //   rightData.push(item);
        // }
        
        if (leftHeight <= rightHeight) {
          leftHeight += item.imageHeight;
          leftData.push(item);
        } else {
          rightHeight += item.imageHeight;
          rightData.push(item);
        }
      });
      return [leftData, rightData];
      // return [leftData, middleData, rightData];
    }
  },
};
</script>

<style lang="less" scoped>
.waterfall-container {
  display: flex;
  justify-content: space-between;
  padding: 0 30px 40px;
  .list {
    width: 339px;
  }
  .item {
    display: block;
    width: 100%;
    margin-bottom: 0.12rem;
  }
  .cover {
    width: 100%;
    background: block;
    border-radius: 6px;
    background: #f0f2f5;
    opacity: 0.5;
  }
  .fadeIn {
    transition: all 1s;
    opacity: 1;
  }
}
</style>

四、实现效果

在这里插入图片描述

Vue3 结合vueUse实现图片瀑布流布局以及响应式,懒加载 基于vue3及vueUse实现的瀑布流布局实现了,但也有很多不足之处。一开始我是想通过render函数渲染,但是图片的请求是异步的,在render时一直报错(no parentNode)。后面使用原生dom的append操作。后面我将再试试render函数,以及将该抽离成hook函数以及实现图片的懒加载。 阅读详情

相关推荐

Vue实现瀑布流效果,简单方式,包含:页面大小自适应、下拉刷新、3D卡片转动效果、加载动画

实现瀑布流布局(Masonry Layout)在前端开发中是一个常见的需求,尤其是在展示图片、文章等不同高度的内容时。Vue.js 提供了灵活的数据绑定和组件化的能力,可以很好地支持瀑布流布局的实现。以下是如何基于你提供的代码片段,在 Vue 项目中实现一个简单的瀑布流布局教程。如果需要其他组件库或样式框架,根据你的项目需求进行安装。此外,还可以考虑添加懒加载功能,当用户滚动接近底部时才加载更多内容,从而减少初始加载时间。例如,你可以为每个卡片添加阴影、圆角等装饰性样式,或者调整间距来优化视觉体验。

横竖撇折点 880

Vue3瀑布流(Waterfall)

瀑布流图片展示组件,效果杠杠滴😁😁

Vue Amazing UI(Vue3 + TypeScript + Vite)组件库唯一开发维护者 1万+

Vue3实现简单的瀑布流效果,可抽离成组件直接使用

Vue3实现瀑布流效果,组件已封装,直接使用即可。

weixin_43312391的博客 2467

vue瀑布流布局

'瀑布流’是前端的一种’布局’方式,就像我们经常’搜百度’看到的’图片列表’都是’瀑布流’完成的,如下图,‘瀑布流’会根据’某一列’的’高度’,来自动向’最低高度’的一’列’下面继续添加元素,下面是在’vue’项目中使用’瀑布流’的案例。

weixin_49295874的博客 3834

VUE——超详细的美食杰项目—瀑布流形式

VUE——超详细的美食杰项目—瀑布流形式内容介绍Home.vue组件waterfall.vue组件menu-card.vue组件 内容介绍 今天我们要写的是滚动条下拉实现从缓冲中到缓冲完瀑布流形式的效果。 下面看效果图 Home.vue组件 **本组件中引入了menu-card 和Waterfall 两个子组件,下面开始获取api中的数据。在moutend中获取getBanner和getMenus的list,把list中的数据在赋值给data 中的banners和getMenus数组 import M

weixin_51962708的博客 602

vue3--实现瀑布流-长列表-懒加载

在这一章我们主要学习:瀑布流、长列表、懒加载等功能瀑布流是一个比较复杂的通用组件,因为我们要尽量做到 普适,所以就需要考虑到各种场景下的处理方案,尽量可以满足日常开发的场景,所以这就在原本就复杂的前提下,让这个功能变得更加复杂了。

小白小白从不日别的博客 1849

瀑布流效果实现vue3

瀑布流效果实现vue3

Sink 2752

vue3 - 【完整源码】实现网页整屏大量图片、div 容器的自适应瀑布流布局,宽高度不固定的列表式瀑布流展示效果(高效无 BUG 网站瀑布流效果,超详细代码注释,可根据需求快速进行改造!)

vue3瀑布流布局,vue3项目如何实现瀑布流布局,vue3瀑布流布局示例代码,vue3项目中列表容器高度不一致怎么排列,vue3中整个屏幕全是宽高不固定的图片列表怎么办,vue3网站瀑布流效果,Vue瀑布流(动态加载),vue3网站实现瀑布流详细教程,Vue实现无限加载瀑布流,vue3项目中怎么实现整个屏幕的图片瀑布流布局,vue3实现整屏瀑布流布局效果插件组件,Vue3自适应瀑布流解决方案,vue3 最好用的瀑布流插件有哪些,Vue3 瀑布流实现,vue3+ts 移动端和pc端双端实现瀑布流,vue实现

✅ 精选推荐文章 5652

vue环境简单实现动态瀑布流效果

vue环境简单实现动态瀑布流效果 最近开发项目需要实现动态瀑布流效果,项目本身是vue环境,网上很难找到类似的效果,vue-waterfall插件,懂的都懂。看了源码就知道不符合我项目目前的场景。(列表是循环渲染,高度不能提前预知也不能提前获取到,因此该组件是用不了的。—看了waterfall组件示例源码的小伙伴应该清楚)。 除了waterfall,其次就是用原生js写了。但是我不想用原生js写在vue项目中,过于冗长且不便维护。于是结合目前的情况我给出一个方案: tips:我们项目导致瀑布流的主要原因只是

different9102的博客 1080

vue2 - 详细实现视频/图片/图文“响应式瀑布流“列表布局示例代码,手机移动端H5或PC端电脑网页根据屏幕宽度自适应响应式瀑布流效果,支持数据列表动态懒加载,仿小红书图文视频div容器的瀑布流方案

vue2,nuxt2,瀑布流,响应式,图片瀑布流,视频瀑布流,图文瀑布流,手机移动端,H5瀑布流,电脑PC网站,手机电脑都能用的瀑布流布局,屏幕自适应,最好用的瀑布流组件插件,滚动分页加载瀑布流列表,瀑布流效果,自适应瀑布流布局详细教程,动态加载数据,懒加载,小红书,图文列表,视频列表,列表容器高度不一致怎么排列,整个屏幕全是宽高不固定的div容器列表怎么办,移动端和pc端双端实现瀑布流,vue实现图片瀑布流布局以及响应式,滚动条触底懒加载,组件插件,vue瀑布流 电脑手机都能用,解决卡顿不流畅,对不齐,报

✅ 精选推荐文章 4420

NMOS管和PMOS管做开关控制电路

NMOS管和PMOS管做开关控制电路

while(1) 3万+

H5移动端vue-masonry + van-list实现瀑布流懒加载效果

注:使用中遇到class被覆盖的情况,原因暂时没有排查,先使用行内样式解决此问题。

wcy0112的博客 1045

Unity XR Interaction Toolkit(二)手柄交互

XR Interaction 手柄事件和抓取设置

qq_36608844的博客 8495

【亲测有效】vue实现瀑布流效果,vue中使用vue-waterfall2来实现瀑布流效果

背景:使用了css,column原生写法和其他封装好的组件,要不就是排列的不整齐,要不就是无法实现滚动懒加载,最终找到最好的实现效果如下图。

G佳伟 749

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 491

R 语言 ggplot2 绘制精美高级全球地图

在本教程中,我们将学习如何使用R语言和ggplot2包绘制精美高级地图。ggplot2是一个功能强大的数据可视化包,它可以让我们创建漂亮、交互式的地图。我们将使用R中的一些其他包来处理地理空间数据,以便与ggplot2无缝协作。

Mrrunsen的博客 1866

瀑布流(vue3)

【代码】瀑布流(vue3)

weixin_1095的博客 297

吊打原版YOLOv8!ASF-YOLO多尺度融合+注意力机制实战解析(遥感/医疗/质检均适用)

ASF-YOLO融合YOLOv8的创新目标检测框架摘要 ASF-YOLO是针对小目标检测优化的先进框架,采用三重特征编码器和尺度序列融合技术增强多尺度特征提取能力。核心创新包括: 三重特征编码器(TPE)融合跨层级信息 尺度序列特征融合(SSFF)模块通过3D卷积处理多尺度信息 通道-位置注意力机制(CPAM)聚焦关键特征区域 Zoom_cat模块实现自适应多尺度特征融合 该框架特别适用于医学影像、遥感检测等小目标密集场景,通过动态特征权重调整显著提升检测精度。关键技术实现包含多尺度特征统一、3D卷积序列处

FJN110的博客 527

Vue-pc端实现瀑布流组件(基于vue-waterfall2)

文章目录目标效果使用库实现1.安装vue-waterfall22.在main.js中全局使用3.创建组件3.在页面中引入组件 目标效果 目标是一个很常见的瀑布流效果,能力有限,借助了大佬造的轮子来实现了 使用库实现 更详细的请参考官方文档 vue-waterfall2 这篇文章还有其他vue组件的介绍 (略过vue项目的构建) 1.安装vue-waterfall2 yarn add vue-waterfall2@latest --save 或 npm i vue-waterfall2@latest

种子不服古怪的博客 3845

「UG/NX」BlockUI 树列表(回调函数)

官方对树控件提供了21种回调函数,树的一些操作可以在这些回调函数中进行操作。

何曾参静谧的博客 1330

国产化替代落地:C#+Avalonia跨平台开发(麒麟系统适配全流程)

摘要: 随着国产化替代政策的推进,麒麟操作系统成为国产替代的重要选择。本文介绍了如何使用C#和Avalonia框架开发跨平台应用,适配麒麟系统。Avalonia支持Windows、Linux(包括麒麟)和macOS,通过XAML设计UI,便于开发者快速上手。文章详细讲解了开发环境配置、XAML控件设计、Linux特性适配及性能优化,并强调政府30%研发补贴带来的政策红利。未来,随着国产系统生态完善,C#+Avalonia将成为企业跨平台开发的高效解决方案。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3475

实现瀑布流的几种方式

是 CSS 中的一个属性,用于设置元素的内容应该被分割成多少列来显示,轻松地实现多列布局效果。

happy_xn的博客 168

Vue3 - Arco Design Vue 表格组件 table 隐藏鼠标移入时 hover 高亮背景色,el-table 组件去除鼠标悬停在表格行的 hover 高亮效果(改变鼠标移入时的背景色)

vue3,arcodesignvue,arcodesign,表格,a-table,hover,表格hover的class类名是什么,class,hover,在arcodesignvue项目中,表格组件如何去掉鼠标移入时的hover效果,vue3arco.design表格组件修改鼠标移入行的背景颜色,table表格,取消表格行row移入高亮效果,去掉鼠标移入行时的hover效果,取消a-table的hover状态,取消高亮显示,隐藏表格鼠标hover效果,去除鼠标触摸变色效果,如何取消arco表

🏆 前端领域优质创作者 3771

vue项目(美食杰) 瀑布流效果

*今天做了一个瀑布流效果,把这个效果分享一下。* 瀑布流就是我们在浏览京东或者淘宝商品时,你往下面浏览商品你会发现,你浏览的商品就好像没有尽头似的,可以去京东看一下效果。 第一步绑定元素 第二步在mounted中通过scroll事件给windoww做监听 data(){ return { islogin:false } }, mounted(){ this.tt =throttle(1000,this.scrolllogin.bind(th...

l3357050095的博客 475

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 实现预览图片上下滑动关闭效果
下一篇: vue自定义懒加载指令
伦为JAY下囚
博客等级 码龄7年 52粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值