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 相关文章推荐
用JavaScript脚本实现Web页面信息交互
Dec 21 Javascript
js综合应用实例简单的表格统计
Sep 03 Javascript
JS 弹出层 定位至屏幕居中示例
May 21 Javascript
js实现的简单图片浮动效果完整实例
May 10 Javascript
EasyUI Pagination 分页的两种做法小结
Jul 09 Javascript
js改变html的原有内容实现方法
Oct 05 Javascript
Node+OCR实现图像文字识别功能
Nov 26 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
May 20 Javascript
highcharts.js数据绑定方式代码实例
Nov 13 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
Jul 19 Javascript
vue实现标签云效果的示例
Nov 09 Javascript
vue实现可以快进后退的跑马灯组件
Apr 08 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
浅析is_writable的php实现
2013/06/18 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
男方父母婚礼答谢词
2014/01/25 职场文书
创业计划书撰写原则
2014/01/25 职场文书
个人收入证明格式
2015/06/24 职场文书
Pytest中conftest.py的用法
2021/06/27 Python
10大幻兽系恶魔果实 蝙蝠果实上榜,第一自愈能力强
2022/03/18 日漫