vue实现某元素吸顶或固定位置显示(监听滚动事件)


Posted in Javascript onDecember 13, 2017

最近写了一个VUE的web app项目,需要实现某个部位吸顶的效果。即,页面往上滑动,刚好到达该部位时,该部分,固定在顶部显示。

vue实现某元素吸顶或固定位置显示(监听滚动事件)

1、监听滚动事件
利用VUE写一个在控制台打印当前的scrollTop,
首先,在mounted钩子中给window添加一个滚动滚动监听事件,

mounted () {
 window.addEventListener('scroll', this.handleScroll)
},

然后在方法中,添加这个handleScroll方法

handleScroll () {
 var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
 console.log(scrollTop)
},

控制台打印结果:

vue实现某元素吸顶或固定位置显示(监听滚动事件)

2、监听元素到顶部的距离  并判断滚动的距离如果大于了元素到顶部的距离时,设置searchBar为true,否则就是false

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
 }
},

先写一个该元素固定到顶部的样式,isFixed(less写法)

.searchBar{
 .isFixed{
 position:fixed;
 background-color:#Fff;
 top:0;
 z-index:999;
 }
 ul {
 WIDTH:100%;
 height: 40px;
 line-height: 40px;
 display: flex;
 li {
 font-size: 0.8rem;
 text-align: center;
 flex: 1;
 i {
 font-size: 0.9rem;
 padding-left: 5px;
 color: #ccc;
 }
 }
 border-bottom: 1px solid #ddd;
 }
}

然后将需要固定的元素的class与searchBar进行绑定,如果searchBar为true时,就应用这个isFixed样式

<div class="searchBar" id="searchBar">
 <ul :class="searchBarFixed == true ? 'isFixed' :''">
 <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>

固定后的结果:

vue实现某元素吸顶或固定位置显示(监听滚动事件)

注意,如果离开该页面需要移除这个监听的事件,不然会报错。

destroyed () {
 window.removeEventListener('scroll', this.handleScroll)
},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
表单JS弹出填写提示效果代码
Apr 16 Javascript
JS随即打乱数组实现代码
Dec 03 Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
基于js中this和event 的区别(详解)
Oct 24 Javascript
基于vue.js的分页插件详解
Nov 27 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
Feb 03 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
node 标准输入流和输出流代码实例
Sep 19 Javascript
Element PageHeader页头的使用方法
Jul 26 Javascript
react-native 实现购物车滑动删除效果的示例代码
Jan 15 Javascript
Vue监视数据的原理详解
Feb 24 Vue.js
vue组件中使用iframe元素的示例代码
Dec 13 #Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 #Javascript
vue实现nav导航栏的方法
Dec 13 #Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 #Javascript
仿京东快报向上滚动的实例
Dec 13 #Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 #Javascript
vue-router路由懒加载和权限控制详解
Dec 13 #Javascript
You might like
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php实现简单加入购物车功能
2017/03/07 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
Python编程pygal绘图实例之XY线
2017/12/09 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
python 异或加密字符串的实例
2018/10/14 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
报关简历自我评价怎么写
2013/09/19 职场文书
趣味游戏活动方案
2014/02/07 职场文书
厂长岗位职责
2014/02/19 职场文书
读书小明星事迹材料
2014/05/03 职场文书
专项法律服务方案
2014/06/11 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
朋友离别感言
2015/08/04 职场文书
网络研修随笔感言
2015/11/18 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js