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

vue實現(xiàn)全屏滾動效果(非fullpage.js)

 更新時間:2020年03月07日 12:38:51   作者:coder-syl  
這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)全屏滾動效果,非fullpage.js,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue實現(xiàn)全屏滾動效果(的具體代碼,供大家參考,具體內(nèi)容如下

是什么

網(wǎng)頁的一個頁面占據(jù)一屏的寬高,多個頁面上下或者左右拼接在一起。當(dāng)滑動鼠標(biāo)滾輪,或點擊導(dǎo)航按鈕時,可以平滑到對應(yīng)的頁面。

此次只實現(xiàn)鼠標(biāo)滾動

實現(xiàn)原理

使用mousewheel , DOMMouseScroll(火狐用)監(jiān)聽鼠標(biāo)滾動事件,當(dāng)鼠標(biāo)上下的滾動的時候,當(dāng)前的頁面transformY(屏高)或者transformX(屏寬)

代碼實現(xiàn)

HTML

<template>
 <div class="fullPage" ref="fullPage">
 <div
  class="fullPageContainer"
  ref="fullPageContainer"
  @mousewheel="mouseWheelHandle" //監(jiān)聽鼠標(biāo)事件
  @DOMMouseScroll="mouseWheelHandle" // 監(jiān)聽鼠標(biāo)事件
 >
  <div class="section section1">1</div>
  <div class="section section2">2</div>
  <div class="section section3">3</div>
  <div class="section section4">4</div>
 </div>
 </div>
</template>

JS

<script>
export default {
 name: "Home",
 data() {
 return {
  fullpage: {
  current: 1, // 當(dāng)前的頁面編號
  isScrolling: false, // 是否在滾動,是為了防止?jié)L動多頁,需要通過一個變量來控制是否滾動
  deltaY: 0 // 返回鼠標(biāo)滾輪的垂直滾動量,保存的鼠標(biāo)滾動事件的deleteY,用來判斷是往下還是往上滾
  }
 };
 },
 methods: {
 next() { // 往下切換
  let len = 4; // 頁面的個數(shù)
  if (this.fullpage.current + 1 <= len) { // 如果當(dāng)前頁面編號+1 小于總個數(shù),則可以執(zhí)行向下滑動
  this.fullpage.current += 1; // 頁面+1
  this.move(this.fullpage.current); // 執(zhí)行切換
  }
 },
 pre() {// 往上切換
  if (this.fullpage.current - 1 > 0) { // 如果當(dāng)前頁面編號-1 大于0,則可以執(zhí)行向下滑動
  this.fullpage.current -= 1;// 頁面+1
  this.move(this.fullpage.current);// 執(zhí)行切換
  }
 },
 move(index) {
  this.fullpage.isScrolling = true; // 為了防止?jié)L動多頁,需要通過一個變量來控制是否滾動
  this.directToMove(index); //執(zhí)行滾動
  setTimeout(() => {  //這里的動畫是1s執(zhí)行完,使用setTimeout延遲1s后解鎖
  this.fullpage.isScrolling = false;
  }, 1010);
 },
 directToMove(index) {
  let height = this.$refs["fullPage"].clientHeight; //獲取屏幕的寬度
  let scrollPage = this.$refs["fullPageContainer"]; // 獲取執(zhí)行tarnsform的元素
  let scrollHeight; // 計算滾動的告訴,是往上滾還往下滾
  scrollHeight= -(index - 1) * height + "px";
  scrollPage.style.transform = `translateY(${scrollHeight})`;
  this.fullpage.current = index;
 },
 mouseWheelHandle(event) { // 監(jiān)聽鼠標(biāo)監(jiān)聽
  // 添加冒泡阻止
  let evt = event || window.event;
  if (evt.stopPropagation) {
  evt.stopPropagation();
  } else {
  evt.returnValue = false;
  }
  if (this.fullpage.isScrolling) { // 判斷是否可以滾動
  return false;
  }
  let e = event.originalEvent || event;
  this.fullpage.deltaY = e.deltaY || e.detail; // Firefox使用detail
  if (this.fullpage.deltaY > 0) {
  this.next();
  } else if (this.fullpage.deltaY < 0) {
  this.pre();
  }
 }
 }
};
</script>

CSS

<style scoped>
.fullPage{
 height: 100%;//一定要設(shè)置,保證占滿
 overflow: hidden;//一定要設(shè)置,多余的先隱藏
 background-color: rgb(189, 211, 186);
}
.fullPageContainer{
 width: 100%;
 height: 100%;
 transition: all linear 0.5s;
}
.section {
 width: 100%;
 height: 100%;
 background-position: center center;
 background-repeat: no-repeat;
}
.section1 {
 background-color: rgb(189, 211, 186);
 background: url("./assets/intro-bg.jpg");
}
.section1 .secction1-content {
 color: #fff;
 text-align: center;
 position: absolute;
 top: 40%;
 right: 0;
 left: 0;
}
.secction1-content h1 {
 font-size: 40px;
 padding-bottom: 30px;
}
.secction1-content p {
 font-size: 20px;
}
.section2 {
 background-color: rgb(44, 48, 43);
}
.section3 {
 background-color: rgb(116, 104, 109);
}
.section4 {
 background-color: rgb(201, 202, 157);
}
</style>

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

相關(guān)文章

  • Vue2模版編譯流程詳解

    Vue2模版編譯流程詳解

    vue中有一張響應(yīng)式系統(tǒng)的流程圖,vue會將模板語法編譯成render函數(shù),通過render函數(shù)渲染生成Virtual?dom,但是官方并沒有對模板編譯有詳細(xì)的介紹,這篇文章帶大家一起學(xué)習(xí)下vue的模板編譯
    2023-07-07
  • vue?elementui?大文件進(jìn)度條下載功能實現(xiàn)

    vue?elementui?大文件進(jìn)度條下載功能實現(xiàn)

    本文介紹了如何使用下載進(jìn)度條來展示下載進(jìn)度的方法,并展示了相關(guān)的效果圖,結(jié)合實例代碼介紹了vue?elementui?大文件進(jìn)度條下載的方法,感興趣的朋友一起看看吧
    2025-01-01
  • vue $router和$route的區(qū)別詳解

    vue $router和$route的區(qū)別詳解

    這篇文章主要介紹了vue $router和$route的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue輪播圖插件vue-concise-slider的使用

    vue輪播圖插件vue-concise-slider的使用

    這篇文章主要介紹了vue輪播圖插件vue-concise-slider的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Vue路由傳參props解耦的三種方式小結(jié)

    Vue路由傳參props解耦的三種方式小結(jié)

    這篇文章主要介紹了Vue路由傳參props解耦的三種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • VueJs打包之后遇到的坑及解決

    VueJs打包之后遇到的坑及解決

    這篇文章主要介紹了VueJs打包之后遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue實現(xiàn)滾動加載更多效果的示例代碼

    Vue實現(xiàn)滾動加載更多效果的示例代碼

    這篇文章介紹了在?Web?應(yīng)用中處理大量數(shù)據(jù)展示的兩種滾動加載更多方案,滾動加載更多通過分頁工作,優(yōu)點是實現(xiàn)簡單、用戶體驗流暢,缺點是內(nèi)存占用可能過高,虛擬列表只渲染視口內(nèi)容,性能好但實現(xiàn)復(fù)雜,本文介紹了Vue實現(xiàn)滾動加載更多效果,需要的朋友可以參考下
    2024-12-12
  • Vue3格式化Volar報錯的原因分析與解決

    Vue3格式化Volar報錯的原因分析與解決

    Volar 與vetur相同,volar是一個針對vue的vscode插件,下面這篇文章主要給大家介紹了關(guān)于Vue3格式化Volar報錯的原因分析與解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 基于Vue3+Node.js實現(xiàn)客服實時聊天功能

    基于Vue3+Node.js實現(xiàn)客服實時聊天功能

    想象一下淘寶客服的聊天窗口:你發(fā)消息,客服立刻就能看到并回復(fù),這種即時通訊效果是如何實現(xiàn)的呢?本文我們使用 Vue3 作為前端框架,Node.js 作為后端,通過 WebSocket+ Socket.IO 協(xié)議實現(xiàn)實時通信,需要的朋友可以參考下
    2025-05-05
  • 使用vue實現(xiàn)計時器功能

    使用vue實現(xiàn)計時器功能

    這篇文章主要為大家詳細(xì)介紹了使用vue實現(xiàn)計時器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

皋兰县| 嘉黎县| 光泽县| 龙海市| 鹤庆县| 楚雄市| 金坛市| 丹东市| 平遥县| 都兰县| 商河县| 安泽县| 大庆市| 五大连池市| 桃园县| 泉州市| 瑞昌市| 苍山县| 荆州市| 扎赉特旗| 连云港市| 乐平市| 翼城县| 石门县| 定结县| 阜城县| 廊坊市| 黄山市| 武冈市| 阆中市| 全南县| 隆安县| 北京市| 普安县| 武山县| 大石桥市| 大化| 天峨县| 丘北县| 丽江市| 昌都县|