炫酷HTML蜘蛛侠登录页面

news2024/9/29 23:26:07

全篇使用HTML、CSS、JavaScript,建议有过基础的进行阅读。 

一、预览图

二、HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>蜘蛛侠登录界面</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="center-container">
        <div class="login-container">
            <div class="spiderman-logo">
                <img src="logo.png" alt="Spider-Man Logo">
            </div>
            <h2>欢迎回家</h2>
            <form class="login-form">
                <div class="input-group">
                    <label for="username">用户名</label>
                    <input type="text" id="username" placeholder="输入你的用户名">
                </div>
                <div class="input-group">
                    <label for="password">密码</label>
                    <input type="password" id="password" placeholder="输入你的密码">
                </div>
                <button type="submit">登录</button>
            </form>
        </div>
    </div>

    <canvas id="spider-web"></canvas>

    <script src="script.js"></script>
</body>
</html>

三、CSS代码

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: Arial, sans-serif;
    background-color: #0A0A2A;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    overflow: hidden;
    position: relative;
    color: white;
}

.center-container {
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 2;
    position: relative;
}

.login-container {
    background: linear-gradient(145deg, #c8102e, #0a0a2a);
    padding: 40px;
    border-radius: 15px;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5);
    text-align: center;
    width: 300px;
    z-index: 2;
}

.spiderman-logo img {
    width: 50px;
    height: 60px;
    margin-bottom: 5px;
}

/* Form styles */
.login-form {
    display: flex;
    flex-direction: column;
}

.input-group {
    margin-bottom: 20px;
}

.input-group label {
    margin-bottom: 8px;
    font-size: 14px;
    float: left;
}

.input-group input {
    width: 100%;
    padding: 10px;
    border: none;
    border-radius: 5px;
    background-color: #ffffff;
    color: black;
    font-size: 16px;
}

button {
    padding: 10px 20px;
    border: none;
    background-color: #ff4c4c;
    color: white;
    font-size: 18px;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

button:hover {
    background-color: #ff1c1c;
}

#spider-web {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1;
    width: 100vw;
    height: 100vh;
}

四、JavaScript代码

const canvas = document.getElementById('spider-web');
const ctx = canvas.getContext('2d');

canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

function drawWeb() {
    const centerX = canvas.width / 2;
    const centerY = canvas.height / 2;
    const radiusStep = 30;
    const radialStep = 10;
    const rings = 10;
    const lines = 12;

    for (let i = 1; i <= rings; i++) {
        ctx.beginPath();
        ctx.arc(centerX, centerY, radiusStep * i, 0, Math.PI * 2);
        ctx.strokeStyle = 'white';
        ctx.lineWidth = 1;
        ctx.stroke();
    }

    for (let i = 0; i < lines; i++) {
        const angle = (i / lines) * Math.PI * 2;
        const x = centerX + Math.cos(angle) * radiusStep * rings;
        const y = centerY + Math.sin(angle) * radiusStep * rings;
        ctx.beginPath();
        ctx.moveTo(centerX, centerY);
        ctx.lineTo(x, y);
        ctx.strokeStyle = 'white';
        ctx.lineWidth = 1;
        ctx.stroke();
    }

    for (let i = 1; i < rings; i++) {
        for (let j = 0; j < lines; j++) {
            const angle1 = (j / lines) * Math.PI * 2;
            const angle2 = ((j + 1) / lines) * Math.PI * 2;
            const x1 = centerX + Math.cos(angle1) * radiusStep * i;
            const y1 = centerY + Math.sin(angle1) * radiusStep * i;
            const x2 = centerX + Math.cos(angle2) * radiusStep * i;
            const y2 = centerY + Math.sin(angle2) * radiusStep * i;

            ctx.beginPath();
            ctx.moveTo(x1, y1);
            ctx.lineTo(x2, y2);
            ctx.strokeStyle = 'white';
            ctx.lineWidth = 1;
            ctx.stroke();
        }
    }
}

drawWeb();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP8266做httpServer提示Header fields are too long for server to interpret

CONFIG_HTTP_BUF_SIZE512 CONFIG_HTTPD_MAX_REQ_HDR_LEN1024 CONFIG_HTTPD_MAX_URI_LEN512CONFIG_HTTPD_MAX_REQ_HDR_LEN由512改为1024

C++ | Leetcode C++题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isLeafNode(TreeNode* node) {return !node->left && !node->right;}int sumOfLeftLeaves(TreeNode* root) {if (!root) {return 0;}queue<TreeNode*> q;q.push(root);int ans 0;while …

氢能源多旋翼无人机技术详解

1. 技术背景与优势 随着全球对低碳、环保和高效能源解决方案的需求日益增长&#xff0c;氢能源作为一种清洁、高效的能源形式&#xff0c;在多个领域展现出巨大的应用潜力。在无人机领域&#xff0c;氢能源多旋翼无人机因其独特的优势逐渐受到关注。相比传统锂电池无人机&…

Linux sh命令

目录 一. 基本语法二. 选项2.1 -c 字符串中读取内容&#xff0c;并执行2.1.1 基本用法2.1.2 获取当前目录下失效的超链接 2.2 -x 每个命令执行之前&#xff0c;将其打印出来2.3 结合Here文档使用 一. 基本语法 ⏹Linux 和 Unix 系统中用于执行 shell 脚本 或 运行命令 的命令。…

【我的 PWN 学习手札】Fastbin Double Free

前言 Fastbin的Double Free实际上还是利用其特性产生UAF的效果&#xff0c;使得可以进行Fastbin Attack 一、Double Free double free&#xff0c;顾名思义&#xff0c;free两次。对于fastbin这种单链表的组织结构&#xff0c;会形成这样一个效果&#xff1a; 如果我们mallo…

卡西莫多的手信

通过网盘分享的文件&#xff1a;卡西莫多的手信2022-2024.9.15-A5.pdf 链接: 百度网盘 请输入提取码 提取码: gig1

oracle数据库安装和配置详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; Oracle 数据库是全球广泛使用的关系型数据库管理系统 (RDBMS)&#xff0c;提供高性能、可靠性、安全性和可扩展性&#xff0c;广泛应用于企业关键任务系统。下面详细介绍如何在 CentOS 系统上安装和配置 Or…

非金属失效与典型案例分析培训

随着生产和科学技术的发展&#xff0c;人们不断对高分子材料提出各种各样的新要求。因为技术的全新要求和产品的高要求化&#xff0c;而客户对产品的高要求及工艺理解不一&#xff0c;于是高分子材料断裂、开裂、腐蚀、变色等之类失效频繁出现&#xff0c;常引起供应商与用户间…

O2O营销,中小企业数字化转型的加速器

嘿&#xff0c;小伙伴们&#xff0c;今天咱们要聊的&#xff0c;可是那让中小企业焕发新生的O2O营销魔法&#xff01;它就像是一位时空穿梭者&#xff0c;轻松跨越线上与线下的鸿沟&#xff0c;带着商家们开启了一场数字化转型的奇妙之旅。 O2O营销&#xff1a;不只是连接&…

【主机入侵检测】Wazuh规则详解

前言 Wazuh 规则是一组用XML格式编写的条件&#xff0c;它们定义了应该如何解释日志数据。这些规则由Wazuh Manager使用&#xff0c;用于在日志消息中检测特定的模式或行为&#xff0c;并相应地生成警报或响应。它们在威胁检测中扮演着至关重要的角色&#xff0c;因为它们允许系…

NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳

与电脑不同&#xff0c;NAS通常都是7*24小时不间断运行&#xff0c;这使得下载资源变得更加便捷&#xff0c;解决了bt、pt下载需要长时间在线、挂机的问题。 所以&#xff0c;对于许多选择品牌NAS或自行搭建NAS系统的用户而言&#xff0c;像qBittorrent、Transmission这样的下载…

DAY 9 - 10 : 树

树的概念 定义 树&#xff08;Tree&#xff09;是n&#xff08;n≥0&#xff09;个节点的有限集合T&#xff0c;它满足两个条件 &#xff1a; 1.有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点。 2.其余的节点可以分为m&#xff08;m≥0&#xff09;个互不相交的…

rk3568 parameter.txt 添加自己的分区,或者去掉已有的分区

问题&#xff1a; 客户在 之前的核心板上 可以烧写自己的镜像&#xff0c;但是在最新的核心板上却烧写不上&#xff0c;新旧核心板 只是变了emmc &#xff0c; 由 江波龙 ------->星火。 分析&#xff1a; 客户的镜像的分区是经过自己的定制的&#xff0c;所以有可能 是 由…

Linux云计算 |【第三阶段】PROJECT1-DAY3

主要内容&#xff1a; Keepalived高可用、部署Ceph分布式存储 一、网站架构进阶项目案例 案例1&#xff1a;Keepalived高可用 延续 PROJECT1-DAY2 案例&#xff0c;部署两台代理服务器&#xff0c;实现如下效果&#xff1a; 1&#xff09;利用keepalived实现两台代理服务器的…

【Java面试】第十一天

&#x1f31f;个人主页&#xff1a;时间会证明一切. 目录 Springboot是如何实现自动配置的&#xff1f;Spring的Autowired能用在Map上吗&#xff1f;ListMapSet数组注意事项 Spring的AOP在什么场景下会失效&#xff1f; Springboot是如何实现自动配置的&#xff1f; Spring Bo…

【开源免费】基于SpringBoot+Vue.JS高校心理教育辅导系统(JAVA毕业设计)

本文项目编号 T 031 &#xff0c;文末自助获取源码 \color{red}{T031&#xff0c;文末自助获取源码} T031&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

嵌入式C语言自我修养:C语言的面向对象编程思想

⭐关联知识点&#xff1a;C和C的区别 代码复用与分层思想 什么是代码复用呢&#xff1f; &#xff08;1&#xff09;函数级代码复用&#xff1a;定义一个函数实现某个功能&#xff0c;所有的程序都可以调用这个函数&#xff0c;不用自己再单独实现一遍&#xff0c;函数级的代…

【YashanDB知识库】单机升级典型问题及应急措施

升级典型问题 官网升级操作指引 离线升级&#xff0c;一般线上操作之前需要照着做一遍&#xff0c;但是由于数据量少、monit进程在测试环境没有启动等原因&#xff0c;一些操作、配置问题在测试过程中不会暴露&#xff0c;在生成操作的时候才暴露&#xff0c;下面3项是比较常见…

你也喜欢“钓鱼“吗?

免责声明:本文仅做分享! 目录 什么是网络钓鱼 流程 攻击手法 0-隐藏自己 1-office宏 创建xxx.dotm 创建xxx.docx 2-RLO 自解压 3-快捷方式lnk 4-邮件伪造 Swaks Gophish 5-网站克隆 setoolkit nginx反向代理 前端页面克隆 6-wifi钓鱼 7-其他 防御 溯源 反…

分布式云化数据库的优缺点分析

分布式云化数据库的优点主要体现在高可用性和容错性、可扩展性、体系结构、数据一致性、成本、升级迭代等方面。同时也存在一些缺点&#xff0c;如通信开销较大、数据的存取结构复杂、数据安全性难以保证、系统复杂性、高并发访问性能问题以及节点故障风险等。以下是对分布式云…