html5实现移动端下拉刷新(原理和代码)

摘要:
移动终端上的下拉刷新是一个非常常见的功能,许多开源库也实现了这一功能。然而,为了学习,我最好先写一个例子。使用一些触摸事件和一些DOM属性CSS3。true:false;}}使用CSS3中的变换和动画。

这篇文章给大家介绍的内容是关于html5实现移动端下拉刷新(原理和代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

移动端的下拉刷新是一个很常见的功能,也有许多开源库实现了这个功能,不过为了学习,还是先自己写一个例子学习一下。其中用到了一些touch事件和一些DOM属性CSS3属性。直接上代码,代码里面有注释。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Document</title>
    <style type="text/css">
        html,
        body,
        header,
        p,
        main,
        p,
        span,
        ul,
        li {
            margin: 0;
            padding: 0;
        }

        #refreshContainer li {
            background-color: #eee;
            margin-bottom: 1px;
            padding: 20px 10px;
        }

        .refreshText {
            position: absolute;
             100%;
            line-height: 50px;
            text-align: center;
            left: 0;
            top: 0;
            transform: translateY(-50px);
        }
    </style>
</head>
<body>
    <main class="parent">
        <p class="refreshText"></p>
        <ul id="refreshContainer">
            <li>111</li>
            <li>222</li>
            <li>333</li>
            <li>444</li>
            <li>555</li>
            <li>111</li>
            <li>222</li>
            <li>333</li>
            <li>444</li>
            <li>555</li>
            <li>111</li>
            <li>222</li>
            <li>333</li>
            <li>444</li>
            <li>555</li>
        </ul>
    </main>
    <script type="text/javascript">
        window.onload = function(){

            //1.获取到列表的dom,刷新显示部分的dom,列表父容器的dom
            let container = document.querySelector('#refreshContainer');
            let refreshText = document.querySelector('.refreshText');
            let parent = document.querySelector('.parent');

            //2.定义一些需要常用的变量
            let startY = 0;//手指触摸最开始的Y坐标
            let endY = 0;//手指结束触摸时的Y坐标
            
            //3.给列表dom监听touchstart事件,得到起始位置的Y坐标
            parent.addEventListener('touchstart',function(e){
                startY = e.touches[0].pageY;
            });

            //4.给列表dom监听touchmove事件,当移动到一定程度需要显示上面的文字
            parent.addEventListener('touchmove',function (e) { 
                if(isTop() && (e.touches[0].pageY-startY) > 0){
                    console.log('下拉了');
                    refreshText.style.height = "50px";
                    parent.style.transform = "translateY(50px)";
                    parent.style.transition = "all ease 0.5s";
                    refreshText.innerHTML = "释放立即刷新...";
                }
            });

            //5.给列表dom监听touchend事件,此时说明用户已经松开了手指,应该进行异步操作了
            parent.addEventListener('touchend',function (e) { 
                if(isTop()){
                    refreshText.innerHTML = "正在刷新...";
                    setTimeout(function(){
                        parent.style.transform = "translateY(0)";
                        console.log('成功刷新');
                    },2000)
                }

                return;
            })

            function isTop(){
                var t = document.documentElement.scrollTop||document.body.scrollTop;
                return t === 0 ? true : false;
            }
        }
    </script>
</body>
</html>
  • 其中用到了CSS3中的transform和animate。因为既然都是移动端了,这些东西基本上都支持了。

  • 具体看代码吧,注释也有。本文只是讲解原理,后续将会对其进行封装成一个对象。方便直接调用。

问题:ios浏览器safari不支持let

转自:http://www.php.cn/html5-tutorial-407309.html

免责声明:文章转载自《html5实现移动端下拉刷新(原理和代码)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇STM32CubeMx——ADC多通道采集HTML input标签required自定义提示文本且防止多次弹出提示下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTML5--(3)过渡+动画+颜色+文本

一.过渡transition transition-property指定属性名称(如width、height、background-color、内外边距)all 所有属性都将获得过渡效果(默认) attr 过渡效果的CSS属性名称列表,列表以逗号分隔 none 没有属性会获得过渡效果 transition-duration过渡时间3s (默认慢快...

多屏适应响应式布局方案,响应式、自适应布局区别 完整的思维导图

多屏适应响应式布局方案,响应式、自适应布局区别 响应式布局 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,一个网站能够兼容多个终端,而不是为每个终端做一个特定的版本,不需要分配子域名。可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移动设备的普及,用大势所趋来形容也不为过。 响应式布局能够兼容不同屏幕...

8款最新CSS3表单 环形表单很酷

当我们在网站上注册登录还是提交评论,都需要用到表单,今天我们来分享8款最新CSS3表单,有几个效果很酷很特别,有些也非常实用,一起来看看。 1、CSS3环形特色表单 转圈切换表单焦点 这款CSS3表单非常有特色,估计各位不太会看到过,这是一款CSS3环形特色表单,整个环形由一个个输入框组成,当用鼠标激活输入框焦点时,环形圈即会转到该表单项。我们也可以用t...

如何设计一个优秀的移动支付流程?

越来越多的用户通过智能手机来发现和浏览商品,与此同时,一个更大的问题产生了——这些用户是否愿意在他们的移动设备上完成支付呢?——答案马上揭晓。拿美国为例,2012年在移动电商(m-commerce)上的消费同比增长了81%, 达到了惊人的250亿美元。 而这当中,移动网页端对应用占据了压倒性优势。用户更愿意通过移动端网站来搜索比价,浏览产品,参与促销活动及...

响应式网页图片库设计的基本规则和技巧

响应式设计无疑是当前网页设计领域当中,不可忽略的必要组成部分,而响应式网页中的图片显示又是老生常谈的问题,许多争论集中在响应式网站的图片应当怎么展示,继续延伸开来,那么响应式网站中的图片库应当如何设计呢? 相比于单个图片,图库的展示无疑更加复杂,牵涉到的变量更多,所以实现起来也更加麻烦费神,接下来,我们来看看如果要设计响应式的图片库,有哪些值得注意的基本规...

HTML5 空白页面模板(下载)

我经常玩玩HTML5,所以自己做了个空白页面的模板,方便使用。 模板里面包含了: 1、JQuery 2、IE HTML5 Hack 3、CSS 4、Metadata 5、网页背景网格图片(玩Canvas用的:) 模板设计参考了这里的内容。 下载模板:点击链接。 Technorati Tags: HTML5...