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 相关文章推荐
ExtJS 2.0实用简明教程 之获得ExtJS
Apr 29 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
Aug 28 Javascript
ajax的hide隐藏问题解决方法
Dec 11 Javascript
jQuery中clearQueue()方法用法实例
Dec 29 Javascript
JSON格式的键盘编码对照表
Jan 29 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
jQuery过滤选择器经典应用
Aug 18 Javascript
jQuery中的AjaxSubmit使用讲解
Sep 25 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
May 07 Javascript
实例教学如何写vue插件
Nov 30 Javascript
浅谈react受控组件与非受控组件(小结)
Feb 09 Javascript
layui实现动态和静态分页
Apr 28 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 和 HTML
2006/10/09 PHP
消息持续发送的完整例子
2006/10/09 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
2017/02/04 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
深入浅析python定时杀进程
2016/06/06 Python
python视频按帧截取图片工具
2019/07/23 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
python 6种方法实现单例模式
2020/12/15 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
单位创先争优活动方案
2014/01/26 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB