一个会躲开你的鼠标的按钮HTML代码

实现

<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>抓住那个按钮!</title>
<style>
    #button {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 100px;
        height: 50px;
        background-color: rgb(18, 110, 231);
        color: white;
        border: none;
        cursor: pointer;
        transition: transform 0.5s;
        border-radius: 20px;
    }
</style>
</head>
<body>

<button id="button" onmouseover="mouseOver()" onclick="cilcked()" title="你不要过来啊!!!">你来点我呀:P</button>

<script>
    let isHovered = false;
    let ismove = true;
    moveSpeed = 50; // 一秒钟内移动的速度,单位:像素/秒

    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }
    async function cilcked(){
        ismove = false;
        button.disabled = true;
        button.style.width = '200'; 
        button.style.width = '100'; 
        button.style.backgroundColor = 'rgb(10, 102, 223)'; // 修改按钮颜色
        await sleep(200);
        button.style.backgroundColor = 'rgb(18, 110, 231)'; 
        button.innerText = "你点到我了!厉害(⊙o⊙)";
        await sleep(2000);
        button.innerText = "我们继续吧!ヾ(≧▽≦*)o";
        await sleep(2000);
        button.innerText = "我会加快速度的!";
        
        await sleep(3000); // 静止按钮的时间,单位:毫秒
        button.innerText = "走着!加油(ง •̀_•́)ง";
        moveSpeed += 200;
        button.style.width = '100'; 
        button.style.width = '50'; 
        button.disabled = false;
        ismove = true; // 恢复按钮移动
    }

    async function fa(){
        button.title = '不要作弊';
        ismove = false;
        button.disabled = true;
        button.style.backgroundColor = 'gray'; 
        await sleep(2000);
        button.style.backgroundColor = 'rgb(18, 110, 231)'; 
        button.disabled = false;
        button.title = '你不要过来啊!!!';
        ismove = true;
    }


    function mouseOver() {
        isHovered = true;
    }

    document.addEventListener("DOMContentLoaded", function() {
        const button = document.getElementById('button');
        const buttonRect = button.getBoundingClientRect();
        const buttonWidth = buttonRect.width;
        const buttonHeight = buttonRect.height;
        const minDistance = 300; // 鼠标与按钮的最小距离
        
        const contactDuration = 60000; // 鼠标接触时间阈值,单位:毫秒
        let lastContactTime = null;

        document.addEventListener('mousemove', function(event) {
            if (ismove){
                const mouseX = event.clientX;
                const mouseY = event.clientY;

                const buttonX = buttonRect.left + buttonWidth / 2;
                const buttonY = buttonRect.top + buttonHeight / 2;

                const deltaX = mouseX - buttonX;
                const deltaY = mouseY - buttonY;

                const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);

                if (distance < minDistance) {
                    const angle = Math.atan2(deltaY, deltaX);
                    let newX, newY;

                    if (isHovered) {
                        button.innerText = '抓不到抓不到~'
                        // 如果鼠标悬停在按钮上,则加速向鼠标的反方向移动
                        //const distanceToMove = moveSpeed / 4; // 一秒钟内移动的距离
                        const distanceToMove = moveSpeed / 2;
                        newX = buttonX - distanceToMove * Math.cos(angle);
                        newY = buttonY - distanceToMove * Math.sin(angle);
                    } else {
                        newX = buttonX + moveSpeed * Math.cos(angle);
                        newY = buttonY + moveSpeed * Math.sin(angle);
                    }

                    button.style.transform = `translate(-50%, -50%) translate(${newX - buttonX}px, ${newY - buttonY}px)`;
                    
                    // 记录鼠标接触时间
                    lastContactTime = Date.now();
                } else {
                    button.style.transform = `translate(-50%, -50%)`;
                    
                    // 检查是否超过接触时间阈值
                    if (lastContactTime !== null && (Date.now() - lastContactTime) >= contactDuration) {
                        button.innerText = "喂!你还在吗?(•ω•)";
                        //zhonger();
                    } else {
                        button.innerText = "你来点我呀:P";
                    }
                }
            }
            
        });
        
        document.addEventListener('keydown', function(event) {
            if (event.key === 'Tab' || event.key === 'Enter') {
                event.preventDefault();
                alert('禁止作弊');
                button.innerText = "不要作弊";
                fa();
                
            }
            //alert('moveSpeed = ' + moveSpeed + '\n'+ 'CanMove = ' + ismove + '\n'+'button.text = ' + button.innerText); // 开发者调试
        });
    });
</script>

</body>
</html>

不需要登陆的复制:跳转到剪切板icon-default.png?t=N7T8https://www.luogu.com/paste/to3dwezy

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值