首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS判断滚动条是否停止滚动

背景:昨天一个同事有种需求,有一个展示数据区域的div,带滚动条,当滚动条滚动时,需要向后台发请求,计算数据,再拿到前台展示。        ...分析:由于数据量级别较大,所以当滚动条滚动时,如果时时向后台发请求,对服务器和浏览器都造成巨大的压力。想到的解决方案是,当滚动条停止时,再去发请求计算数据。...那么问题来了,如何判断滚动条是否停止了呢?        解决:搜索了一下,js本身是无法判断滚动条是在滚动状态还是停止状态,只有通过其它方式了。...后来想到的思路是当滚动条滚动的时候,发起一个定期执行的方法,并记录一次当前滚动条到顶部的距离,这个方法中判断此时滚动条到顶部的距离是否和上次记录的相等,如果相等,那么说明停止滚动了,不相等,还在滚动。...setInterval("test()", 1000); topValue = document.documentElement.scrollTop; } function test() { // 判断此刻到顶部的距离是否和

17.4K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    通过 JS 判断页面是否有滚动条的简单方法

    前言 最近在写插件的过程中,需要使用 JS 判断是否有滚动条,搜了一下,大致方法都差不多,但都有些啰嗦,代码不够简洁。最终通过参考不同方法,写了一个比较简单的方法。...在判断滚动条的同时也需要计算滚动条的宽度,通过本篇文章一并与大家分享。 为什么要判断滚动条 ?...判断滚动条的需求在弹窗插件中用的较多,因为弹窗大多会添加 overflow: hidden 的属性,如果页面比较长的话,添加这个属性之后页面会有晃动。...为了增强用户体验,通过判断是否有滚动条而添加 margin-left 属性以抵消 overflow: hidden 之后的滚动条位置。...判断是否有滚动条的方法 其实只需要一行 JS 就可以,测试兼容 IE7 function hasScrollbar() { return document.body.scrollHeight >

    8.2K90

    从零开始学 Web 之 移动Web(四)实现JD分类页面

    左侧栏可以上下滑动,如果滑动超出上下范围自动反弹回去 点击左侧栏每个项目,自动滚动左侧栏使得项目置顶 当点击项目可能使得超出滑动范围的时候,以滑动范围为准,当前点击的项目不必置顶。...2、项目分析 如何实现一个全屏页面,没有滚动条? 如下面的结构:大盒子1和大盒子2分为上下结构,小盒子3和小盒子4在大盒子2的内部,分为左右结构。 ? 那么如何排布,使得上下左右都没有滚动条呢?...:absolute;),,确实可以实现上下没有滚动条,但是大盒子的头部100px 的位置会被覆盖,所以再让大盒子2 padding-top: 100px; 就可以了。...// 封装移动端的tap事件 var fingerTap = { tap: function (dom, callback) { // 判断dom是否存在...实现点击操作 上面 tap.js 是我们自己封装的点击事件,其实在 Zepto 中,已经封装好了 tap 单击事件,我们可以直接使用。

    1.5K30

    移动端浏览器和微信浏览器上禁止body的滚动条

    ; position: fixed; } 这个就是完全的禁止上下滑动,没有滚动条,且在iOS的safari浏览器上完全不能上下滚,但是确发现微信浏览器上可以上下缩动(下面再解决)。...我最后发现,上面这种解决是普遍的浏览器做法,如果要更彻底一点,就直接使用js代码去控制touchmove的事件,直接精致,这个在微信和手机浏览器上完成可行。...代码如下: /*去掉手机滑动默认行为*/ $('body').on('touchmove', function (event) { event.preventDefault(); }); 我还收集了一些设置隐藏滚动条的方法...2、当跳出到手机浏览器上完全可以滑动。上面的思路实现:1、通过微信useragent来判断,如果是微信浏览器自动加入class去设置。2、非微信useragent就默认不加class。...具体实现:微信上,禁止上下缩滑: /*去掉手机滑动默认行为*/ $('body').on('touchmove', function (event) { event.preventDefault

    2.8K10

    滚动穿透的6种解决方案【已自测】

    因此还需要我们对弹层的可滚动区域的滑动事件做监听: 第一种情况,若向上滑动时,到达底部;或者第二种情况,若向下滑动时,已到顶部。 这两种情况任意一种发生时,就阻止滑动事件。 这段逻辑代码如下: ?...但是同样的问题是,需要判断滚动到顶部和滚动到底部的时候禁止滚动。否则,就和第二条一样,触碰到上下两端,弹窗可滚动区域的滚动条到了顶部或者底部,依旧穿透到body,使得body跟随弹窗滚动。...五、body滚动 + 弹层内部滚动[js-代码模拟上下滑动手势效果] 我想,既然我们监控弹层、监控touchY那么辛苦了已经,还差再辛苦一点,自己写一个模拟手势滚动效果嘛!...解决方案与思路: 具体制作思路写在js注释上。 1、交互代码 ? 2、禁掉弹窗的touchmove 的默认事件 ? 3、重写手势滑动效果 ?...思路就是把手势移动的长度添加到弹层上下移动的距离上。 5、可能需要多考虑的一点是,当用户一直上翻到底或者一直下拉到顶时,做一下极值的判断和限制。

    13.6K31

    后台管理tab栏滑动解决方案

    后台管理系统中比较常见的布局是左边菜单栏,右边tab切换栏,但是一般的tab组件不包含tab页过多的切换问题的,所以需要个性化实现,本文的实现方案是滑动鼠标滚轮绑定tab达到切换的效果,先上一个动态图看下效果... tab滑动栏布局代码如下 <div v-for="tab in tabList" v-on:click="changeTab...()方法获取),与已滚动长度比较,加入<em>判断</em>滚动方向,通过event.deltaY<em>判断</em>,向上滚动为负值(对应tab向左滚动),向下滚动为正值(对应tab向右滚动),调用tabmian对象的scrollLeft..."屏幕滚动条上下移动"行为) event.preventDefault(); var left = (table.scrollLeft() + 100);...(此处禁止鼠标滚轮行为关联到"屏幕滚动条上下移动"行为) event.preventDefault(); var left = (table.scrollLeft() -

    33630

    移动端H5实现上滑分页加载功能

    这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情 前言 想必掘友们应该都知道,pc 端的上下分页的一般都是通过点击页码来实现的。...实现过程 思路:要达到触底的条件就是:滚动条的总高度 = 等于可视区的高度+滚动条距离顶部的高度;掘友们应该都知道我们可以通过监听页面的滑动事件来获取这三个值,然后进行一些操作就实现这个功能。...具体实现的代码: 绑定监听的滑动事件函数 <!...this.total) { this.pageNo++ // 获取下一页的数据 this.getNextPageData() } } } 通过绑定监听滑动事件函数...,当页面滑动触底后,根据后端接口提供的数据判断当前页是否小于总页数,如果小于就获取下一页的数据。

    3.5K20

    从零开始学 Web 之 移动Web(五)touch事件的缺陷,移动端常用插件

    我们知道, touch 事件只能在移动端使用,这个我们无法改变,所以我们只能改变延时的问题,于是我们就引入了 "fastclick.js" 库文件,解决 click 的延时问题。...使用方式: 1、引入 fastclick.js 文件。...,可以在初始化的时候,将这些需求作为对象,填入第二个参数中,比如,增加滚轮上下滚动操作和显示滚动条的效果: var myScroll = new IScroll(".wrapper", { mouseWheel...: true, // 使用滚轮 scrollbars: true // 显示滚动条 }); 如此简单三步操作,就可以轻松实现你想要的功能。...2、swipe swipe.js 是一个比较有名的触摸滑动插件,它能够处理内容滑动,支持自定义选项,你可以让它自动滚动,控制滚动间隔,返回回调函数等。经常作为轮播图使用。

    3.2K20

    干货丨JS 经典实例收集整理

    一、跨浏览器事件 跨浏览器添加事件 //跨浏览器添加事件    function addEvent(obj,type,fn){        if(obj.addEventListener){            ...2.scrollTop() 为滚动条向下移动的距离3.document.documentElement.scrollTop 指的是滚动条的垂直坐标 4.document.documentElement.clientHeight...五、PageX和clientX PageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化 clientX:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始,即是以浏览器滑动条此刻的滑动到的位置为参考点...,随滑动条移动 而变化....判断字符串出现最多的字符,并统计次数 //js实现一个函数,来判断一个字符串出现次数最多的字符,并统计这个次数    function countStr(str){        var obj = {

    1.4K20

    移动端app开发问题及理解

    一般用于代替click事件 tap 手指碰一下屏幕触发 longTap 手指长按屏幕触发 singleTap 手指碰一下屏幕触发 doubleTap 手指双击屏幕触发 swip滑动事件...swipe 手指在屏幕上滑动触发 swipeLeft 手指在屏幕上左滑触发 swipeRight 手指在屏幕上右滑触发 swipeUp 手指在屏幕上上滑触发 swipeDown 手指在屏幕上下滑触发...可以改用beforeClose事件 回调函数有两个参数,第一个判断点击的是确认按钮还是取消按钮。第二个感觉是可以关闭模态框 移动端消息推送 消息推送跟设备走还是跟人走?...根据用户权限判断该用户是否可以收到消息的推送 app安装在设备上,跟设备走是根据设备的mac地址。根据mac地址判断该设备是否可以收到消息,给相应的设备推送消息。...js如何与app端交互 具体可看下这个 https://zhuanlan.zhihu.com/p/337890794 我的理解 首先了解下 app移动端网页运行在手机应用内嵌的浏览器引擎中,没有UI

    3.8K10

    移动端H5坑位指南

    判断横屏竖屏调整样式吗?...该解决方案监听用户是否做了双击操作,所以还是可直接使用click事件,而点击穿透就交给该fastclick自动判断。更多fastclick原理可自行百度,在此不作过多介绍。...弹窗打开后内部内容无法滚动 弹窗关闭后页面滚动位置丢失 Webview能上下滑动露出底色 当打开弹窗时给声明position:fixed;left:0;width:100%并动态声明top。...声明position:fixed会导致滚动条消失,此时会发现虽然无滑动穿透,但页面滚动位置早已丢失。...pageshow事件在每次页面加载时都会触发,无论是首次加载还是再次加载都会触发,这就是它与load事件的区别。pageshow事件暴露的persisted可判断页面是否从BFCache里取出。

    3.4K10

    QQ空间缓存图片_QQ空间原图

    今天偶然打开PC端QQ空间时,我发现了一种似乎更好的方式 —— 鼠标移入时在范围内上下滚动图片预览,移出时停止滚动。...它们只作用在window对象上,返回窗口的文档显示区的高度(同系的还有一个 window.innerWidth ) 相对的两个 outerWidth 和 outerHeight ,用于获取加上工具条与滚动条窗口的宽度与高度... 这里class为before和after的两个标签就是前面所说的“占位”元素(至于QQ是怎么实现的,等笔者稍作研究后再回来更新),它们负责判断...但是如果你仔细看,你会发现由于transition动画效果的时间是固定的,在向上/下滑动过短的情况下再向下/上滑动那么滑动的会特别慢! !...再回到PC端QQ空间 —— 我们发现,它的transition时间竟然是动态变化的: 这…我猜测可能是设定了一个从上到下固定的时间,然后在JS中按照滑出部分高度(已经滑动的距离)占总高度的比例动态调节时间

    6.3K20
    领券