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

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

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

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

是什么

網頁的一個頁面占據一屏的寬高,多個頁面上下或者左右拼接在一起。當滑動鼠標滾輪,或點擊導航按鈕時,可以平滑到對應的頁面。

此次只實現鼠標滾動

實現原理

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

代碼實現

HTML

<template>
 <div class="fullPage" ref="fullPage">
 <div
  class="fullPageContainer"
  ref="fullPageContainer"
  @mousewheel="mouseWheelHandle" //監(jiān)聽鼠標事件
  @DOMMouseScroll="mouseWheelHandle" // 監(jiān)聽鼠標事件
 >
  <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, // 當前的頁面編號
  isScrolling: false, // 是否在滾動,是為了防止?jié)L動多頁,需要通過一個變量來控制是否滾動
  deltaY: 0 // 返回鼠標滾輪的垂直滾動量,保存的鼠標滾動事件的deleteY,用來判斷是往下還是往上滾
  }
 };
 },
 methods: {
 next() { // 往下切換
  let len = 4; // 頁面的個數
  if (this.fullpage.current + 1 <= len) { // 如果當前頁面編號+1 小于總個數,則可以執(zhí)行向下滑動
  this.fullpage.current += 1; // 頁面+1
  this.move(this.fullpage.current); // 執(zhí)行切換
  }
 },
 pre() {// 往上切換
  if (this.fullpage.current - 1 > 0) { // 如果當前頁面編號-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)聽鼠標監(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%;//一定要設置,保證占滿
 overflow: hidden;//一定要設置,多余的先隱藏
 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>

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

相關文章

  • Vue2模版編譯流程詳解

    Vue2模版編譯流程詳解

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

    vue?elementui?大文件進度條下載功能實現

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

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

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

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

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

    Vue路由傳參props解耦的三種方式小結

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

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

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

    Vue實現滾動加載更多效果的示例代碼

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

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

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

    基于Vue3+Node.js實現客服實時聊天功能

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

    使用vue實現計時器功能

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

最新評論

高清| 望江县| 江北区| 察哈| 育儿| 丹寨县| 丹寨县| 苏尼特右旗| 太仓市| 乳源| 英德市| 柏乡县| 进贤县| 吉林省| 榆林市| 灵宝市| 荥经县| 策勒县| 阳泉市| 托克托县| 水富县| 楚雄市| 麻江县| 文化| 尚义县| 内丘县| 陕西省| 巩留县| 文山县| 潜江市| 龙泉市| 南昌县| 松原市| 文安县| 昭通市| 息烽县| 庆安县| 大洼县| 辽宁省| 延寿县| 尖扎县|