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>

  

时间: 2024-12-11 12:59:13

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

HTML5+ 手机设备的信息, 屏幕信息, 音量信息, 系统信息的获取 device, screen, display, os

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>WebApp启动页</title> <script type

[HTML5]手机屏幕分辨率和浏览器分辨率

在使用CSS3的中有如下类似代码 Html代码 @media screen and (max-width:480px){ -- } 意思是在最大宽度为480px的设备上应用{}里面的样式.这里的width,注意是手机浏览器的分辨率,而不是手机设备的屏幕分辨率.比如苹果4的手机屏幕分辨率是960x640.而其自带的Safari浏览器的分辨率是320*480.我们可以通过如下代码检测所用的浏览器的分辨率: Js代码 $("#info").html("(您的浏览器的分辨率为:&qu

HTML5手机重力与方向感应的应用——摇一摇效果

http://www.helloweba.com/view-blog-287.html HTML5有一个重要特性:DeviceOrientation,它将底层的方向和运动传感器进行了高级封装,它使我们能够很容易的实现重力感应.指南针等有趣的功能.本文将结合实例给大家介绍使用HTML5的重力运动和方向传感器实现手机摇一摇效果. DeviceOrientation包括两个事件: 1.deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度.方

html5手机Web单页应用实践--起点移动阅读

一开始以hybrid形式做了一个android的小说阅读客户端,叫4G阅读.而后由于业务需求,要迅速实现纯手机html5 版的,所以就直接在原先客户端内内嵌的网页进行改版,快速实现以后在优化的过程中发现越改越多越改越多- 注意此web应用只支持android及iphone内的浏览器,及PC或mac上的chrome,safari,firefox等支持html5的浏览器.IE10以上浏览器 这算是试验版了吧,以前没这么弄过.. 手机访问http://crapi.4gshu.com:8096/4g-r

50个最受网友欢迎的HTML5资源下载列表

完整附件下载地址:http://down.51cto.com/data/413867 附件预览: HTML 5游戏源码精选(共含9个游戏源码) http://down.51cto.com/zt/227 15个HTML5入门经典资料合集 http://down.51cto.com/zt/553 HTML 5基础入门学习教程 http://down.51cto.com/zt/234 初学者必知的HTML5入门级技巧[技术文档]下载 http://down.51cto.com/data/297883

Microsoft Virsual 获取设备列表

实验过程: 1.打开Microsoft Visual Studio 2010,点击"文件"--"新建"--"项目",选择"MFC应用程序"并设置项目名. 2.在界面上设置提示信息--打开"工具箱"选择"combo box",调整大小. 3.删除C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe,然后运

关于Android的Build类——获取Android手机设备各种信息

经常遇到要获取Android手机设备的相关信息,来进行业务的开发,比如经常会遇到要获取CPU的类型来进行so库的动态的下载.而这些都是在Android的Build类里面.相关信息如下: private String loadSystemInfo() { StringBuilder sb = new StringBuilder(); sb.append("主板:" + Build.BOARD + "\n"); sb.append( "系统启动程序版本号:&q

Android点击列表后弹出输入框,所点击项自动滚动到输入框上方(类似微信的评论)

Android点击列表后弹出输入框,所点击项自动滚动到输入框上方 使用微信的朋友圈会发现,点击某一条评论后输入框会弹出来,然后所点击的那一项会自动地滚动到输入框上方的位置,这样如果开始所点击的评论在屏幕很下方的话,就不会被输入框遮住,虽然微信这一点在我的MX2频繁点几次后滚动的位置就完全错误了,但据说在有些机型上效果还不错,还有其他地方可能会有类似的需求,比如登录时软键盘可能会把登录按钮遮住. 要实现这个功能需要注意的地方主要有两点: 什么时候进行滚动操作,以及有可能还需要在输入框消失时回滚回去

基于HTML5手机登录注册表单代码

分享一款基于HTML5手机登录注册表单代码.这是一款鼠标点击注册登录按钮弹出表单,适合移动端使用.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="demo"> <nav class="main_nav"> <ul> <li><a class="cd-signin" href="#0">登录</a></li&