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 相关文章推荐
又一个小巧的图片预加载类
May 05 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
jQuery在html有效在jsp无效的原因及解决方法
Aug 02 Javascript
js格式化时间小结
Nov 03 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
May 03 Javascript
JavaScript生成福利彩票双色球号码
May 15 Javascript
解析浏览器端的AJAX缓存机制
Jun 21 Javascript
AngularJS ui-router (嵌套路由)实例
Mar 10 Javascript
Angular8 Http拦截器简单使用教程
Aug 20 Javascript
TypeScript高级用法的知识点汇总
Dec 17 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
May 14 Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 Javascript
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代码的50个实用技巧必备(下)
2016/01/22 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
js 异步处理进度条
2010/04/01 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
Python二进制串转换为通用字符串的方法
2018/07/23 Python
python制作mysql数据迁移脚本
2019/01/01 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
就业表自我评价分享
2014/02/06 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
工作年限证明模板
2014/11/01 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
入党申请书格式
2019/06/20 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
Python中threading库实现线程锁与释放锁
2021/05/17 Python
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
win10更新失败无限重启解决方法
2022/04/19 数码科技
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python