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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
动态为事件添加js代码示例
Feb 15 Javascript
Javascript Select操作大集合
May 26 Javascript
javascript 简单抽屉效果的实现代码
Mar 09 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
Apr 16 Javascript
判断js对象是否拥有某一个属性的js代码
Aug 16 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
Sep 24 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
Jan 29 jQuery
JS实现快递单打印功能【推荐】
Jun 21 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
JS函数节流和防抖之间的区分和实现详解
Jan 11 Javascript
配置一个vue3.0项目的完整步骤
Apr 26 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 Mssql操作简单封装支持存储过程
2009/12/11 PHP
PHP中的integer类型使用分析
2010/07/27 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
Python栈类实例分析
2015/06/15 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
Python算法之图的遍历
2017/11/16 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
基于python生成器封装的协程类
2019/03/20 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
python获取Linux发行版名称
2019/08/30 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Python如何输出整数
2020/06/07 Python
pytorch SENet实现案例
2020/06/24 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
财务担保书范文
2014/04/02 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
个人更名证明
2015/06/23 职场文书