中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在vue中使用better-scroll實現橫向滾動

發布時間:2021-06-02 16:11:22 來源:億速云 閱讀:552 作者:Leah 欄目:開發技術

本篇文章為大家展示了怎么在vue中使用better-scroll實現橫向滾動,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一、滾動的實現原理

better-scroll的滾動原理和瀏覽器原生滾動原理是一樣的,當子盒子的高度大于父盒子的高度,就會出現縱向滾動;同理,如果子盒子的寬度大于父盒子的寬度,那么就會出現橫向滾動。

二、better-scroll的 html 結構

先來看一下 better-scroll 常見的 html 結構:

<div class="wrapper">
  <ul class="content">
    <li>...</li>
    <li>...</li>
    ...
  </ul>
</div>

BetterScroll應用于外部wrapper容器,并且滾動部分是content。請注意,wrapper默認情況下,BetterScroll處理容器()的第一個子元素(內容)的滾動,這意味著其他元素將被忽略。

三、在Vue中使用better-scroll

npm install better-scroll --save  //npm 安裝
import BScroll from 'better-scroll'  //組件文件中引入better-scroll
<template>
   /* 橫向滾動 */
   /* 這里是父盒子*/
<div
        class="wrapper_box"
        style="min-height:100vh;
        "
        ref="wrapper"
        v-else
      >
      /* 這里是子盒子,即滾動區域*/
        <div class="content" ref="wrapperChild">
          <div
            v-for="(item, index) in currentImgList"
            :key="index"
            class="imgItem"
          >
            <img :src="item.img" class="img"  />
          </div>
        </div>
      </div>
</template>
<script>
 import BScroll from "better-scroll";
 export default {
  data() {
    return {
      currentImgList: [
        { img: require("../../assets/image/zzb_1.png") },
        { img: require("../../assets/image/zzb_2.png") },
        { img: require("../../assets/image/zzb_3.png") }
      ],
    };
  },
  mounted() {
    this.slide_x(); //橫向滾動
  },
  methods: {
     // 初始化
    _initScroll() {
      if (!this.scroll) {
        this.scroll = new BScroll(this.$refs.wrapper, { // 實例化BScroll接受兩個參數,第一個為父盒子的dom節點
          startX: 0, /// 配置的詳細信息請參考better-scroll的官方文檔,這里不再贅述
          click: true,
          scrollX: true,
          scrollY: false, // 忽略豎直方向的滾動
          eventPassthrough: "vertical",
          useTransition: false // 防止快速滑動觸發的異常回彈
        });
      } else {
        this.scroll.refresh(); //如果dom結構發生改變調用該方法重新計算來確保滾動效果的正常
      }
    },
    // 計算寬度
    _calculateWidth() {
      // 獲取類名為 imgItem 的標簽
      let rampageList = this.$refs.wrapperChild.getElementsByClassName(
        "imgItem"
      );
      // 設置一個起始寬度
      let initWidth = 0;
      // 遍歷標簽
      for (let i = 0; i < rampageList.length; i++) {
        const item = rampageList[i];
        // 將每一個標簽寬度相加
        initWidth += item.clientWidth;
      }
      // 設置可滾動的寬度
      this.$refs.wrapperChild.style.width = `${initWidth}px`;
    },
    slide_x() {
      this.$nextTick(() => { //this.$nextTick 是一個異步函數,為了確保 DOM 已經渲染完畢
        this._initScroll(); // 初始化
        this._calculateWidth(); // 計算寬度
      });
    },
    },
   

};
</script>

下面是插件原作者說的:

怎么在vue中使用better-scroll實現橫向滾動

四. 容易出現問題的點:

  1. 必須等到頁面DOM渲染完成再去執行BScroll的實例化,建議在mounted 鉤子函數里執行

  2. 子盒子的寬度大于父盒子的寬度

上述內容就是怎么在vue中使用better-scroll實現橫向滾動,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尚志市| 德令哈市| 淮南市| 宣化县| 梓潼县| 松原市| 武宣县| 琼结县| 吐鲁番市| 竹北市| 广南县| 仁怀市| 陇西县| 花垣县| 盘山县| 禄丰县| 齐河县| 四平市| 民丰县| 广东省| 深水埗区| 剑川县| 朔州市| 璧山县| 泰安市| 阳曲县| 慈利县| 聂拉木县| 高青县| 曲靖市| 繁昌县| 淮安市| 农安县| 静海县| 托克逊县| 大港区| 色达县| 大新县| 乌拉特后旗| 吉林市| 水富县|