js 实现下拉刷新

js 部分,部分用jq代替
let state = undefined // start | moving | end
let touchStartY = undefined;
let touchTrigger = 100;
let dist = 0
const tip = $('#tip-wrap')
const tipmsg = document.querySelector('#tip')
const wrap = document.querySelector('#wrap')

window.addEventListener('touchstart', (e) => {
    // console.log('touchstart', e.touches)

    if (!window.scrollY)
        touchStartY = e.touches[0].screenY;
    state = 'start'
}, false)
var timer;

window.addEventListener('touchmove', (e) => {
    const screenY = e.touches[0].screenY
    if (state === 'start') {
        touchStartY = screenY
        state = 'moving'
    }
    dist = screenY - touchStartY

    if (dist > 0) {
        $('#tip-wrap').css('height', '80');
        $('#tip').html('正在刷新')
    }

}, {passive: false})
var timer;
window.addEventListener('touchend', (e) => {
    console.log('touchend', e.touches)
    clearTimeout(timer)
    timer = setTimeout(() => {
//给个时间来避免误碰
        if (dist >= 50 && !window.scrollY) {
            console.log('111')
        }
        touchStartY = 0
    }, 1000)
    $('#tip-wrap').css('height', '0');

}, false)

css 部分,这块按自己想法来

#tip-wrap {
    height: 0;
    overflow: hidden;
    text-align: center;
    background-color: #ccc;
    font-size: 0.9rem;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    pointer-events: none;
    transition: min-height 0.2s ease;
}
html 部分,给个架子搭起来
<div id="tip-wrap">
    <div id="tip">松开刷新</div>
</div>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值