国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Vue 無限滾動加載指令實現方法

2024-05-06 15:38:50
字體:
來源:轉載
供稿:網友

也不存在什么加載咯, 就是一個判斷滾動條是否到達瀏覽器底部了。 如果到了就觸發事件,米到就不處理。

計算公式提簡單的   底部等于(0) =  滾動條高度 - 滾動條頂部距離 - 可視高度。  反正結果就是0。

一、獲取滾動條位置

class Scroll {  static get top() {    return Math.max(document.documentElement.scrollTop || document.body.scrollTop);  }  static get clientHeight() {    return Math.max(document.documentElement.clientHeight || document.body.clientHeight);  }  static get clientWidth() {    return Math.max(document.documentElement.clientWidth || document.body.clientWidth);  }  static get height() {    return Math.max(document.documentElement.scrollHeight || document.body.scrollHeight);  }  static get width() {    return Math.max(document.documentElement.scrollWidth || document.body.scrollWidth);  }  static get bottom() {    return Scroll.height - Scroll.clientHeight - Scroll.top;  }}

二、給根節點綁定滾動事件

vue給body元素綁定滾動條事件,真TMD草蛋。事件綁定上去了 媽的 就是不觸發事件。不知道什么鬼問題。

最后直接給根節點HTML綁定滾動事件。

const on = (function () {  if (document.addEventListener) {    return function (element, event, handler) {      if (element && event && handler) {        element.addEventListener(event, handler, false);      }    };  } else {    return function (element, event, handler) {      if (element && event && handler) {        element.attachEvent('on' + event, handler);      }    };  }})();

三、注冊全局指令

/** * 降低事件執行頻率 */const downsampler = (function () {  let result = null;  return function (time, func) {    if (!result) {      result = setTimeout(function () {        func();        result = null;      }, time);    }  }})();Vue.directive("infinite-scroll", {  bind(el, binding, vnode) {    on(window, 'scroll', function () {      if (typeof binding.value === "function" && Scroll.bottom <= 50) {  // 小于50就觸發        downsampler(50, binding.value); // 降低觸發頻率      }    })  }});

四、實例:

<div class="app" v-infinite-scroll="coupon">    <template v-for="item in goods">      <p>{{item}}</p>   </template></div>    let v = new Vue({      el: ".app",      data(){        return {          goods:[]        }      },      methods: {        coupon() {          this.goods.push("你呵呵")        }      }    })

演示地址:http://whnba.gitee.io/tkspa/

總結

以上所述是小編給大家介紹的Vue 無限滾動加載指令實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對錯新站長站網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 突泉县| 栾城县| 北票市| 双辽市| 福建省| 珲春市| 航空| 灵山县| 山西省| 土默特右旗| 新丰县| 印江| 英吉沙县| 南昌县| 柳林县| 富蕴县| 昭觉县| 鹤壁市| 永济市| 正安县| 剑川县| 巴南区| 外汇| 枝江市| 勐海县| 寿阳县| 肥乡县| 庆元县| 资溪县| 讷河市| 长寿区| 辉南县| 宜君县| 商城县| 台南县| 大冶市| 扶沟县| 建湖县| 澄城县| 岳池县| 平原县|