原生js仿写手机端下拉刷新

 更新时间:2021年08月18日 14:13:12   作者:前端挖掘机  
这篇文章主要为大家详细介绍了原生js仿写手机端下拉刷新,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了js仿写手机端下拉刷新的具体代码,供大家参考,具体内容如下

话不多说先看效果图:

当下拉小于40px时显示文字:

当下拉大于40px时现实文字

松开时显示文字

实现原理

<div class="content">
        <div class="left"></div>
        <div class="top">
            <p id="p"></p>
            <div id="buttom">
            </div>
        </div>
</div>

CSS:

<style>
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    
    .content {
        width: 350px;
        height: 600px;
        position: relative;
        margin: 0 auto;
    }
    
    .top {
        width: 100%;
        height: 100%;
        background-color: #ccc;
        border: 12px solid black;
        border-radius: 10px;
        overflow: hidden;
        margin-top: 50px;
        border-top: 35px solid black;
    }
    
    #buttom {
        width: 100%;
        height: 100%;
        background-color: rgb(47, 196, 47);
        position: relative;
        padding: 10px;
        border-top: 2px solid red;
    }
    
    #p {
        display: inline-block;
        height: 30px;
        width: 100%;
        text-align: center;
        line-height: 30px;
        color: rgb(2, 2, 2);
        font-size: 15px;
        position: absolute;
        top: 40px;
        left: 0;
        display: none;
    }
    
    .left {
        height: 10px;
        width: 100px;
        background-color: #ccc;
        position: absolute;
        top: 12px;
        left: 110px;
        border-radius: 5px;
    }
    
    .left::after {
        display: inline-block;
        content: "";
        width: 15px;
        height: 15px;
        background-color: #ccc;
        border-radius: 50%;
        position: absolute;
        left: 120px;
        top: -2px;
    }
</style>

JS:

<script>
    var but = document.getElementById("buttom");
    var p = document.getElementById("p");
    var moveY = 0 //初始化按下时的位置
    var tops = 0; //初始化tops。tops为下拉的距离
    but.onmousedown = function(e) { //鼠标按下事件
        moveY = e.offsetY //获取鼠标按下时Y轴的位置
        but.onmousemove = function(e) { //鼠标移动事件
            p.innerHTML = "下拉刷新"
            p.style.display = "block"; //鼠标移动时现实提升文字并且让文字为“下拉刷新”
            tops = e.offsetY - moveY //tops大小为鼠标Y轴移动的距离减去按下时的距离
            if (tops < 0) {
                tops = 0 //阻止上拉
            } else if (tops > 40) {
                //tops大于40时提示可以松开鼠标马上刷新
                p.innerHTML = "松开立刻刷新"
            }
            this.style.top = tops + 'px'; //让元素相对定位的top值等于tops的值
            // console.log(tops)
        }
        but.onmouseup = function() { //鼠标松开事件
            but.onmousemove = null //清空鼠标移动事件,阻止元素继续跟着鼠标移动
            if (tops < 40) {
                //如果下拉距离b不足40px的话,元素马上复位不进行刷新,并且提示文字消失
                this.style.top = 0;
                p.style.display = "none"
            } else {
                //如果下拉距离大于40px提示正在刷新
                p.innerHTML = "正 在 刷 新 . . ."
                setTimeout(() => { //延迟1.3秒后复位,这里做的只是模仿,实际项目需要在重新请求数据成功后复位
                    tops = 0
                    this.style.top = tops;
                    p.style.display = "none"
                }, 1300);
            }
        }
    }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 浅析JavaScript中严格模式的使用

    浅析JavaScript中严格模式的使用

    在ECMAScript5标准中,JavaScript提出了严格模式的概念(Strict Mode),本文就来和大家简单讲讲JavaScript中严格模式的具体使用,感兴趣的可以了解一下
    2023-05-05
  • 解决前端跨域问题方案汇总

    解决前端跨域问题方案汇总

    这篇文章主要介绍了解决前端跨域问题8种方案的相关资料,需要的朋友可以参考下
    2016-11-11
  • JavaScript indexOf忽略大小写

    JavaScript indexOf忽略大小写

    javascript中indexOf函数是严格区分大小写的,也就是当我们使用javascript的indexOf函数的时候, 是无法进行大小写同时进行的。为我们的一些字符串操作造成了困难。
    2009-03-03
  • javascript实现的textarea运行框效果代码 不用指定id批量指定

    javascript实现的textarea运行框效果代码 不用指定id批量指定

    今天在写一个网页的时候用到了N多嵌套在textarea标签里的代码,定义双击运行其内的代码段。但是每次创建一个这样的可运行的实例都要给textarea元素自定义一个id值和写入双击事件,好不麻烦。
    2009-12-12
  • 原生js验证简洁注册登录页面

    原生js验证简洁注册登录页面

    这篇文章主要为大家详细介绍了原生js验证简洁美观注册登录页面的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • JavaScript编写推箱子游戏

    JavaScript编写推箱子游戏

    本文给大家介绍的是使用javascript来实现一款经典的老游戏--推箱子,主要侧重于实现的思路,最后附上源码给大家。
    2015-07-07
  • Object.keys() 和 Object.getOwnPropertyNames() 的区别详解

    Object.keys() 和 Object.getOwnPropertyNames() 的区别详解

    这篇文章主要介绍了Object.keys() 和 Object.getOwnPropertyNames() 的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 8个绝妙的JS字符串处理技巧分享

    8个绝妙的JS字符串处理技巧分享

    当处理JavaScript字符串时,有许多有趣的技巧可以提高你的编码效率,这篇文章将介绍一些有关JavaScript字符串的技巧,让你在字符串操作方面更加娴熟
    2023-10-10
  • 微信 jssdk 签名错误invalid signature的解决方法

    微信 jssdk 签名错误invalid signature的解决方法

    这篇文章主要介绍了微信 jssdk 签名错误invalid signature的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • JavaScript迭代器的含义及用法

    JavaScript迭代器的含义及用法

    这篇文章主要介绍了JavaScript迭代器的含义及用法,迭代器就是为实现对不同集合进行统一遍历操作的一种机制,只要给需要遍历的数据结构部署Iterator接口,通过调用该接口,或者使用消耗该接口的API实现遍历操作。,需要的朋友可以参考下
    2019-06-06

最新评论