IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 长方形面积+鼠标跟随动画 -> 正文阅读

[游戏开发]长方形面积+鼠标跟随动画


title: 长方形面积 + 鼠标跟随动画
tags: codepen
category: 前端开发

参考内容

https://www.bilibili.com/video/BV1Fy4y1g71h?spm_id_from=333.337.top_right_bar_window_history.content.click

https://codepen.io/tiansztiansz/pen/BaJEBxK

效果演示

https://codepen.io/tiansztiansz/pen/QWQbYpg

html 代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>长方形面积 + 鼠标跟随动画</title>
    <link rel="stylesheet" href="./style.css">
</head>
<body>
    <h1>计算长方形面积</h1>
    <div>
        <form id="form">
            <input type="text" placeholder="请输入长方形的长度" id="length">
            <input type="text" placeholder="请输入长方形的宽度" id="width">
            <button>计算</button>
        </form>
        <p id="lengthResult"></p>
        <p id="widthResult"></p>
        <p id="result"></p>
    </div>
    <script src="./script.js" type="text/javascript"></script>
</body>
</html>

css 代码

body {
    background: linear-gradient(35deg, #ccffff, #ffcccc);
}

h1 {
    text-align: center;
    font-size: 30px;
    font-weight: 600;
    padding-top: 30px;
    padding-bottom: 20px;
    font-family: "楷体";
}

input,
button {
    display: block;
    font-size: 17px;
    margin: 30px auto;
    height: 2em;
}
div {
    background-color: #f0f0f0;
    width: 50vw;
    height: 400px;
    margin: auto;
    padding-top: 50px;
}

input {
    text-indent: 0.25em;
}

button {
    width: 13em;
    background-color: #dcefef;
    border-radius: 5px;
    border-width: 1px;
}

button:hover {
    background: #f1d9d9;
}

p {
    text-align: center;
    color: red;
    margin-bottom: 20px;
    font-family: "楷体";
    font-weight: bold;
    font-size: 23px;
}

js 代码

const length = document.getElementById("length");
const width = document.getElementById("width");
const form = document.getElementById("form");
const lengthOrWidthResult = document.getElementById("lengthResult");
const result = document.getElementById("result");


// 点击“计算”触发该监听器
form.addEventListener("submit", (e) => {
    e.preventDefault();
    validataForm();
});


// 主要函数
const validataForm = function () {
    const lengthValue = length.value.trim();
    const widthValue = width.value.trim();
    let trueLengthValue;
    let trueWidthValue;

    // 判断输入是否存在错误,然后输出相应提示文本
    if (lengthValue === "") {
        lengthOrWidthResult.innerText = "请输入长方形的长度或宽度";
    } else if (widthValue === "") {
        lengthOrWidthResult.innerText = "请输入长方形的长度或宽度";
    } else if (!validata(lengthValue)) {
        lengthOrWidthResult.innerText = "请正确输入长方形的长度或宽度";
    } else if (!validata(widthValue)) {
        lengthOrWidthResult.innerText = "请正确输入长方形的长度或宽度";
    } else {
        trueLengthValue = lengthValue;
        trueWidthValue = widthValue;
        lengthOrWidthResult.innerText = "";
    }

    // 将提取出的正确长度和宽度进行面积计算
    if (trueLengthValue & trueWidthValue) {
        let area = String(trueWidthValue * trueLengthValue);
        result.innerText = "当前设置的长方形面积为" + area;
    } else {
        result.innerText = "";
    }
};


// 验证是否含有非数字字符的函数
const validata = function (str) {
    const regex = /^[0-9]*$/;
    return regex.test(str);
};






// 以下是鼠标跟随动画:
(function (window, document, undefined) {
    var aaa;
    var hearts = [];
    window.requestAnimationFrame = (function () {
        return (
            window.requestAnimationFrame ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame ||
            window.oRequestAnimationFrame ||
            window.msRequestAnimationFrame ||
            function (callback) {
                setTimeout(callback, 1000 / 60);
            }
        );
    })();
    init();
    function init() {
        css(".heart{width: 1px;height: 1px;position: fixed;");
        attachEvent();

        gameloop();
    }
    function gameloop() {
        for (var i = 0; i < hearts.length; i++) {
            if (hearts[i].alpha <= 0) {
                document.body.removeChild(hearts[i].el);
                hearts.splice(i, 1);
                continue;
            }
            hearts[i].y++;
            hearts[i].x += hearts[i].xx;
            hearts[i].scale -= 0.01;
            hearts[i].alpha -= 0.008;
            hearts[i].el.style.cssText =
                "left:" +
                hearts[i].x +
                "px;top:" +
                hearts[i].y +
                "px;opacity:" +
                hearts[i].alpha +
                ";transform:scale(" +
                hearts[i].scale +
                "," +
                hearts[i].scale +
                ") rotate(45deg);color:" +
                hearts[i].color;
        }
        requestAnimationFrame(gameloop);
    }
    function attachEvent() {
        var old =
            typeof window.onmousemove === "function" && window.onmousemove;
        window.onmousemove = function (event) {
            old && old();
            createHeart(event);
        };
    }
    function createHeart(event) {
        var d = document.createElement("samp");
        d.className = "heart";
        d.innerHTML = "*";
        hearts.push({
            el: d,
            x: event.clientX - 8,
            y: event.clientY - 13,
            xx: Math.pow(-1, Math.round(Math.random())) * Math.random(),
            scale: 1,
            alpha: 1,
            color: randomColor()
        });
        document.body.appendChild(d);
    }
    function css(css) {
        var style = document.createElement("style");
        style.type = "text/css";
        try {
            style.appendChild(document.createTextNode(css));
        } catch (ex) {
            style.styleSheet.cssText = css;
        }
        document.getElementsByTagName("head")[0].appendChild(style);
    }
    function randomColor() {
        return (
            "rgb(" +
            ~~(Math.random() * 255) +
            "," +
            ~~(Math.random() * 255) +
            "," +
            ~~(Math.random() * 255) +
            ")"
        );
    }
})(window, document);
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 13:05:27  更:2022-05-09 13:06:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:16:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码