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 相关文章推荐
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
Mar 01 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
JS自定义对象实现Java中Map对象功能的方法
Jan 20 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
Sep 01 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
Dec 08 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
JS中的三个循环小结
Jun 20 Javascript
JS div匀速移动动画与变速移动动画代码实例
Mar 26 Javascript
javascript实现抢购倒计时程序
Aug 26 Javascript
vue+axios全局添加请求头和参数操作
Jul 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
资料注册后发信小技巧
2006/10/09 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python处理中文编码和判断编码示例
2014/02/26 Python
Python切换pip安装源的方法详解
2016/11/18 Python
Python装饰器语法糖
2019/01/02 Python
pygame实现非图片按钮效果
2019/10/29 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
python能开发游戏吗
2020/06/11 Python
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
工商学院毕业生自荐信
2013/11/12 职场文书
环境卫生倡议书
2014/08/29 职场文书
暑期社会实践个人总结
2015/03/06 职场文书