首頁 > 軟體

vue實現3D切換捲動效果

2022-04-10 19:00:25

本文範例為大家分享了vue實現3D切換捲動效果的具體程式碼,供大家參考,具體內容如下

今天寫專案,遇到一個點選切換的捲動需求,貼出來,做一個記錄

這個是最終的一個效果,點選左右小箭頭,實現捲動效果,但是隻是簡單捲動,沒有動畫之類的

實現思路:

  • css中,正常寫一個divdisplay:flex來平鋪圖片
  • 然後中間位置定位一個框,框大小比外面的大,中間圖片隨意取列表中的一個就行
  • js中,使用v-for迴圈列表
  • 點選右側時,將回圈列表中的第一個圖片刪除,然後新增到列表最後一個,點選左側時同理,這樣,就能簡單實現一個無縫迴圈的效果了
  • 最重要的一點,因為中間時梯形,要麼就是讓UI給一個框,前端設定超出隱藏屬性,達到梯形效果,要麼就是自己用polygon這個css屬性調出一個多邊形出來

貼一下程式碼,看看

// html
// <!-- 捲動 -->
    <div class="rolling">
      <div class="rolling-container">
        <div
          class="rolling-wraper"
          v-for="(v, i) in imgList"
          :key="i"
          @click="handleImg(v)"
        >
          <img
            :src="require(`@/assets/images/home/company/${v.img}.jpg`)"
            class="img"
          />
        </div>
        <!-- 左側漸變陰影 -->
        <div class="gradient-left"></div>
        <div class="rolling-shadow"></div>
        <!-- 右側漸變陰影 -->
        <div class="gradient-right"></div>
      </div>
      <!-- 中間放大層 -->
      <div class="photo-bg"></div>
      <img
        :src="
          require(`@/assets/images/home/company/${this.imgList[1].img}.jpg`)
        "
        class="img-large"
      />
      <img
        :src="require(`@/assets/images/home/company/photo-bg.png`)"
        class="trapezoidal"
      />
      <!-- 底部切換 -->
      <div class="top-botton">
        <div class="btn-left" @click="previous"></div>
        <div class="center-text">{{ this.imgList[1].text }}</div>
        <div class="btn-right" @click="next"></div>
   </div>
</div>
// js
data () {
    return {
        imgList: [
            {
              img: 'activity-01',
              text: '2020年職稱宣傳活動',
            },
            {
              img: 'activity-02',
              text: '2020年職稱宣傳活動1',
            },
            {
              img: 'activity-03',
              text: '2020年職稱宣傳活動2',
            },
          ],
    }
}

methdos: {
    // 點選左側
    previous() {
      const direction = 'left';
      this.scrollImg(direction);
    },
    // 點選右側
    next() {
      const direction = 'right';
      this.scrollImg(direction);
    },

    // 處理捲動列表圖片
    scrollImg(direction) {
      if (direction === 'left') {
        const first = this.imgList.shift();
        this.imgList.push(first);
      } else {
        const last = this.imgList.pop();
        this.imgList.unshift(last);
      }
      console.log();
    },
}
// css重點程式碼
// 繪製多邊形
// 這幾個屬性為逆時針旋轉
 clip-path: polygon(4% 4%, 1% 90%, 95% 90%, 92% 4%);

具體就根據設計稿慢慢調整

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com