禁止橡皮筋效果

Posted qqprincekin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了禁止橡皮筋效果相关的知识,希望对你有一定的参考价值。

 1 (function (global) 
 2   let startY = 0
 3   let enabled = false
 4   let supportsPassiveOption = false
 5   try 
 6     let opts = Object.defineProperty(, ‘passive‘, 
 7       get: function () 
 8         supportsPassiveOption = true
 9       
10     )
11     window.addEventListener(‘test‘, null, opts)
12    catch (e) 
13     // console.log(‘false‘)
14   
15   const handleTouchmove = function (evt) 
16     let el = evt.target
17     let zoom = window.innerWidth / window.document.documentElement.clientWidth
18     if (evt.touches.length > 1 || zoom !== 1) 
19       return
20     
21     while (el !== document.body && el !== document) 
22       let style = window.getComputedStyle(el)
23       if (!style) 
24         break
25       
26       if (el.nodeName === ‘INPUT‘ && el.getAttribute(‘type‘) === ‘range‘) 
27         return
28       
29       let scrolling = style.getPropertyValue(‘-webkit-overflow-scrolling‘)
30       let overflowY = style.getPropertyValue(‘overflow-y‘)
31       let height = el.clientHeight
32       // let height = parseInt(style.getPropertyValue(‘height‘), 10)
33       let isScrollable = scrolling === ‘touch‘ && (overflowY === ‘auto‘ || overflowY === ‘scroll‘)
34       let canScroll = el.scrollHeight > el.offsetHeight
35       if (isScrollable && canScroll) 
36         let curY = evt.touches ? evt.touches[0].screenY : evt.screenY
37         let isAtTop = (startY <= curY && el.scrollTop === 0)
38         let isAtBottom = (startY >= curY && el.scrollHeight - el.scrollTop === height)
39         if (isAtTop || isAtBottom) 
40           evt.preventDefault()
41         
42         return
43       
44       el = el.parentNode
45     
46     evt.preventDefault()
47   
48   const handleTouchstart = function (evt) 
49     startY = evt.touches ? evt.touches[0].screenY : evt.screenY
50   
51   const enable = function () 
52     window.addEventListener(‘touchstart‘, handleTouchstart, supportsPassiveOption ?  passive: false  : false)
53     window.addEventListener(‘touchmove‘, handleTouchmove, supportsPassiveOption ?  passive: false  : false)
54     enabled = true
55   
56   const disable = function () 
57     window.removeEventListener(‘touchstart‘, handleTouchstart, false)
58     window.removeEventListener(‘touchmove‘, handleTouchmove, false)
59     enabled = false
60   
61   const isEnabled = function () 
62     return enabled
63   
64   let testDiv = document.createElement(‘div‘)
65   document.documentElement.appendChild(testDiv)
66   testDiv.style.WebkitOverflowScrolling = ‘touch‘
67   let scrollSupport = ‘getComputedStyle‘ in window && window.getComputedStyle(testDiv)[‘-webkit-overflow-scrolling‘] === ‘touch‘
68   document.documentElement.removeChild(testDiv)
69   if (scrollSupport) 
70     enable()
71   
72   let preventOverScroll = 
73     enable: enable,
74     disable: disable,
75     isEnabled: isEnabled
76   
77   if (typeof module !== ‘undefined‘ && module.exports) 
78     module.exports = preventOverScroll
79   
80   if (typeof global.define === ‘function‘) 
81     (function (define) 
82       define(‘iNoBounce‘, [], function () 
83         return preventOverScroll
84       )
85     (global.define))
86    else 
87     global.preventOverScroll = preventOverScroll
88   
89 (this))

 

以上是关于禁止橡皮筋效果的主要内容,如果未能解决你的问题,请参考以下文章

禁用 Phonegap 中 DIV 的弹跳/橡皮筋效果

QgraphicsView 橡皮筋拖动效果缩放行为

Skyline实现橡皮筋效果绘制矩形框

IOS端小程序橡皮筋回弹效果解决方案及坑总结(uni-swipe-action在IOS端的坑)

IOS端小程序橡皮筋回弹效果解决方案及坑总结(uni-swipe-actiond在IOS端的坑)

canvas 橡皮擦效果制作