最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue滾動(dòng)軸插件better-scroll使用詳解

 更新時(shí)間:2017年10月17日 09:14:02   作者:昔有木如蓋  
這篇文章主要為大家詳細(xì)介紹了vue滾動(dòng)軸插件better-scroll的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

跟做慕課網(wǎng)的vue高仿外賣(mài)項(xiàng)目中用到了一個(gè)很好用的插件BScroll,用來(lái)計(jì)算左側(cè)menu欄對(duì)應(yīng)右側(cè)foods欄相應(yīng)顯示的食物區(qū),如果不用插件就比較費(fèi)事了,因此這里分享一下這個(gè)插件的簡(jiǎn)單使用:

一、項(xiàng)目中下載,并引入

在配置文件package.json中引入版本

"dependencies": {
 "better-scroll": "^0.1.7"
 }

然后進(jìn)入項(xiàng)目目錄,打開(kāi)cmd更新配置

npm i (i是install縮寫(xiě))

最后引入,比如我在項(xiàng)目goods組件中使用則:

import BScroll from 'better-scroll';

二、舉個(gè)栗子

需求是處于當(dāng)前比如熱銷(xiāo)榜欄目,則菜單欄高亮。滾動(dòng)到下一欄高亮欄目則下一欄菜單高亮。點(diǎn)擊菜單中某一欄菜單該欄目高亮并且跳轉(zhuǎn)到對(duì)應(yīng)食物區(qū)。

下面是foods組件中的代碼

template:

<template>
 <div class="goods">
 <div class="menu-wrap" ref="menuWrap">//菜單欄
  <ul>
  <li v-for="(item,index) in goods" class="menu-item" :class="{'current':currentIndex===index}" @click="selectMenu(index,$event)">
   <span class="text border-1px">
   <span v-show="item.type>0" class="icon" :class="classMap[item.type]"></span>{{item.name}}
   </span>
  </li>
  </ul>
 </div>
 <div class="foods-wrap" ref="foodsWrap">//食物欄
 </div>
 </div>
</template>

script

<script type="text/ecmascript-6">
 import Vue from 'vue';
 import BScroll from 'better-scroll';
 import shopcart from '@/components/shopcart/shopcart';
 export default {
 props: {//接收父組件傳的數(shù)據(jù)
  seller: {
  type: Object
  }
 },
 data () {
  return {
  goods: [],
  listHeight: [],//菜單中一個(gè)菜單欄目的高度
  scrollY: 0//定義的Y滾動(dòng)軸及初始值
  };
 },
 computed: {//計(jì)算屬性
  currentIndex () {//當(dāng)前菜單欄在整個(gè)菜單中的下標(biāo)index
  for (let i = 0; i < this.listHeight.length; i++) {//遍歷菜單中每個(gè)欄目的高度
   let height1 = this.listHeight[i];//第i個(gè)欄目的高度
   let height2 = this.listHeight[i + 1];//第i+1個(gè)欄目的高度
   if (!height2 || (this.scrollY >= height1 && this.scrollY < height2)) {//根據(jù)當(dāng)前滾動(dòng)軸的位置得出index(如果第二個(gè)欄目不存在即第一個(gè)欄目是最后一個(gè))或者(當(dāng)前欄目高度大于等于第一個(gè)并且當(dāng)前滾動(dòng)軸小于第二個(gè)欄目高度)
   return i;//如果滿足則返回index
   }
  }
  return 0;//初始值0
  }
 },
 created () {
  Vue.prototype.$http.get('/api/goods')
  .then(res => {
   this.goods = res.data.data;
   this.$nextTick(() => {//
   this._initScroll();
   this._calculateHeight();
   });
  });
  this.classMap = ['decrease', 'discount', 'special', 'invoice', 'guarantee'];
 },
 methods: {
  selectMenu (index, event) {
  if (!event._constructed) {
   return;
  }
  let foodList = this.$refs.foodsWrap.getElementsByClassName('food-list-hook');
  let el = foodList[index];
  this.foodsScroll.scrollToElement(el, 300);
  },
  _initScroll () {
  this.menuScroll = new BScroll(this.$refs.menuWrap, {
   click: true
  });
  this.foodsScroll = new BScroll(this.$refs.foodsWrap, {probeType: 3
  });
  this.foodsScroll.on('scroll', (pos) => {
   this.scrollY = Math.abs(Math.round(pos.y));
   console.log(this.scrollY);
  });
  },
  _calculateHeight () {
  let foodList = this.$refs.foodsWrap.getElementsByClassName('food-list-hook');
  let height = 0;
  this.listHeight.push(height);
  for (let i = 0; i < foodList.length; i++) {
   let item = foodList[i];
   height += item.clientHeight;
   this.listHeight.push(height);
  }
  }
 }
 };
</script>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue使用Three.js加載glTF模型的方法詳解

    Vue使用Three.js加載glTF模型的方法詳解

    這篇文章主要給大家介紹了關(guān)于Vue使用Three.js加載glTF模型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Vue+Openlayer中使用select選擇要素的實(shí)現(xiàn)代碼

    Vue+Openlayer中使用select選擇要素的實(shí)現(xiàn)代碼

    本文通過(guò)實(shí)例代碼給大家介紹Vue+Openlayer中使用select選擇要素,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-08-08
  • Vue實(shí)現(xiàn)當(dāng)訪問(wèn)的路由不存在時(shí)跳轉(zhuǎn)到404頁(yè)面的方法詳解

    Vue實(shí)現(xiàn)當(dāng)訪問(wèn)的路由不存在時(shí)跳轉(zhuǎn)到404頁(yè)面的方法詳解

    在 Vue3 中,可以使用 Vue Router 實(shí)現(xiàn)跳轉(zhuǎn)到 404 頁(yè)面,即當(dāng)用戶訪問(wèn)一個(gè)不存在路由時(shí),系統(tǒng)會(huì)默認(rèn)跳轉(zhuǎn)到 404 頁(yè)面,本文給大家介紹了一個(gè)簡(jiǎn)單的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-12-12
  • Vue中sync修飾符分析原理及用法示例

    Vue中sync修飾符分析原理及用法示例

    在vue中,子組件如果想修改父組件的變量,一般做法是通過(guò)綁定事件的方法,父組件向子組件傳遞修改變量的方法,子組件觸發(fā)修改變量的方法執(zhí)行,這種方式中規(guī)中矩;另一種方法是使用sync修飾符,此方法可以減少很多代碼量
    2022-08-08
  • 詳解Vue3-pinia狀態(tài)管理

    詳解Vue3-pinia狀態(tài)管理

    這篇文章主要介紹了Vue3-pinia狀態(tài)管理,pinia是?vue3?新的狀態(tài)管理工具,簡(jiǎn)單來(lái)說(shuō)相當(dāng)于之前?vuex,它去掉了?Mutations?但是也是支持?vue2?的,需要的朋友可以參考下
    2022-08-08
  • vue3使用reactive賦值后頁(yè)面不改變

    vue3使用reactive賦值后頁(yè)面不改變

    本文主要介紹了vue3使用reactive賦值后頁(yè)面不改變,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 基于axios請(qǐng)求封裝的vue應(yīng)用實(shí)例代碼

    基于axios請(qǐng)求封裝的vue應(yīng)用實(shí)例代碼

    這篇文章主要給大家介紹了基于axios請(qǐng)求封裝的vue應(yīng)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 詳解Vue如何使用xlsx庫(kù)導(dǎo)出Excel文件

    詳解Vue如何使用xlsx庫(kù)導(dǎo)出Excel文件

    第三方庫(kù)xlsx提供了強(qiáng)大的功能來(lái)處理Excel文件,它可以簡(jiǎn)化導(dǎo)出Excel文件這個(gè)過(guò)程,本文將為大家詳細(xì)介紹一下它的具體使用,需要的小伙伴可以了解下
    2025-01-01
  • ssm+vue前后端分離框架整合實(shí)現(xiàn)(附源碼)

    ssm+vue前后端分離框架整合實(shí)現(xiàn)(附源碼)

    這篇文章主要介紹了ssm+vue前后端分離框架整合實(shí)現(xiàn)(附源碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue 移動(dòng)端注入骨架屏的配置方法

    vue 移動(dòng)端注入骨架屏的配置方法

    骨架屏就是在頁(yè)面未渲染完成的時(shí)候,先用一些簡(jiǎn)單的圖形大致勾勒出頁(yè)面的基本輪廓,給用戶帶來(lái)更好的體驗(yàn)。這篇文章主要介紹了vue 移動(dòng)端注入骨架屏,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

宁乡县| 定陶县| 孝昌县| 兴海县| 牙克石市| 江口县| 巴彦淖尔市| 长武县| 肥乡县| 金秀| 皮山县| 会理县| 江口县| 耒阳市| 宣城市| 集安市| 海原县| 兴宁市| 龙口市| 慈溪市| 安塞县| 丹棱县| 宜阳县| 藁城市| 延长县| 海宁市| 那曲县| 方城县| 武安市| 南阳市| 商洛市| 分宜县| 涿州市| 上饶县| 宜兰县| 桐柏县| 晋宁县| 永安市| 筠连县| 中宁县| 西城区|