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获取下拉列表的值和元素个数示例
May 07 Javascript
js实现网页随机切换背景图片的方法
Nov 01 Javascript
javascript实现简单的鼠标拖动效果实例
Apr 10 Javascript
js实现汉字排序的方法
Jul 23 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
Bootstrap表单Form全面解析
Jun 13 Javascript
js中json处理总结之JSON.parse
Oct 14 Javascript
微信小程序 wxapp地图 map详解
Oct 31 Javascript
vue-router beforeEach跳转路由验证用户登录状态
Dec 26 Javascript
JavaScript+HTML实现学生信息管理系统
Apr 20 Javascript
Vue3实现简易音乐播放器组件
Aug 14 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代码
2010/02/16 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
js+css在交互上的应用
2010/07/18 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
python常用数据重复项处理方法
2019/11/22 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
如何开启linux的ssh服务
2015/02/14 面试题
仓库班组长岗位职责
2013/12/12 职场文书
装饰活动策划方案
2014/02/11 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
迁户口计划生育证明
2014/10/19 职场文书
应届毕业生自荐信
2015/03/04 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android