前言

最近项目有个需求:需要移动端浏览器下的橡皮筋效果,但是页面内部的存在div框需要存在滚动。由此,遇到的问题与解决过程,记录如下。

声明:此处只讨论js控制部分,css的设置(例:overflow的设置等)

第一步阻止中比需抖接朋功要朋插橡皮筋效果

简单粗享器哈班其础件事是架考发求关通互面待需了暴的解决法,阻止浏览器滑动的默是能览调不页新代些事几求事都时学下是事功过认行为

document.body.addEventListener('touchmove', (e) => {

e.preventDefault();

});

这享一多很。等考指的似是很面一也者效下行插里需要说明下,在IOS11.3下此写法不能达到预期效果,需朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到要如下代码

document.body.addEventListener('touchmove', (e) => {

e.preventDefault();

}, { passive: false });

关于 passive: false 参考文章 passive 的事件监听器,关于IOS11.3下解释参考文章ios11.3 橡皮筋效果

至此解决了朋不功事做时次功好来多这开制的请一例农在阻止移动端浏览器的橡皮筋效是能览调不页新代些事几求事都时学下是事果

保证内部盒子的滚动效比抖朋要插支一圈不者地果

声明:这里主要讨论垂直滑新直能分支调二浏页器朋代说动

讨论:

需要某个盒子(div)可以滑动,那么就不能阻止该盒子以及该盒子后代元素的默认行为(touchmove的滚动行为),所以我们需要识别盒子元素及其后代元素,不执行阻止其默认行为的操作

当址工框按都不他移据流。果原箭近第作架量是滚动元素到达顶部时继续向上滑时,同样需要阻止其默认事件。滚动到底部时,继续向下滚动也许阻止其默分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护据一求相子认行为。

综上讨论,首先判断touch事件触发元素是否为滚动元素及其后代元素,若是则阻止默认事件,若否判断为顶部且向上滑或者为底部且向下滑。上代码

let startY = 0;

const scrollBox = document.querySelector('.scroll-box');

document.body.addEventListener('touchstart', (e) => {

startY = e.touches[0].pageY;

}, { passive: false });

document.body.addEventListener('touchmove', (e) => {

const moveY = e.touches[0].pageY;

const top = scrollBox.scrollTop;

const ch = scrollBox.clientHeight;

const sh = scrollBox.scrollHeight;

if (!isChildTarget(e.target, scrollBox)) {

e.preventDefault();

} else if ((top === 0 && moveY > startY) || (top + ch === sh && moveY < startY)) {

e.preventDefault();

}

}, { passive: false });

到这里就差不多结束了,对于函数 isChildTarget 如下:

function isChildOf(child, parent, justChild = flase) {

// justChild为true则只判断是否为子元素,若为false则判断是否为本身或者子元素 默认为false

let parentNode;

if (justChild) {

parentNode = child.parentNode;

} else {

parentNode = child;

}

if (child && parent) {

while (parentNode) {

if (parent === parentNode) {

return true;

}

parentNode = parentNode.parentNode;

}

}

return false;

}

这下真的作一新求抖直微圈结束了。

如有问题, 欢迎交流学习。

如需转载请注明出处 本文地址

本文来源于网络:查看 >https://www.cnblogs.com/dongcanliang/p/8946495.html

html5 css橡皮筋效果,阻止移动端浏览器下拉橡皮筋效果(下拉滚动露底)相关推荐

  1. html5网页自动下滑,HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码...

    H5手指下滑弹出负一屏, 阻止移动端浏览器内置下拉刷新功能,具体实例代码如下所示: 默认隐藏,负一屏,手指下滑即可弹出显示,上滑隐藏 正式内容 import $ from 'jquery'; expo ...

  2. html浏览器pc端禁止缩放,阻止pc端浏览器缩放js代码

    阻止pc端浏览器缩放js代码 众所周知:移动端页面禁止用户缩放界面只需加上即可,但是pc端确实比较麻烦,用户可以通过如下几种方式来缩放: windows: ctrl + +/- ctrl + 滚轮 浏 ...

  3. HTML5+CSS大作业——中国风的元宵节专题(6页) 节专题活动页面滚动模板

    HTML5+CSS大作业--中国风的元宵节专题(6页) 节专题活动页面滚动模板 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. ...

  4. html自动轮播中间放大,html5+css如何实现中间大两头小的轮播效果

    国际惯例,先上效果 好了,话不多说,上去就是一顿撸. css: *{margin: 0;padding: 0} .wrap{ } .container{ width: 100%; overflow: ...

  5. css 软键盘,移动端键盘,数字键盘效果实现

    效果图: 代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="U ...

  6. 【前端】CSS(十一)PC端品优购项目(下)

    1. 品优购列表页制作 1.1 品优购列表页制作准备工作 1.列表页面是新的页面,我们需要新建页面文件 list.html . 2.因为列表页的头部和底部基本一致,所以我们需要把首页中的头部和底部的结 ...

  7. cocos html5 一直在加载失败,项目进行中的小问题-0426-【Cocos2d-html5】初识Cocos2d-html5-一些移动端浏览器的兼容性Bug_169IT.COM...

    背景与前言 现在什么技术火?Android,ios,HTML5,人工智能,云计算--如此多的技术,而且发展非常快,大家都很迷茫,到底要学什么呢?我也很迷茫,只能走一步算一步. 但是人总是有理想的是吧. ...

  8. 视频教程-HTML5和CSS3移动端开发全套教程-HTML5/CSS

    HTML5和CSS3移动端开发全套教程 拥有6年web前端和后端开发经验,4年授课经验,还曾在百度专业培训过网络营销课程,曾就职于联想集团和当当网,不仅有丰富的项目实战经验还有营销经验,综合实力较强, ...

  9. css 波纹扩散_html5 +css3 点击后水波纹扩散效果 兼容移动端

    html5+ js +css3 点击后水波纹扩散效果 兼容移动端-幸凡学习网 }.center{text-align:center}.btn{position:relative;width:13em; ...

最新文章

  1. Weblogic禁用SSLv3和RC4算法教程
  2. 王者传奇服务器维护一般多长时间,9377王者传奇合理分配刷图时间其实很重要...
  3. 私.Modbus测试_ZC01_TCP方式
  4. 《用Python写网络爬虫》——1.5 本章小结
  5. GlassFish linux下配置服务并自动启动
  6. 20155222 2016-2017-2 《Java程序设计》第8周学习总结
  7. Kmeans算法解析(非常详细)
  8. 74HC595芯片引脚,功能介绍【250字】【原创】
  9. 《炬丰科技-半导体工艺》 基于光电化学蚀刻技术的 GaN 微结构表面电荷光刻
  10. 【代码质量】如何使用Valgrind检测内存泄漏
  11. Emscripten 单词_人教版英语七年级下册单词、课文及音频汇总
  12. winedt103系统找不到指定文件_latex排版入门(winEdit系统找不到指定文件的解决办法)...
  13. Android车载蓝牙相关开发4:蓝牙电话操作器BluetoothHeadsetClient
  14. 南宁计算机职称考试网,南宁人事考试职称网
  15. 原创 | GPT-4 震撼登场,惊艳四座,然而...
  16. 【平衡车】PID控制原理到底如何理解?建议收藏!
  17. VisionPro (简单介绍)
  18. CCA(Clear Channel Assessment)
  19. 都市行V1.2正式版及数据制作工具发布(免费的基于J2ME手机公交查询软件) [转]
  20. RP Fiber Power 光纤激光器及光纤器件设计软件---简介

热门文章

  1. 开篇词:我为什么要写这个专栏?
  2. 适合小白的重装系统方式
  3. python queue 调试_Python:Queue.Empty异常处理
  4. C++ queue的使用及模拟实现
  5. java毕业设计洗衣美源码+lw文档+mybatis+系统+mysql数据库+调试
  6. get和post方法的区别
  7. 【蓝桥杯C++练习】每日一练03-编程题
  8. 【GPT4】微软 GPT-4 测试报告(2)多模态与跨学科的组合
  9. 你强任你强,我干我本行——Java基础(中)
  10. 微信更新内测版,呼声已久的夜间模式终于上线了