推荐一个十分实用的VUE瀑布流插件Masonry

20 篇文章 0 订阅
8 篇文章 0 订阅

Masonry是最流行的瀑布流插件之一,配置简单,功能强大,在Github上收获了1.3w+ stars。如果你想使用瀑布流提升网站体验,Masonry将是不错的选择。

啥是瀑布流:

在这里插入图片描述
是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。
最早采用此布局的网站是Pinterest,逐渐在国内流行开来。国内大多数清新站基本为这类风格,像花瓣网、蘑菇街、美丽说等。

依赖:jQuery

官网(被墙):https://masonry.desandro.com/

github:https://github.com/desandro/masonry

如何引入:

1.cdn:<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
2.npm:npm install masonry-layout
3.Bower:bower install masonry --save
4.下载到本地,直接引入

html:

<div class="grid">
  <div class="grid-item"></div>
  <div class="grid-item"></div>
  ...
</div>

2种配置方案:

// jQuery方式
$('.grid').masonry({
  columnWidth: 200,
  itemSelector: '.grid-item'
});
<!-- 内嵌HTML方式,不推荐 -->
<div class="grid" data-masonry='{ "columnWidth": 200, "itemSelector": ".grid-item" }'>

如果是一般的瀑布流上面的简单配置基本可以了;万一你的是百分百布局的话,你可以参考官网中的案例(下图位置);
在这里插入图片描述

全部配置(根据需要选择吧):

$('.grid').masonry({
  columnWidth: 200,
  itemSelector: '.grid-item',     // 要布局的网格元素
  gutter:10,                      // 网格间水平方向边距,垂直方向边距使用css的margin-bottom设置
  percentPosition:true,           // 使用columnWidth对应元素的百分比尺寸
  stamp:'.grid-stamp',             // 网格中的固定元素,不会因重新布局改变位置,移动元素填充到固定元素下方
  fitWidth: true,                  // 设置网格容器宽度等于网格宽度,这样配合css的auto margin实现居中显示
  originLeft: true,                // 默认true网格左对齐,设为false变为右对齐
  originTop: true,                 // 默认true网格对齐顶部,设为false对齐底部
  containerStyle: { position: 'relative' },     // 设置容器样式
  transitionDuration: '0.8s',      // 改变位置或变为显示后,重布局变换的持续时间,时间格式为css的时间格式
  stagger: '0.03s',                // 重布局时网格并不是一起变换的,排在后面的网格比前一个延迟开始,该项设置延迟时间  
  resize: false,                  // 改变窗口大小将不会影响布局
  initLayout: true,                // 初始化布局,设未true可手动初试化布局
});

所有方法:

$grid.masonry();                             // 重新布局
$grid.masonry( options );                    // 修改设置,再重新布局
$grid.masonry( 'layoutItems', items, isStill );     // 重布局指定元素,isStill接受布尔值,表示是否变换
$grid.masonry( 'stamp', $stamp );            // 固定元素
$grid.masonry( 'unstamp', $stamp );          // 解除固定
$grid.masonry( 'appended', elements );       // 在最后添加元素
$grid.masonry( 'prepended', elements );      // 在最前添加元素    
$grid.masonry( 'addItems', elements );       // 添加元素,但不布局
$grid.masonry( 'remove', elements );         // 删除元素 

事件:

var msnry = $grid.masonry( 'on', eventName, listener );
var msnry = $grid.masonry( 'off', eventName, listener );
var msnry = $grid.masonry( 'once', eventName, listener );

$grid.on( 'layoutComplete', function( event, items ) {
  console.log( items.length );
});
$grid.on( 'removeComplete', function( event, removedItems ) {...} )  
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: 要实现一个 Vue 3 瀑布流组件,你可以这么做: 1. 在你的 Vue 项目中安装并引入 masonry 布局插件,比如: ``` npm install masonry-layout ``` 2. 在你的 Vue 组件中引入 masonry 布局插件,并在 mounted 钩子函数中初始化 masonry 布局: ``` import Masonry from 'masonry-layout'; export default { mounted() { this.msnry = new Masonry(this.$el, { // 配置 masonry 布局的选项 }); }, }; ``` 3. 在组件的 template 中使用 masonry 布局。你可以在外层包裹一个容器元素,然后给容器元素的子元素设置类似 masonry-brick 的类名,这些子元素就会按照 masonry 布局的方式排列: ``` <template> <div class="masonry-container"> <div class="masonry-brick" v-for="item in items" :key="item.id"> <!-- 这里是单个瀑布流元素的内容 --> </div> </div> </template> ``` 4. 在组件的 data 中定义 items 数据,表示瀑布流中的所有元素,然后在 template 中使用 v-for 指令渲染这些元素。 5. 如果你想在组件中动态添加、删除瀑布流元素,你可以在对应的方法中调用 masonry 布局插件的 addItems、remove、reloadItems 等方法来更新布局。 例如,在组件的 addItem 方法中,你可以这么写: ``` addItem() { // ### 回答2: 要实现一个基于Vue3的瀑布流组件,我们可以按照以下步骤进行: 1. 创建一个Vue组件,并在组件中定义我们需要的数据和方法。 2. 在数据中定义一个数组,用于存储需要展示的图片或其他内容的信息,例如图片的URL地址。 3. 在组件的生命周期钩子函数中,可以使用一些异步请求或者模拟数据的方法来获取图片或其他内容的信息,并将获取到的数据存储到数组中。 4. 在组件的模板中,使用`v-for`指令来循环遍历数组中的数据,并在每个循环项中展示相应的内容。 5. 使用CSS样式来实现瀑布流布局,可以使用`grid`布局或者`flex`布局来实现。设置每个项的宽度和高度,并使用`column-count`或者`column-width`等属性来控制列数和列宽。 6. 当内容很多时,需要实现视图滚动时的无限加载功能,可以通过监听页面的滚动事件,在滚动到底部时加载更多的内容。 7. 可以添加一些交互的功能,例如点击某个内容项时,可以弹出大图展示或者跳转到详情页。 总结起来,实现一个Vue3的瀑布流组件主要需要定义数据、实现数据的获取和展示,以及使用CSS样式来布局和滚动加载等功能。通过以上步骤的操作,我们就可以完成一个基于Vue3的瀑布流组件。 ### 回答3: 实现一个Vue3瀑布流组件可以通过以下步骤进行: 1. 安装Vue3和相关依赖:首先,我们需要在项目中安装Vue3和其他可能用到的相关依赖,可以使用npm或yarn命令进行安装。 2. 创建瀑布流组件:在Vue3中,创建一个组件需要使用`createApp`方法。我们可以在需要显示瀑布流的页面上使用`createApp`方法创建一个Vue实例,并在`setup`函数中定义瀑布流组件。 3. 定义瀑布流布局:在瀑布流组件中,我们需要定义如何进行布局。一种常见的瀑布流布局是使用CSS的`column-count`属性实现。我们可以在瀑布流组件的模板中使用`v-for`指令遍历需要展示的数据,并使用`column-count`属性将它们分成多列。 4. 动态计算布局:由于瀑布流中的每列高度不一致,我们需要动态计算每个元素的位置。可以在瀑布流组件的`setup`函数中使用Vue3的响应式数据来保存每列的高度,并在模板中根据每列的高度动态设置每个元素的位置。 5. 处理滚动加载:瀑布流一般需要滚动加载更多数据,我们可以通过监听滚动事件来判断是否需要加载更多数据。可以使用Vue3的`onMounted`钩子函数来在组件加载完毕后绑定滚动事件,并使用`onUnmounted`钩子函数在组件卸载时解绑滚动事件。 6. 实现数据加载:在滚动加载时,可以通过请求接口或其他方式加载更多数据,并将新加载的数据添加到原有的数据列表中。可以在瀑布流组件的`setup`函数中使用Vue3的响应式数据来保存数据列表,并在模板中使用`v-for`指令遍历展示所有的数据。 7. 响应式优化:为了提高性能和用户体验,可以对瀑布流组件进行响应式优化。可以使用Vue3的`watchEffect`函数来监听数据的变化,并在数据发生变化时重新计算布局和渲染页面。 总结:通过以上步骤,我们可以实现一个基本的Vue3瀑布流组件。当然,实际项目中可能还需要考虑更多的功能和细节,如图片加载优化、动画效果等。希望以上的回答能给您提供一些参考。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值