How to disable rubber band in iOS web apps?

前端 未结 8 1639
夕颜
夕颜 2020-12-01 00:50

This:

$(\'body\').on(\'touchmove\', function(e) { e.preventDefault(); });

Works, but will disable scrolling throughout the whole page, whic

8条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-01 01:52

    Finally I mixed some methods and these codes are the working version. But you must include the hammer.js

    CSS

    .scrollable{
        overflow:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;
        *{-webkit-transform:translate3d(0,0,0);}
    }
    

    JAVASCRIPT

    $(document).on("touchmove",function(e){
        e.preventDefault();
    });
    $("body").on("touchstart",".scrollable",function(e){
        if(e.currentTarget.scrollTop===0){
            e.currentTarget.scrollTop = 1;
        }else if(e.currentTarget.scrollHeight === e.currentTarget.scrollTop + e.currentTarget.offsetHeight){
            e.currentTarget.scrollTop-=1;
        }
    });
    $("body").on("touchmove",".scrollable",function(e){
        e.stopPropagation();
    });
    
    $("body").hammer().on("pinch",function(e){
        e.gesture.preventDefault();
    });
    

提交回复
热议问题