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

vue實現(xiàn)滾動鼠標滾輪切換頁面

 更新時間:2020年12月13日 10:20:09   作者:Lccccb  
這篇文章主要為大家詳細介紹了vue實現(xiàn)滾動鼠標滾輪切換頁面,類似于縱向走馬燈,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue實現(xiàn)滾動鼠標滾輪切換頁面的具體代碼,供大家參考,具體內(nèi)容如下

新項目產(chǎn)品被甲方的要求逼瘋了,大概返稿了100+次吧,最后甲方網(wǎng)上找了個他們認為的比較有科技感的模板,讓我們照著寫,首頁就是類似于縱向走馬燈,鼠標滾動切換,一次切換一整屏的效果。之前沒接觸過,寫了個簡單的demo,僅作為學習筆記。

其實原理很簡單,就是把所有頁面放在一個div中,然后滾動的時候改變外層div的top即可。

因為滾動條監(jiān)聽事件是實時的,所以要加上節(jié)流來防止頁面切換太快速,我這控制在1.5s才能切換一頁。

其實vue不應(yīng)該操作dom,應(yīng)該用數(shù)據(jù)來渲染虛擬dom,但是有些地方暫時沒找到合適的方法,還是用的dom操作。

<template>
  <div id="wrap" :style="{ height: screenHeight + 'px' }">
    <div id="main" :style="{ top: nowTop + 'px' }">
      <ul id="pageUl" type="circle">
        <li id="pageUlLi1" class="pageUlLi" :class="{'active': curIndex == 1}">&nbsp;</li>
        <li id="pageUlLi2" class="pageUlLi" :class="{'active': curIndex == 2}">&nbsp;</li>
        <li id="pageUlLi3" class="pageUlLi" :class="{'active': curIndex == 3}">&nbsp;</li>
        <li id="pageUlLi4" class="pageUlLi" :class="{'active': curIndex == 4}">&nbsp;</li>
        <li id="pageUlLi5" class="pageUlLi" :class="{'active': curIndex == 5}">&nbsp;</li>
      </ul>
      <div style="background-color: #1b6d85" id="page1" class="page"></div>
      <div style="background-color: #5cb85c" id="page2" class="page"></div>
      <div style="background-color: #8a6d3b" id="page3" class="page"></div>
      <div style="background-color: #337ab7" id="page4" class="page"></div>
      <div style="background-color: #66512c" id="page5" class="page"></div>
    </div>
  </div>
</template>
 
<script>
  
  export default {
    name: 'Home',
    data(){
      return{
        screenWeight: 0,    // 屏幕寬度
        screenHeight: 0,    // 屏幕高度
        index: 1,        // 用于判斷翻頁
        curIndex: 1,      // 當前頁的index
        startTime: 0,      // 翻屏起始時間 
        endTime: 0,       // 上一次翻屏結(jié)束時間
        nowTop: 0,       // 翻屏后top的位置
        pageNum: 0,       // 一共有多少頁
        main: Object,
        obj: Object
      }
    },
    mounted(){
      this.screenWeight = document.documentElement.clientWidth;
      this.screenHeight = document.documentElement.clientHeight;
      this.main = document.getElementById("main");
      this.obj = document.getElementsByTagName("div");
      for (let i = 0; i < this.obj.length; i++) {
        if (this.obj[i].className == 'page') {
          this.obj[i].style.height = this.screenHeight + "px";
        }
      }
      this.pageNum = document.querySelectorAll(".page").length;
 
      // 瀏覽器兼容   
      if ((navigator.userAgent.toLowerCase().indexOf("firefox") != -1)) {
        document.addEventListener("DOMMouseScroll", this.scrollFun, false);
      } else if (document.addEventListener) {
        document.addEventListener("mousewheel", this.scrollFun, false);
      } else if (document.attachEvent) {
        document.attachEvent("onmousewheel", this.scrollFun);
      } else {
        document.onmousewheel = this.scrollFun;
      }
    },
    methods:{
      scrollFun(event) {
        this.startTime = new Date().getTime();
        // mousewheel事件中的 “event.wheelDelta” 屬性值:返回的如果是正值說明滾輪是向上滾動
        // DOMMouseScroll事件中的 “event.detail” 屬性值:返回的如果是負值說明滾輪是向上滾動
        let delta = event.detail || (-event.wheelDelta);
        // 如果當前滾動開始時間和上次滾動結(jié)束時間的差值小于1.5s,則不執(zhí)行翻頁動作,這樣做是為了實現(xiàn)類似節(jié)流的效果
        if ((this.startTime - this.endTime) > 1500) {
          if (delta > 0 && parseInt(this.main.offsetTop) >= -(this.screenHeight * (this.pageNum - 2))) {
            // 向下滾動
            this.index++;
            this.toPage(this.index);
          }else if (delta < 0 && parseInt(this.main.offsetTop) < 0) {
            // 向上滾動
            this.index--;
            this.toPage(this.index);
          }
          // 本次翻頁結(jié)束,記錄結(jié)束時間,用于下次判斷
          this.endTime = new Date().getTime();
        }
      },
      // 翻頁
      toPage(index) {
        if (index != this.curIndex) {
          let delta = index - this.curIndex;
          this.nowTop = this.nowTop - delta * this.screenHeight;
          this.curIndex = index;
        }
      }
    }
  }
</script>
<style>
  html, body {
    height: 100%;
  }
 
  body, ul, li, a, p, div {
    /*慎刪*/
    padding: 0px;
    margin: 0px;
  }
 
  #wrap {
    overflow: hidden;
    width: 100%;
  }
 
  #main {
    position: relative;
    transition:top 1.5s;
  }
 
  .page {
    /*謹刪*/
    width: 100%;
    margin: 0;
  }
 
  #pageUl {
    position: fixed;
    right: 10px;
    bottom: 50%;
  }
 
  .active{
    color: red;
  }
</style>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。 

相關(guān)文章

  • vue.js綁定事件監(jiān)聽器示例【基于v-on事件綁定】

    vue.js綁定事件監(jiān)聽器示例【基于v-on事件綁定】

    這篇文章主要介紹了vue.js綁定事件監(jiān)聽器的方法,結(jié)合實例形式分析了vue.js基于v-on事件綁定響應(yīng)鼠標點擊相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • vue3.0 CLI - 1 - npm 安裝與初始化的入門教程

    vue3.0 CLI - 1 - npm 安裝與初始化的入門教程

    這篇文章主要介紹了vue3.0 CLI - 1 - npm 安裝與初始化的入門教程,本文通過實例代碼相結(jié)合的形式,給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • axios取消請求與避免重復請求

    axios取消請求與避免重復請求

    在項目中經(jīng)常有一些場景會連續(xù)發(fā)送多個請求,而異步會導致最后得到的結(jié)果不是我們想要的,并且對性能也有非常大的影響,這篇文章主要給大家介紹了關(guān)于axios取消請求與避免重復請求的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Vue 使用中的小技巧

    Vue 使用中的小技巧

    這篇文章主要介紹了Vue 使用中的小技巧,是小編日常開發(fā)的時候用到的小技巧,需要的朋友可以參考下
    2018-04-04
  • 前端+接口請求實現(xiàn)vue動態(tài)路由

    前端+接口請求實現(xiàn)vue動態(tài)路由

    在Vue應(yīng)用中,結(jié)合前端和后端接口請求實現(xiàn)動態(tài)路由,可根據(jù)用戶權(quán)限動態(tài)生成路由,提高安全性與靈活性,本文就來介紹一下前端+接口請求實現(xiàn)vue動態(tài)路由,感興趣的可以了解一下
    2024-09-09
  • django+vue實現(xiàn)跨域的示例代碼

    django+vue實現(xiàn)跨域的示例代碼

    在我們的項目中需要用到django實現(xiàn)跨域的問題,本文通過示例代碼給大家詳細介紹django+vue實現(xiàn)跨域的方法,感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • 解決Vue使用swiper動態(tài)加載數(shù)據(jù),動態(tài)輪播數(shù)據(jù)顯示白屏的問題

    解決Vue使用swiper動態(tài)加載數(shù)據(jù),動態(tài)輪播數(shù)據(jù)顯示白屏的問題

    今天小編就為大家分享一篇解決Vue使用swiper動態(tài)加載數(shù)據(jù),動態(tài)輪播數(shù)據(jù)顯示白屏的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解VS Code使用之Vue工程配置format代碼格式化

    詳解VS Code使用之Vue工程配置format代碼格式化

    這篇文章主要介紹了詳解VS Code使用之Vue工程配置format代碼格式化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • vue 實現(xiàn)購物車總價計算

    vue 實現(xiàn)購物車總價計算

    今天小編就為大家分享一篇vue 實現(xiàn)購物車總價計算,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Element input樹型下拉框的實現(xiàn)代碼

    Element input樹型下拉框的實現(xiàn)代碼

    這篇文章主要介紹了Element input樹型下拉框的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論

柯坪县| 镇沅| 资源县| 兴业县| 无锡市| 旬邑县| 阿瓦提县| 云龙县| 巨鹿县| 石河子市| 石狮市| 弥勒县| 武胜县| 察隅县| 吉木萨尔县| 开江县| 株洲市| 苏尼特左旗| 漳浦县| 巴楚县| 会泽县| 萝北县| 黎平县| 巴林右旗| 南江县| 沁水县| 佛山市| 麦盖提县| 温州市| 醴陵市| 防城港市| 甘德县| 门头沟区| 神农架林区| 金门县| 兖州市| 宝鸡市| 大姚县| 吉隆县| 随州市| 邓州市|