欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue利用vant組件實現(xiàn)輪播圖效果

 更新時間:2023年10月07日 09:07:31   作者:Saga?Two  
vant組件適用于移動端項目,目前項目開源,是市面上做的比較好的開源項目,功能比較強大,本文小編就來為大家介紹一下如何利用vant實現(xiàn)輪播圖效果吧

1.引言

在互聯(lián)網(wǎng)日漸內(nèi)卷的情況下,越來越注重用戶體驗,輪播圖的應(yīng)用場景越來越 廣泛,如應(yīng)用于以下場景

  • 商品詳情頁 。在商品詳情頁中展示足夠的商品信息,可以將輪播圖比作一個團(tuán)隊,每個團(tuán)隊成員都有自己的工作,例如首圖負(fù)責(zé)吸引流量,其余的負(fù)責(zé)商品的賣點、促銷信息、購物保障等等。
  • 商品賣點展示 。在輪播圖中靠前位置展示買家最看重的商品賣點,可以減少買家的購買決策時長。例如,如果商品在做促銷活動或者小贈品時,就可以把活動或者禮品圖放在靠前的輪播圖上。
  • 首頁重點場景突出。如重點產(chǎn)品、常用功能入口,熱門活動等場景。

同時,市場上的輪播圖組件功能也越來越成熟,以下我們就介紹目前常見的實現(xiàn)輪播圖的方式。實現(xiàn)效果如下:

vant示例:

自實現(xiàn):

2.vue實現(xiàn)輪播圖

2.1 Vant組件引入

vant組件適用于移動端項目,目前項目開源,是市面上做的比較好的開源項目,功能比較強大,我們先介紹vant實現(xiàn)輪播圖效果。對于pc端實現(xiàn)輪播圖,市場上也有成熟的組件,如Swipe。

2.1.1 vant組件引入

Vant組件安裝引入以及配置在前面我們已經(jīng)做過介紹,請產(chǎn)找以往鏈接:

2.2.2 使用van-swipe組件

van-swipe組件和van-swipe-item組件配合使用,原始代碼如下:

        <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white" @change="onChange">
            <van-swipe-item>vant-swipe</van-swipe-item>
            <van-swipe-item class="dif">2</van-swipe-item>
            <van-swipe-item>3</van-swipe-item>
            <van-swipe-item>4</van-swipe-item>
        </van-swipe>

可實現(xiàn)如下動畫效果:

若是想進(jìn)行圖片輪播,vant組件還提供了懶加載選項,以解決圖片加載過慢卡頓問題,代碼如下:

<van-swipe :autoplay="3000" lazy-render>
  <van-swipe-item v-for="image in images" :key="image">
    <img :src="image" />
  </van-swipe-item>
</van-swipe>

其次,除了以上功能以外,還可以進(jìn)行自定義滑塊大小和改變輪播方向等操作,這里不做一一介紹,詳情請見官網(wǎng):

vue3中vant輪播圖使用。

2.2 vue代碼實現(xiàn)

“魚”和”漁“相差還是比較大的,除了借助市場組件以外,還可以自己按照需求開發(fā)輪播圖,以下我們詳細(xì)介紹一下自己實現(xiàn)輪播圖的思路與實現(xiàn)步驟,最后附上我們實現(xiàn)的代碼以供參考。

2.2.1 功能需求

  • 實現(xiàn)圖片輪播;
  • 輪播圖切換流暢;
  • 可自動輪播和手動觸發(fā)。

2.2.2 實現(xiàn)思路

  • 將需要輪播的圖片進(jìn)行排列;
  • 添加手動切換按鈕。
  • 圖片切換之間添加動畫效果;
  • 添加切換邏輯,將排列好的圖片進(jìn)行切換;

2.2.3 代碼實現(xiàn)

實現(xiàn)思路代碼以及相關(guān)注釋如下:

<template>
  <div class="carousel">
    <div @click="prevSlide" class="carousel-prev-icon-left"></div>
    <div class="carousel-slides">
      <img
        v-for="(image, index) in images"
        :key="index"
        :src="image"
        :style="{left: index * 100 + '%', 'transform': dynamicstyle}"
        alt="暫無圖片"
      />
    </div>
    <div @click="nextSlide" class="carousel-prev-icon-right"></div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      images: [
        '/src/assets/img/sakuraTree01.jpeg',
        '/src/assets/img/starrySky.jpg',
        '/src/assets/img/starrySky02.jpg'
        // ... 更多圖片
      ],
      dynamicstyle: "", //動態(tài)樣式
      currentSlide: 0, //播放序號
      interval: Object,
    }
  },
  mounted() {
    // 自動播放動畫
    this.startSlideshow()
  },
  methods: {
    nextSlide() {
      // 每次指針加一
      this.currentSlide = (this.currentSlide + 1) % this.images.length
      this.setStyle();
    },
    prevSlide() {
      // 每次減一,為負(fù)數(shù)時循環(huán)
      this.currentSlide = (this.currentSlide - 1 + this.images.length) % this.images.length;
      this.setStyle();
    },
    // 圖片動畫
    setStyle() {
      this.dynamicstyle = `translatex(-${this.currentSlide*100}%)`
    },
    // 定時器
    startSlideshow() {
      this.interval = setInterval(() => {
        this.currentSlide = (this.currentSlide + 1) % this.images.length;
        this.setStyle();
      }, 3000)
    },
    stopSlideshow() {
      clearInterval(this.interval)
    }
  }
}
</script>
<style scoped>
.carousel {
  position: relative;
}
.carousel-slides {
  position: relative;
  width: 320px;
  height: 173px;
  overflow: hidden;
}
.carousel-slides img {
  display: inline-block;
  position: absolute;
  width: inherit;
  margin: 0;
  padding: 0;
  top: 0;
  left: 0;
  height: 100%;
  transition: 0.5s transform ease-in-out;
}
.carousel-controls {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  justify-content: center;
}
.carousel-prev-icon-left {
  position: absolute;
  left: 10px;
  top: 55px;
  height: 50px;
  width: 40px;
  border: none;
  background-image: url(../../../assets/img/arrow-l.png);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  z-index: 999;
}
.carousel-prev-icon-right {
  position: absolute;
  right: 10px;
  top: 55px;
  height: 50px;
  width: 40px;
  border: none;
  background-image: url('../../../assets/img/arrow-r.png/');
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  z-index: 999;
}
</style>

以上代碼樣式部分還可以進(jìn)行精簡,僅供學(xué)習(xí)參考,商業(yè)項目需要進(jìn)行調(diào)試修改,思路可供參考。

需要注意以下幾點:

  • 圖片需要使用絕對定位;
  • 動態(tài)樣式的使用比較靈活;
  • 使用動畫平移要注意平移單位;

2.2.4 實現(xiàn)效果

實現(xiàn)效果動圖如下:

3.總結(jié)

實現(xiàn)輪播圖的方式方法比較多,但用戶體驗比較好的不多,查了市面上實現(xiàn)較好的就是使用動畫進(jìn)行位置切換,有限推薦使用市面上比較成熟的組件,如果商業(yè)化的話,建議還是自己寫,避免版權(quán)糾紛。

以上就是vue利用vant組件實現(xiàn)輪播圖效果的詳細(xì)內(nèi)容,更多關(guān)于vue vant輪播圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue項目接口域名動態(tài)獲取操作

    vue項目接口域名動態(tài)獲取操作

    這篇文章主要介紹了vue項目接口域名動態(tài)獲取操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue長列表優(yōu)化之虛擬列表實現(xiàn)過程詳解

    vue長列表優(yōu)化之虛擬列表實現(xiàn)過程詳解

    前端的業(yè)務(wù)開發(fā)中會遇到不使用分頁方式來加載長列表的需求,下面這篇文章主要給大家介紹了關(guān)于vue長列表優(yōu)化之虛擬列表實現(xiàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • vue中使用v-if,v-else來設(shè)置css樣式的步驟

    vue中使用v-if,v-else來設(shè)置css樣式的步驟

    我們在使用vue項目開發(fā)時,v-if是使用的非常多的,在這里我們談?wù)勅绾问褂胿-i來綁定修改css樣式,使用的主要是雙向數(shù)據(jù)綁定,即通過改變他的狀態(tài)來改變他的樣式,這篇文章主要介紹了vue中如何使用v-if,v-else來設(shè)置css樣式,需要的朋友可以參考下
    2023-03-03
  • Vue3學(xué)習(xí)之事件處理詳解

    Vue3學(xué)習(xí)之事件處理詳解

    Vue事件處理是每個Vue項目的必要方面。 它用于捕獲用戶輸入,共享數(shù)據(jù)以及許多其他創(chuàng)造性方式。本文將通過簡單的示例為大家講解了Vue3中事件處理的使用,需要的可以參考一下
    2022-12-12
  • Vue3的7種種組件通信詳情

    Vue3的7種種組件通信詳情

    Vue3兼容大部分Vue2的特性,用Vue2代碼開發(fā)Vue3都可以,性能上面打包大小減少 41%,初次渲染快 55%,更新快 133%,內(nèi)存使用減少 54%,本篇文章主要介紹Vue3的7種種組件通信,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Vue.js中使用道具方法demo

    Vue.js中使用道具方法demo

    這篇文章主要為大家介紹了Vue.js中使用道具方法demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Vite開發(fā)環(huán)境搭建詳解

    Vite開發(fā)環(huán)境搭建詳解

    Vite是一款非常輕量級的Web開發(fā)框架,它可以幫助開發(fā)者快速搭建一個開發(fā)環(huán)境。Vite搭建的開發(fā)環(huán)境可以提供更快的編譯速度,更少的配置,更好的性能和更多的開發(fā)者友好性,使開發(fā)者可以更快地構(gòu)建出功能強大的Web應(yīng)用程序。
    2023-02-02
  • 基于Vue3實現(xiàn)一個簡單的方位動畫

    基于Vue3實現(xiàn)一個簡單的方位動畫

    這篇文章主要為大家詳細(xì)介紹了如何基于Vue3實現(xiàn)一個簡單的方位動畫,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • vue-cli腳手架的.babelrc文件用法說明

    vue-cli腳手架的.babelrc文件用法說明

    這篇文章主要介紹了vue-cli腳手架的.babelrc文件用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 通過fastclick源碼分析徹底解決tap“點透”

    通過fastclick源碼分析徹底解決tap“點透”

    這篇文章主要介紹了通過fastclick源碼分析徹底解決tap“點透”問題的知識內(nèi)容,有興趣的朋友學(xué)習(xí)一下吧。
    2017-12-12

最新評論