优秀的编程知识分享平台

网站首页 > 技术文章 正文

Vue.js轮播库热门精选(vue轮播图组件banner)

nanyue 2024-10-25 13:12:15 技术文章 1 ℃


作者:John Au-Yeung

转发链接:https://blog.logrocket.com/top-picks-vue-js-carousel-libraries/

译者:Echa攻城狮

前言

要创建一个轮播图,我们必须动态地创建显示图片,并添加导航按钮来在它们之间导航,我们可能还需要自动播放功能。

这些都需要时间来构建,而且极有可能我们可以更好地利用这些时间做其他事情。在这篇文章中,我们将看看Vue.js的一些轮播图库,让我们的生活变得更轻松,并让我们拿回一些宝贵的时间。

vue-easy-slider

地址:https://github.com/shhdgit/vue-easy-slider

vue-easy-slider[1] 是一个简单的Vue滑块组件,可与鼠标和触摸屏一起使用。它是可自定义的,并带有动画效果。

要使用它,我们通过运行以下命令进行安装:

npm i -S vue-easy-slider

然后我们可以通过编写以下代码来使用它:

//main.js

import Vue from "vue";
import App from "./App.vue";
import EasySlider from "vue-easy-slider";

Vue.use(EasySlider);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");
//App.vue

<template>
  <div id="app">
    <slider animation="fade">
      <slider-item v-for="(i, index) in list" :key="index">
        <img :src="i">
      </slider-item>
    </slider>
  </div>
</template>

<script>export default {
  name: "App",
  data() {
    return {
      index: 0,
      list: Array(5)
        .fill()
        .map((_, i) => `http://lorempixel.com/400/200/sports/${i}/`)
    };
  }
};</script>

我们使用 slider 组件来添加轮播,animation 属性设置动画效果。顾名思义,slider-item 存放的是轮播项目。

我们还可以更改样式。例如,我们可以通过编写以下内容来更改宽度和高度:

<template>
  <div id="app">
    <slider animation="fade" width="400px" height="250px">
      <slider-item v-for="(i, index) in list" :key="index">
        <img :src="i">
      </slider-item>
    </slider>
  </div>
</template>

<script>export default {
  name: "App",
  data() {
    return {
      index: 0,
      list: Array(5)
        .fill()
        .map((_, i) => `http://lorempixel.com/400/200/sports/${i}/`)
    };
  }
};</script>

我们还可以启用或禁用触摸控制并更改幻灯片切换的速度。它还会发出一些事件,例如 change,在切换幻灯片时会触发。当显示下一张或上一张幻灯片时触发。

它还具有用于放置占位符的插槽,以便在加载幻灯片时显示某些内容。


vue-awesome-swiper

地址:https://github.com/surmon-china/vue-awesome-swiper

vue-awesome-swiper[2]是Vue应用程序的另一个易于使用的轮播组件。它基于Swiper,因此我们必须将其与软件包一起安装:

npm install swiper vue-awesome-swiper --save

然后我们可以通过编写以下代码来使用它:

//app.js

import Vue from "vue";
import App from "./App.vue";
import VueAwesomeSwiper from "vue-awesome-swiper";
import "swiper/css/swiper.css";

Vue.use(VueAwesomeSwiper);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");
//App.vue

<template>
  <div id="app">
    <swiper ref="mySwiper" :options="swiperOptions">
      <swiper-slide v-for="(i, index) in list" :key="index">
        <img :src="i">
      </swiper-slide>
      <div class="swiper-pagination" slot="pagination"></div>
    </swiper>
  </div>
</template>

<script>export default {
  data() {
    return {
      list: Array(5)
        .fill()
        .map((_, i) => `http://lorempixel.com/400/200/sports/${i}/`),
      swiperOptions: {
        pagination: {
          el: ".swiper-pagination"
        }
      }
    };
  }
};</script>

在这里,我们使用带有某些选项的 swiper 组件。swiper-slide 组件可容纳幻灯片,因此我们将图像放入其中。我们还将swiperOptions 传递给 options 属性。

我们使用 pagination 槽填充内容,并为分页设置一个类,以便可以对其进行样式设置。

我们也可以通过编程方式转到幻灯片。这就是为什么我们将 ref 分配给滑块的原因之一——移至所需的幻灯片。例如,我们可以这样写:

//App.js

<template>
  <div id="app">
    <swiper ref="mySwiper" :options="swiperOptions">
      <swiper-slide v-for="(i, index) in list" :key="index">
        <img :src="i">
      </swiper-slide>
      <div class="swiper-pagination" slot="pagination"></div>
    </swiper>
  </div>
</template>

<script>export default {
  data() {
    return {
      list: Array(5)
        .fill()
        .map((_, i) => `http://lorempixel.com/400/200/sports/${i}/`),
      swiperOptions: {
        pagination: {
          el: ".swiper-pagination"
        }
      }
    };
  },
  computed: {
    swiper() {
      return this.$refs.mySwiper.$swiper;
    }
  },
  mounted() {
    this.swiper.slideTo(2, 1000, false);
  }
};</script>

我们使用分配给滑块的mySwiper ref创建了一个计算属性,然后调用 slideTo 方法来改变为具有给定索引的幻灯片。索引在第一个参数中,第二个参数是延迟,第三个参数指示我们是否要运行回调。如果将其设置为 true,它将在切换期间发出事件。

像vue-easy-slider一样,该轮播库也具有动画效果。

Slick for Vue.js

地址:https://github.com/staskjs/vue-slick

Slick for Vue.js[3]库为我们提供了另一个滑块。jQuery是一个依赖项,因此我们也必须安装它。要安装依赖项,请运行:

npm install jquery vue-slick --save

接下来,我们可以通过编写以下代码来使用它:

//main.js

import Vue from "vue";
import App from "./App.vue";
import "slick-carousel/slick/slick.css";

Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");
//App.vue
//App.vue

<template>
  <slick ref="slick" :options="slickOptions">
    <div v-for="(i, index) in list" :key="index">
      <img :src="i">
    </div>
  </slick>
</template>

<script>import Slick from "vue-slick";

export default {
  components: { Slick },
  data() {
    return {
      slickOptions: {
        slidesToShow: 1
      },
      list: Array(5)
        .fill()
        .map((_, i) => `http://lorempixel.com/400/200/sports/${i}/`)
    };
  },
  methods: {}
};</script>

我们在 main.js 中注册插件并导入CSS,然后使用 slick 组件来创建我们的轮播图。我们传入我们的 slickOptions 对象,并将slidesToShow 属性设置为 1 ,只显示一张幻灯片。幻灯片是通过使用 v-for 来渲染图片来创建的。

它发出许多事件:

  • 我们可以监听 afterChange 事件,该事件在幻灯片切换后发出
  • 在幻灯片切换之前发出 beforeChange
  • 卸载滑块时会发出 destroy
  • 执行滑动动作时会触发 swipe
  • 还有很多

我们也可以调用 this.$refs.slick.reSlick(); 来更新我们的幻灯片,如果我们改变了图片列表,就使用最新的图片。

vue-flickity

地址:https://github.com/drewjbartlett/vue-flickity

接下来是vue-flickity[4],它为我们提供了许多自定义选项。要安装它,我们可以运行:

npm install vue-flickity --save

让我们来看看如何使用它:

//App.vue

<template>
  <div>
    <flickity ref="flickity" :options="flickityOptions">
     <div class="carousel-cell" v-for="(i, index) in list" :key="index">
      <img :src="i">
    </div>
    </flickity>

    <button @click="previous()">Previous</button>
    <button @click="next()">Next</button>
  </div>
</template>

<script>import Flickity from "vue-flickity";

export default {
  components: { Flickity},
  data() {
    return {
      flickityOptions: {
        initialIndex: 3,
        prevNextButtons: false,
        pageDots: false,
        wrapAround: true
      },
      list: Array(5)
        .fill()
        .map((_, i) => `http://lorempixel.com/400/200/sports/${i}/`)
    };
  },
  methods: {
    next() {
      this.$refs.flickity.next();
    },

    previous() {
      this.$refs.flickity.previous();
    }
  }
};</script>

我们使用 flickity 组件添加滑块,并且可以通过 options 属性对其进行自定义。我们使用它通过 initialIndex 属性设置初始幻灯片。

prevNextButton 可以让我们显示或隐藏内置的导航按钮,我们可以选择是否要用 pageDots 来显示导航点,wrapAround 表示当我们到达轮播图的结束或开始时,分别回到第一张或最后一张幻灯片。

我们还为导航添加了一些自定义的按钮,我们创建了一个用于导航到上一张幻灯片的按钮和一个用于导航到下一张幻灯片的按钮。ref获取ref,让我们分别调用下一张或上一张方法来移动到下一张或上一张幻灯片。

我们可以使用CSS设置轮播和幻灯片的样式。它将轮播添加到 carousel-cell 类中,以便我们对其进行样式设置。内置的导航按钮和圆点也有它们的类,这意味着我们可以轻松地设置样式。


Vue Carousel 3D

地址:https://github.com/wlada/vue-carousel-3d

Vue Carousel 3D[5]是一个有趣的滑块。它以3D幻灯片而不是2D形式显示幻灯片。当我们浏览幻灯片时,正在显示的幻灯片是在其他幻灯片的前面创建的,并且当我们翻转幻灯片时,它会显示旋转效果。

要安装它,我们运行:

npm install -S vue-carousel-3d

要使用它,我们写:

//main.js

import Vue from "vue";
import App from "./App.vue";
import Carousel3d from "vue-carousel-3d";

Vue.use(Carousel3d);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");
//App.vue

<template>
  <div>
    <carousel-3d>
      <slide v-for="(i, index) in list" :key="index" :index="index">
        <img :src="i">
      </slide>
    </carousel-3d>
  </div>
</template>

<script>export default {
  data() {
    return {
      list: Array(5)
        .fill()
        .map((_, i) => `http://lorempixel.com/400/200/sports/${i}/`)
    };
  }
};</script>

我们使用 carousel-3d 组件添加轮播,然后使用 slide 组件添加幻灯片。我们传入索引,以便正确放置幻灯片。内置3D样式。

除此之外,它还有一些自定义选项。我们可以:

  • 使用 autoplay prop启用或禁用自动播放
  • 更改偏差,即当幻灯片数量为偶数时,偏差更大
  • 设置轮播无限循环
  • 调整宽度和高度
  • 自定义滑动距离并控制宽度和高度

总结

大多数库都非常相似,而Vue Carousel 3D无疑是最独特的。其他都是二维的,具有类似的自定义选项。

它们的性能相似,并且都很容易使用。它们都可以在触摸屏上使用,并且都具有动画效果。

Slick for Vue.js会发出很多事件,因此,如果我们需要在幻灯片更改或类似情况发生时做一些事情,那我们就应该选择该库。如果我们希望每页显示多张幻灯片,则Slick for Vue.js也很有用。

代理通常与另一个称为Reflect的元编程功能一起使用。

推荐Vue学习资料文章:

一文带你搞懂vue/react应用中实现ssr(服务端渲染)

Vue+CSS3 实现图片滑块效果

教你Vue3 Compiler 优化细节,如何手写高性能渲染函数(上)

教你Vue3 Compiler 优化细节,如何手写高性能渲染函数(下)

vue实现一个6个输入框的验证码输入组件

一用惊人的Vue实践技巧「值得推荐」

Vue常见的面试知识点汇总(上)「附答案」

Vue常见的面试知识点汇总(下)「附答案」

Kbone原理详解与小程序技术选型

为什么我不再用Vue,改用React?

让Jenkins自动部署你的Vue项目「实践」

20个免费的设计资源 UI套件背景图标CSS框架

Deno将停止使用TypeScript,并公布五项具体理由

前端骨架屏都是如何生成的

Vue原来可以这样写开发效率杠杠的

用vue简单写一个音乐播放组件「附源码」

为什么Vue3.0不再使用defineProperty实现数据监听?

「干货」学会这些Vue小技巧,可以早点下班和女神约会

探索 Vue-Multiselect

细品30张脑图带你从零开始学Vue

Vue后台项目中遇到的技术难点以及解决方案

手把手教你Electron + Vue实战教程(五)

手把手教你Electron + Vue实战教程(四)

手把手教你Electron + Vue实战教程(三)

手把手教你Electron + Vue实战教程(二)

手把手教你Electron + Vue实战教程(一)

收集22种开源Vue模板和主题框架「干货」

如何写出优秀后台管理系统?11个经典模版拿去不谢「干货」

手把手教你实现一个Vue自定义指令懒加载

基于 Vue 和高德地图实现地图组件「实践」

一个由 Vue 作者尤雨溪开发的 web 开发工具—vite

是什么让我爱上了Vue.js

1.1万字深入细品Vue3.0源码响应式系统笔记「上」

1.1万字深入细品Vue3.0源码响应式系统笔记「下」

「实践」Vue 数据更新7 种情况汇总及延伸解决总结

尤大大细说Vue3 的诞生之路「译」

提高10倍打包速度工具Snowpack 2.0正式发布,再也不需要打包器

大厂Code Review总结Vue开发规范经验「值得学习」

Vue3 插件开发详解尝鲜版「值得收藏」

带你五步学会Vue SSR

记一次Vue3.0技术干货分享会

Vue 3.x 如何有惊无险地快速入门「进阶篇」

「干货」微信支付前后端流程整理(Vue+Node)

带你了解 vue-next(Vue 3.0)之 炉火纯青「实践」

「干货」Vue+高德地图实现页面点击绘制多边形及多边形切割拆分

「干货」Vue+Element前端导入导出Excel

「实践」Deno bytes 模块全解析

细品pdf.js实践解决含水印、电子签章问题「Vue篇」

基于vue + element的后台管理系统解决方案

Vue仿蘑菇街商城项目(vue+koa+mongodb)

基于 electron-vue 开发的音乐播放器「实践」

「实践」Vue项目中标配编辑器插件Vue-Quill-Editor

基于 Vue 技术栈的微前端方案实践

消息队列助你成为高薪 Node.js 工程师

Node.js 中的 stream 模块详解

「干货」Deno TCP Echo Server 是怎么运行的?

「干货」了不起的 Deno 实战教程

「干货」通俗易懂的Deno 入门教程

Deno 正式发布,彻底弄明白和 node 的区别

「实践」基于Apify+node+react/vue搭建一个有点意思的爬虫平台

「实践」深入对比 Vue 3.0 Composition API 和 React Hooks

前端网红框架的插件机制全梳理(axios、koa、redux、vuex)

深入Vue 必学高阶组件 HOC「进阶篇」

深入学习Vue的data、computed、watch来实现最精简响应式系统

10个实例小练习,快速入门熟练 Vue3 核心新特性(一)

10个实例小练习,快速入门熟练 Vue3 核心新特性(二)

教你部署搭建一个Vue-cli4+Webpack移动端框架「实践」

2020前端就业Vue框架篇「实践」

详解Vue3中 router 带来了哪些变化?

Vue项目部署及性能优化指导篇「实践」

Vue高性能渲染大数据Tree组件「实践」

尤大大细品VuePress搭建技术网站与个人博客「实践」

10个Vue开发技巧「实践」

是什么导致尤大大选择放弃Webpack?【vite 原理解析】

带你了解 vue-next(Vue 3.0)之 小试牛刀【实践】

带你了解 vue-next(Vue 3.0)之 初入茅庐【实践】

实践Vue 3.0做JSX(TSX)风格的组件开发

一篇文章教你并列比较React.js和Vue.js的语法【实践】

手拉手带你开启Vue3世界的鬼斧神工【实践】

深入浅出通过vue-cli3构建一个SSR应用程序【实践】

怎样为你的 Vue.js 单页应用提速

聊聊昨晚尤雨溪现场针对Vue3.0 Beta版本新特性知识点汇总

【新消息】Vue 3.0 Beta 版本发布,你还学的动么?

Vue真是太好了 壹万多字的Vue知识点 超详细!

Vue + Koa从零打造一个H5页面可视化编辑器——Quark-h5

深入浅出Vue3 跟着尤雨溪学 TypeScript 之 Ref 【实践】

手把手教你深入浅出vue-cli3升级vue-cli4的方法

Vue 3.0 Beta 和React 开发者分别杠上了

手把手教你用vue drag chart 实现一个可以拖动 / 缩放的图表组件

Vue3 尝鲜

总结Vue组件的通信

Vue 开源项目 TOP45

2020 年,Vue 受欢迎程度是否会超过 React?

尤雨溪:Vue 3.0的设计原则

使用vue实现HTML页面生成图片

实现全栈收银系统(Node+Vue)(上)

实现全栈收银系统(Node+Vue)(下)

vue引入原生高德地图

Vue合理配置WebSocket并实现群聊

多年vue项目实战经验汇总

vue之将echart封装为组件

基于 Vue 的两层吸顶踩坑总结

Vue插件总结【前端开发必备】

Vue 开发必须知道的 36 个技巧【近1W字】

构建大型 Vue.js 项目的10条建议

深入理解vue中的slot与slot-scope

手把手教你Vue解析pdf(base64)转图片【实践】

使用vue+node搭建前端异常监控系统

推荐 8 个漂亮的 vue.js 进度条组件

基于Vue实现拖拽升级(九宫格拖拽)

手摸手,带你用vue撸后台 系列二(登录权限篇)

手摸手,带你用vue撸后台 系列三(实战篇)

前端框架用vue还是react?清晰对比两者差异

Vue组件间通信几种方式,你用哪种?【实践】

浅析 React / Vue 跨端渲染原理与实现

10个Vue开发技巧助力成为更好的工程师

手把手教你Vue之父子组件间通信实践讲解【props、$ref 、$emit】

1W字长文+多图,带你了解vue的双向数据绑定源码实现

深入浅出Vue3 的响应式和以前的区别到底在哪里?【实践】

干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)

基于Vue/VueRouter/Vuex/Axios登录路由和接口级拦截原理与实现

手把手教你D3.js 实现数据可视化极速上手到Vue应用

吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【上】

吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【中】

吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【下】

Vue3.0权限管理实现流程【实践】

后台管理系统,前端Vue根据角色动态设置菜单栏和路由

作者:John Au-Yeung

转发链接:https://blog.logrocket.com/top-picks-vue-js-carousel-libraries/

译者:Echa攻城狮

Tags:

最近发表
标签列表