網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Element UI詳解el-scrollbar 滾動(dòng)條組件 —— 監(jiān)聽(tīng)滾動(dòng)條的滾動(dòng),跟隨頁(yè)面一起滾動(dòng),獲取滾動(dòng)距離,隱藏水平滾動(dòng)條等
作者:朝陽(yáng)39 更新時(shí)間: 2022-06-06 編程語(yǔ)言el-scrollbar 滾動(dòng)條組件用于優(yōu)化頁(yè)內(nèi)滾動(dòng)條的UI效果,使用時(shí)必須指定高度!
/*el-scrollbar 必須指定高度*/
.scrollMenuBox {
height: 200px;
width: 100px;
border: 1px solid red;
}
控制el-scrollbar內(nèi)滾動(dòng)條的方法與控制頁(yè)面的滾動(dòng)條的方法基本一樣,只是獲取el-scrollbar節(jié)點(diǎn)的滾動(dòng)條時(shí),需使用? this.$refs.scrollMenuRef.wrap
<el-scrollbar ref="scrollMenuRef" class="scrollMenuBox">
<p v-for="i in titleTotal" :key="i">標(biāo)題{{i}}</p>
</el-scrollbar>
獲取 el-scrollbar 內(nèi)滾動(dòng)條向下滾動(dòng)的距離
this.$refs.scrollMenuRef.wrap.scrollTop
控制 el-scrollbar 內(nèi)滾動(dòng)條滾動(dòng)到指定位置
?比如,向下滾動(dòng) 100px
this.$refs.scrollMenuRef.wrap.scrollTop = 100
el-scrollbar 內(nèi)內(nèi)容的高度
this.$refs.scrollMenuRef.wrap.scrollHeight
監(jiān)聽(tīng) el-scrollbar 內(nèi)滾動(dòng)條的滾動(dòng)
this.$refs.scrollMenuRef.wrap.addEventListener("scroll", this.scrollMenu);
隱藏水平滾動(dòng)條
?使用 scoped 時(shí),需用 /deep/ 實(shí)現(xiàn)樣式穿透
/deep/ .el-scrollbar__wrap {
overflow-x: hidden;
}
el-scrollbar 內(nèi)滾動(dòng)條跟隨頁(yè)面一起滾動(dòng)
mounted() {
// 監(jiān)聽(tīng)瀏覽器/頁(yè)面滾動(dòng)條的滾動(dòng)
window.addEventListener("scroll", this.scrollContent);
},
// 頁(yè)面滾動(dòng)時(shí)觸發(fā)
scrollContent() {
// scrollTop為顯示屏頂部與整個(gè)文檔頂部間的距離
let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
// 頁(yè)面滾動(dòng)條滾動(dòng)時(shí),el-scrollbar內(nèi)滾動(dòng)條按比例跟隨一起滾動(dòng)
this.$refs.scrollMenuRef.wrap.scrollTop = scrollTop / document.body.scrollHeight * this.$refs.scrollMenuRef.wrap.scrollHeight
},
?完整范例代碼
<template>
<div style="padding: 20px">
<div class="menuBox">
<button @click="scrollTo(25)">目錄滾動(dòng)到標(biāo)題25</button>
<br>
<button @click="getScrollTop">獲取目錄內(nèi)滾動(dòng)條向下滾動(dòng)的距離</button>
<hr>
<p>目錄</p>
<el-scrollbar ref="scrollMenuRef" class="scrollMenuBox">
<p v-for="i in titleTotal" :key="i">標(biāo)題{{i}}</p>
</el-scrollbar>
</div>
<div class="contentBox">
<p v-for="i in rowTotal" :key="i">第{{i}}行</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
// 總行數(shù)
titleTotal: 50,
// 總行數(shù)
rowTotal: 200
}
},
mounted() {
// 監(jiān)聽(tīng)瀏覽器/頁(yè)面滾動(dòng)條的滾動(dòng)
window.addEventListener("scroll", this.scrollContent);
// 監(jiān)聽(tīng)el-scrollbar內(nèi)滾動(dòng)條的滾動(dòng)
this.$refs.scrollMenuRef.wrap.addEventListener("scroll", this.scrollMenu);
},
methods: {
// el-scrollbar內(nèi)滾動(dòng)條滾動(dòng)時(shí),打印滾動(dòng)條向下滾動(dòng)的距離
scrollMenu() {
console.log(this.$refs.scrollMenuRef.wrap.scrollTop)
},
// 頁(yè)面滾動(dòng)時(shí)觸發(fā)
scrollContent() {
// scrollTop為顯示屏頂部與整個(gè)文檔頂部間的距離
let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
// 頁(yè)面滾動(dòng)條滾動(dòng)時(shí),el-scrollbar內(nèi)滾動(dòng)條按比例跟隨一起滾動(dòng)
this.$refs.scrollMenuRef.wrap.scrollTop = scrollTop / document.body.scrollHeight * this.$refs.scrollMenuRef.wrap.scrollHeight
},
// el-scrollbar內(nèi)滾動(dòng)條滾動(dòng)到指定的標(biāo)題號(hào)
scrollTo(titleNo) {
this.$refs.scrollMenuRef.wrap.scrollTop = (titleNo - 1) / this.titleTotal * this.$refs.scrollMenuRef.wrap.scrollHeight
},
// 獲取el-scrollbar內(nèi)滾動(dòng)條向下滾動(dòng)的距離
getScrollTop() {
alert(this.$refs.scrollMenuRef.wrap.scrollTop)
}
},
}
</script>
<style scoped>
/*目錄懸浮*/
.menuBox {
position: fixed;
}
/*內(nèi)容居中*/
.contentBox {
width: 60%;
margin: auto;
}
/*el-scrollbar 必須指定高度*/
.scrollMenuBox {
height: 200px;
width: 100px;
border: 1px solid red;
}
/*隱藏水平滾動(dòng)條*/
/deep/ .el-scrollbar__wrap {
overflow-x: hidden;
}
</style>
?
原文鏈接:https://blog.csdn.net/weixin_41192489/article/details/113875367
相關(guān)推薦
- 2022-10-29 關(guān)于torch.load加載預(yù)訓(xùn)練模型時(shí) 造成的 臨時(shí)分配的顯存 不釋放
- 2023-01-05 TensorFlow?2.0之后動(dòng)態(tài)分配顯存方式_python
- 2023-01-01 c語(yǔ)言實(shí)現(xiàn)計(jì)算圓周率的近似值_C 語(yǔ)言
- 2022-06-10 ASP.NET?Core使用EF保存數(shù)據(jù)、級(jí)聯(lián)刪除和事務(wù)使用_實(shí)用技巧
- 2022-05-15 C++的數(shù)據(jù)共享與保護(hù)你了解嗎_C 語(yǔ)言
- 2022-02-18 Syntax Error: Error: Node Sass version 6.0.1 is in
- 2023-01-03 C語(yǔ)言中的putchar函數(shù)示例_C 語(yǔ)言
- 2022-09-06 C語(yǔ)言模擬實(shí)現(xiàn)strstr函數(shù)的示例代碼_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支