css3 html5 手机设备 列表的弹回和加速移动

<style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        .min {
            width: 350px;
            height: 400px;
            overflow: hidden;
        }

            .min ul {
                list-style: none;
                display: block;
            }

                .min ul li {
                    height: 30px;
                }
    </style>
<body>
    <div class="min">
        <ul>
            <li>21212125</li>
            <li>12</li>
            <li>343</li>
            <li>5345</li>
            <li>53</li>
            <li>435</li>
            <li>ert</li>
            <li>345</li>
            <li>eg</li>
            <li>grrrrrr</li>
            <li>3453</li>
            <li>ret</li>
            <li>345</li>
            <li>21212125</li>
            <li>456</li>
            <li>56</li>
            <li>rt</li>
            <li>67</li>
            <li>768</li>
            <li>789</li>
            <li>dfg</li>
            <li>789</li>
            <li>21212gggggg125</li>
            <li>21212125</li>
            <li>789</li>
            <li>eeqqqqqqqq</li>
            <li>789</li>
            <li>gf</li>
            <li>ttgg</li>
            <li>sdf</li>
            <li>789</li>
            <li>21212125</li>
            <li>dgdgdgd</li>
            <li>90</li>
            <li>21212125</li>
            <li>-90</li>
            <li>21212125</li>
            <li>21212125</li>
            <li>2121902125</li>
            <li>90-</li>
            <li>21212125</li>
            <li>end</li>
            <li>gf</li>
            <li>ttgg</li>
            <li>sdf</li>
            <li>789</li>
            <li>21212125</li>
            <li>dgdgdgd</li>
            <li>90</li>
            <li>21212125</li>
            <li>-90</li>
            <li>21212125</li>
            <li>21212125</li>
            <li>2121902125</li>
            <li>90-</li>
            <li>21212125</li>
            <li>end</li>
            <li>gf</li>
            <li>ttgg</li>
            <li>sdf</li>
            <li>789</li>
            <li>21212125</li>
            <li>dgdgdgd</li>
            <li>90</li>
            <li>21212125</li>
            <li>-90</li>
            <li>21212125</li>
            <li>21212125</li>
            <li>2121902125</li>
            <li>90-</li>
            <li>21212125</li>
            <li>end</li>
            <li>gf</li>
            <li>ttgg</li>
            <li>sdf</li>
            <li>789</li>
            <li>21212125</li>
            <li>dgdgdgd</li>
            <li>90</li>
            <li>21212125</li>
            <li>-90</li>
            <li>21212125</li>
            <li>21212125</li>
            <li>2121902125</li>
            <li>90-</li>
            <li>21212125</li>
            <li>end</li>
            <li>gf</li>
            <li>ttgg</li>
            <li>sdf</li>
            <li>789</li>
            <li>21212125</li>
            <li>dgdgdgd</li>
            <li>90</li>
            <li>21212125</li>
            <li>-90</li>
            <li>21212125</li>
            <li>21212125</li>
            <li>2121902125</li>
            <li>90-</li>
            <li>21212125</li>
            <li>end</li>
            <li>gf</li>
            <li>ttgg</li>
            <li>sdf</li>
            <li>789</li>
            <li>21212125</li>
            <li>dgdgdgd</li>
            <li>90</li>
            <li>21212125</li>
            <li>-90</li>
            <li>21212125</li>
            <li>21212125</li>
            <li>2121902125</li>
            <li>90-</li>
            <li>21212125</li>
            <li>end9999999999999</li>
        </ul>
    </div>   
</body>

  

    <script>
        $.fn.touchEvn = function () {

            return this.each(function () {
                var $this = $(this);
                var $touchtarge = $this.children('ul');
                var _ = this;
                _.startY = 0;
                //最高
                _.maxHeight = $touchtarge[0].scrollHeight - $this.height();
                _.StartSpanTime = undefined;
                _.LastTop = 0;
                $touchtarge.on('touchstart', function (e) {
                    _.startY = event.targetTouches[0].pageY;
                    _.StartSpanTime = event.timeStamp;

                }).on('touchmove', function (e) {
                    $(this).css({ 'transition': 'none' });
                    //移动的长度
                    var len = _.startY - event.targetTouches[0].pageY;
                    //最终的长度
                    len = (_.LastTop + len) * -1;
                    $(this).css('marginTop', len);

                }).on('touchend', function (e) {
                    //最终停留的位置
                    _.LastTop = _.LastTop + (_.startY - event.changedTouches[0].pageY);
                    $(this).css({ 'transition': 'margin 1s', 'transition-timing-function': 'cubic-bezier(0.1,0.3,0.5,1)' });
                    if (_.LastTop < 0) {
                        _.LastTop = 0;
                        $(this).css('marginTop', _.LastTop);
                    } else if (_.LastTop > _.maxHeight) {
                        _.LastTop = _.maxHeight;
                        $(this).css('marginTop', _.LastTop * -1);
                    }
                    else {
                        //减速行驶
                        var endLen = _.checkSpeen(event.timeStamp - _.StartSpanTime, _.startY - event.changedTouches[0].pageY);
                        _.LastTop = _.LastTop + endLen;
                        $(this).css('marginTop', _.LastTop * -1);
                    }
                }).on('transitionend',function(){
          if (_.LastTop < 0) {
_.LastTop = 0;
$(this).css('marginTop', _.LastTop);
} else if (_.LastTop > _.maxHeight) {
_.LastTop = _.maxHeight;
$(this).css('marginTop', _.LastTop * -1);
}
          });

                //计算减速行驶距离
                _.checkSpeen = function (t, s, maxlen) {
                    var v = s / t;
                    //惯性距离
                    var len = 800 * v / 11;                   
                    if (len > maxlen) {
                        return maxlen;
                    }
                    else {
                        return len;
                    }
                }

            });
        }

        $('.min').touchEvn();
    </script>

  

 

转载于:https://www.cnblogs.com/sxmny/p/3959508.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值