全篇使用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();