亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue實(shí)現(xiàn)監(jiān)聽某個(gè)元素滾動(dòng),親測(cè)有效

 更新時(shí)間:2022年07月27日 10:42:49   作者:卡爾特斯  
這篇文章主要介紹了Vue實(shí)現(xiàn)監(jiān)聽某個(gè)元素滾動(dòng),親測(cè)有效!具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

監(jiān)聽某個(gè)元素滾動(dòng),親測(cè)有效

Vue 開發(fā),有時(shí)候只需要監(jiān)聽某個(gè)元素是否滾動(dòng)就行了,不需要去監(jiān)聽整個(gè)頁面。

Vue 有自帶的 @scroll 但是并沒有什么用,給某個(gè)滾動(dòng)元素加上,滾動(dòng)該元素并不會(huì)調(diào)用,加上 CSS 支持滾動(dòng)樣式也一樣。

怎么監(jiān)聽呢?通過 addEventListener 與 @mousewheel 配合實(shí)現(xiàn)

  • addEventListener: 增加的是拖拽滾動(dòng)條也能監(jiān)聽到滾動(dòng)
  • @mousewheel:添加的是非拖拽滾動(dòng)條滾動(dòng),比如在元素上鼠標(biāo)或者觸摸板滾動(dòng)。
<template>
? <!-- 滾動(dòng)視圖 -->
? <div class="scrollview" ref="scrollview" @mousewheel="scrollChange">
? ? <!-- 內(nèi)容區(qū)域 -->
? ? <div class="content"></div>
? </div>
</template>
<script>
export default {
? mounted () {
? ? // 獲取指定元素
? ? const scrollview = this.$refs['scrollview']
? ? // 添加滾動(dòng)監(jiān)聽,該滾動(dòng)監(jiān)聽了拖拽滾動(dòng)條
? ? // 尾部的 true 最好加上,我這邊測(cè)試沒加 true ,拖拽滾動(dòng)條無法監(jiān)聽到滾動(dòng),加上則可以監(jiān)聽到拖拽滾動(dòng)條滾動(dòng)回調(diào)
? ? scrollview.addEventListener('scroll', this.scrollChange, true)
? },
? // beforeDestroy 與 destroyed 里面移除都行
? beforeDestroy () {
? ? // 獲取指定元素
? ? const scrollview = this.$refs['scrollview']
? ? // 移除監(jiān)聽
? ? scrollview.removeEventListener('scroll', this.scrollChange, true)
? },
? methods: {
? ? // 滾動(dòng)監(jiān)聽
? ? scrollChange () {
? ? ? console.log('滾動(dòng)中')
? ? }
? }
}
</script>
<style scoped>
.scrollview {
? height: 100px;
? overflow-y: auto;
? background-color: yellow;
}
.content {
? height: 500px;
? background-color: red;
}
</style>

案例效果

監(jiān)聽dom元素滾動(dòng)到了可視區(qū)?

場景:當(dāng)某個(gè)元素滾動(dòng)到可視區(qū)時(shí),為其添加動(dòng)畫樣式(animate.css)。

common/utils.js

export const isElementNotInViewport = function(el) {
?? ?if (el) {
?? ??? ?let rect = el.getBoundingClientRect();
?? ??? ?return (
?? ??? ??? ?rect.top >=
?? ??? ??? ??? ?(window.innerHeight || document.documentElement.clientHeight) ||
?? ??? ??? ?rect.bottom <= 0
?? ??? ?);
?? ?}
};

在組件內(nèi)的使用

import { isElementNotInViewport } from "common/utils";
export default {
? ?...
? data() {
? ? return {
? ? ? header_Animate: false
? ? }
? },
? mounted() {
? ? // 監(jiān)聽滾動(dòng)事件
? ? window.addEventListener("scroll", this.scrollToTop);
? },
? beforeRouteLeave(to, form, next) {
? ? // 離開路由移除滾動(dòng)事件
? ? window.removeEventListener('scroll',this.scrollToTop);
? ? next();
? },
? methods: {
? ? // 滾動(dòng)事件
? ? scrollToTop() {
?? ? ?!isElementNotInViewport(this.$refs.header) ? this.header_Animate = true: '';
? ? }
? }
}
<template>
? <div?
? ? ref="header"?
? ? class="animate__animated"?
? ? :class="{animate__slideInLeft:header_Animate}">
? </div>
</template>

這樣就可以控制當(dāng)dom元素滾動(dòng)到可視區(qū)的時(shí)候,給他添加動(dòng)畫樣式了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • v-html渲染組件問題

    v-html渲染組件問題

    最近在學(xué)習(xí)vue,今天正好發(fā)現(xiàn)個(gè)問題,本文介紹了v-html渲染組件問題,整理了問題的解決方法,有需要的小伙伴可以參考下
    2021-05-05
  • VUE+Element實(shí)現(xiàn)增刪改查的示例源碼

    VUE+Element實(shí)現(xiàn)增刪改查的示例源碼

    這篇文章主要介紹了VUE+Element實(shí)現(xiàn)增刪改查的示例源碼,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-11-11
  • vue?cli3配置image-webpack-loader方式

    vue?cli3配置image-webpack-loader方式

    這篇文章主要介紹了vue?cli3配置image-webpack-loader方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 關(guān)于element-ui表頭吸附問題的解決方案

    關(guān)于element-ui表頭吸附問題的解決方案

    數(shù)據(jù)過多滑動(dòng)表格的時(shí)候,看不到表頭不知道對(duì)應(yīng)的數(shù)據(jù)是什么,用戶體驗(yàn)操作不友好,要改成表頭固定住,所以本文給大家介紹了關(guān)于element-ui表頭吸附問題的兩個(gè)解決方案,需要的朋友可以參考下
    2024-01-01
  • Vue模擬el-table演示插槽用法的示例詳解

    Vue模擬el-table演示插槽用法的示例詳解

    很多人知道插槽分為三種,但是實(shí)際到elementui當(dāng)中為什么這么用,就一臉懵逼,接下來就跟大家聊一聊插槽在elementui中的應(yīng)用,并且自己寫一個(gè)類似el-table的組件,感興趣的可以了解一下
    2023-05-05
  • vue父子組件的嵌套的示例代碼

    vue父子組件的嵌套的示例代碼

    本篇文章主要介紹了vue父子組件的嵌套的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Vant2移動(dòng)端Vue組件庫問題記錄

    Vant2移動(dòng)端Vue組件庫問題記錄

    Vant是一套輕量、可靠的移動(dòng)端組件庫,通過Vant可以快速搭建出風(fēng)格統(tǒng)一的頁面,提升開發(fā)效率,下面這篇文章主要給大家介紹了關(guān)于Vant2移動(dòng)端Vue組件庫問題的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • vue實(shí)現(xiàn)h5掃碼的代碼示例

    vue實(shí)現(xiàn)h5掃碼的代碼示例

    html5-qrcode是一個(gè)基于JavaScript?輕量級(jí)和跨平臺(tái)的掃碼插件,允許用戶使用攝像頭掃描二維碼,并且解析為文本或者url,本文給大家介紹了vue實(shí)現(xiàn)h5掃碼,需要的朋友可以參考下
    2024-01-01
  • nuxt3中server routes的使用詳解

    nuxt3中server routes的使用詳解

    本文主要介紹了nuxt3中server routes的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Vue如何引入遠(yuǎn)程JS文件

    Vue如何引入遠(yuǎn)程JS文件

    本篇文章主要介紹了Vue引入遠(yuǎn)程JS文件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04

最新評(píng)論