?</div> <button class="go">go</button>css :root ...">
最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 纯 html + css + javascript 实现篮球弹跳效果

    正文概述 掘金(iwantmytea)   2021-07-19   601

    效果图

    纯 html + css + javascript 实现篮球弹跳效果

    代码

    html

    <div class="ball">?</div>
    <button class="go">go</button>
    

    css

    :root {
        --top: 0px;
    }
    .ball {
        position: absolute;
        top: var(--top);
        font-size: 100px;
    }
    .go {
        position: fixed;
        right: 80px;
        top: 50px;
    }
    

    javascript

    let prev = 0;
    // 动画持续时间
    const duration = 3000;
    // 球距离地面的高度
    const height = 500;
    function bounce(t) {
        if (!prev) {
            prev = t;
            requestAnimationFrame(bounce);
            return;
        }
        // 计算动画运行时间
        let diff = t - prev;
        // 目前的动画时间对应的 x 值
        let x = diff / duration;
        // 目前的动画时间对应的 y 值
        let y = easeOutBounce(x);
        // y 值对应的高度
        let top = y * height;
        document.documentElement.style.setProperty('--top', top + 'px');
        if (diff >= duration) {
            return;
        }
        requestAnimationFrame(bounce);
    }
    
    let go = document.querySelector(".go")
    go.addEventListener('click', (e) => {
        prev = 0;
        requestAnimationFrame(bounce);
    })
    
    // 模拟弹跳效果的 timing function
    // 参考:https://easings.net/#easeOutBounce
    function easeOutBounce(x) {
        const n1 = 7.5625;
        const d1 = 2.75;
        if (x < 1 / d1) {
            return n1 * x * x;
        } else if (x < 2 / d1) {
            return n1 * (x -= 1.5 / d1) * x + 0.75;
        } else if (x < 2.5 / d1) {
            return n1 * (x -= 2.25 / d1) * x + 0.9375;
        } else {
            return n1 * (x -= 2.625 / d1) * x + 0.984375;
        }
    }
    

    在线演示

    jsbin.com/labidan/edi…


    起源地下载网 » 纯 html + css + javascript 实现篮球弹跳效果

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元