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


本文摘自PHP中文网,作者不言,侵删。

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

<!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;

            width: 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>

阅读剩余部分

相关阅读 >>

html链接标签

HTML5 localstorage知识点总结

html怎么设置边框

html如何实现tab页面切换

html font标签怎么设置字体样式?利用css控制文字大小的方法

html标签的含义

分享javascript spread运算符的10种用法

HTML5、css实现文字阴影效果实例分享

html怎么导入css文件

html怎么隐藏控件

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...