如何将Vue组件实现为始终固定在页面特定位置显示的功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计734个文字,预计阅读时间需要3分钟。
在Vue项目中实现吸顶效果,例如实现导航栏在页面滚动到一定位置后固定不动的功能:
首先,在mounted生命周期内监听scroll事件,事件触发后执行滚动处理逻辑。以下是实现步骤:
1. 在mounted钩子中监听全局滚动事件:javascriptmounted() { window.addEventListener('scroll', this.handleScroll);},
2. 定义handleScroll方法,处理滚动逻辑:javascripthandleScroll() { const fixedPosition=100; // 设置吸顶的阈值 const navbar=document.querySelector('.navbar'); // 获取导航栏元素
// 获取页面滚动的距离 const scrollTop=window.pageYOffset || document.documentElement.scrollTop;
// 判断滚动距离是否超过阈值 if (scrollTop >=fixedPosition) { // 超过阈值,将导航栏固定 navbar.style.position='fixed'; navbar.style.top='0'; } else { // 未超过阈值,将导航栏恢复默认位置 navbar.style.position=''; navbar.style.top=''; }},
3. 当组件销毁时,移除滚动事件监听,避免内存泄漏:javascriptbeforeDestroy() { window.removeEventListener('scroll', this.handleScroll);},
这样,当页面滚动到设定阈值时,导航栏将自动固定在页面顶部,不再随页面滚动而移动。
在vue项目中实现吸顶效果.
比如说,我们要实现的功能是导航栏在页面下滑到一定位置之后,便固定不定。
首先:要在mounted生命周期内监听'scroll'事件,事件触发后,执行一个处理滚动的函数。
window.addEventListener('scroll', this.handleScroll) methods:{ handleScroll () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop var offsetTop = document.querySelector('#searchBar').offsetTop if (scrollTop > offsetTop) { //判断是否到达了顶部 this.searchBarFixed = true } else { this.searchBarFixed = false } } }
完整源代码如下:
<template> <div> <div class="nav"></div> <div class="searchBar" id="searchBar"> <ul :class="searchBarFixed == true ? 'isFixed' :''"> //用v-bind绑定样式 <li>区域<i class="iconfont icon-jiantouxia"></i></li> <li>价格<i class="iconfont icon-jiantouxia"></i></li> <li>房型<i class="iconfont icon-jiantouxia"></i></li> <li>更多<i class="iconfont icon-jiantouxia"></i></li> </ul> </div> <div class="content"> </div> </div> </template> <script> export default { components:{ }, mounted () { window.addEventListener('scroll', this.handleScroll) }, data(){ return { searchBarFixed:false } }, methods:{ handleScroll () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop var offsetTop = document.querySelector('#searchBar').offsetTop if (scrollTop > offsetTop) { this.searchBarFixed = true } else { this.searchBarFixed = false } }, } } </script> <style lang="less" scope> .nav{ height: 250px; } .content{ height: 1900px; } .searchBar{ .isFixed{ position:fixed; background-color:#Fff; top:0; z-index:999; } ul { width:100%; height: 40px; line-height: 40px; display: flex; li { list-style: none; font-size: 0.8rem; text-align: center; flex: 1; i { font-size: 0.9rem; padding-left: 5px; color: #ccc; } } border-bottom: 1px solid #ddd; } } </style>
总结
以上所述是小编给大家介绍的vue实现固定位置显示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对自由互联网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
本文共计734个文字,预计阅读时间需要3分钟。
在Vue项目中实现吸顶效果,例如实现导航栏在页面滚动到一定位置后固定不动的功能:
首先,在mounted生命周期内监听scroll事件,事件触发后执行滚动处理逻辑。以下是实现步骤:
1. 在mounted钩子中监听全局滚动事件:javascriptmounted() { window.addEventListener('scroll', this.handleScroll);},
2. 定义handleScroll方法,处理滚动逻辑:javascripthandleScroll() { const fixedPosition=100; // 设置吸顶的阈值 const navbar=document.querySelector('.navbar'); // 获取导航栏元素
// 获取页面滚动的距离 const scrollTop=window.pageYOffset || document.documentElement.scrollTop;
// 判断滚动距离是否超过阈值 if (scrollTop >=fixedPosition) { // 超过阈值,将导航栏固定 navbar.style.position='fixed'; navbar.style.top='0'; } else { // 未超过阈值,将导航栏恢复默认位置 navbar.style.position=''; navbar.style.top=''; }},
3. 当组件销毁时,移除滚动事件监听,避免内存泄漏:javascriptbeforeDestroy() { window.removeEventListener('scroll', this.handleScroll);},
这样,当页面滚动到设定阈值时,导航栏将自动固定在页面顶部,不再随页面滚动而移动。
在vue项目中实现吸顶效果.
比如说,我们要实现的功能是导航栏在页面下滑到一定位置之后,便固定不定。
首先:要在mounted生命周期内监听'scroll'事件,事件触发后,执行一个处理滚动的函数。
window.addEventListener('scroll', this.handleScroll) methods:{ handleScroll () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop var offsetTop = document.querySelector('#searchBar').offsetTop if (scrollTop > offsetTop) { //判断是否到达了顶部 this.searchBarFixed = true } else { this.searchBarFixed = false } } }
完整源代码如下:
<template> <div> <div class="nav"></div> <div class="searchBar" id="searchBar"> <ul :class="searchBarFixed == true ? 'isFixed' :''"> //用v-bind绑定样式 <li>区域<i class="iconfont icon-jiantouxia"></i></li> <li>价格<i class="iconfont icon-jiantouxia"></i></li> <li>房型<i class="iconfont icon-jiantouxia"></i></li> <li>更多<i class="iconfont icon-jiantouxia"></i></li> </ul> </div> <div class="content"> </div> </div> </template> <script> export default { components:{ }, mounted () { window.addEventListener('scroll', this.handleScroll) }, data(){ return { searchBarFixed:false } }, methods:{ handleScroll () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop var offsetTop = document.querySelector('#searchBar').offsetTop if (scrollTop > offsetTop) { this.searchBarFixed = true } else { this.searchBarFixed = false } }, } } </script> <style lang="less" scope> .nav{ height: 250px; } .content{ height: 1900px; } .searchBar{ .isFixed{ position:fixed; background-color:#Fff; top:0; z-index:999; } ul { width:100%; height: 40px; line-height: 40px; display: flex; li { list-style: none; font-size: 0.8rem; text-align: center; flex: 1; i { font-size: 0.9rem; padding-left: 5px; color: #ccc; } } border-bottom: 1px solid #ddd; } } </style>
总结
以上所述是小编给大家介绍的vue实现固定位置显示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对自由互联网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

