跳到主内容
paste
bin
.ca
type · paste · share
⌘
K
系列
bin 系列
pastebin.ca
中心
Share text and code with expiry and privacy controls.
imagebin.ca
Upload and share images with direct links.
filebin.ca
Drop a file and get a shareable link.
notebin.ca
Write Markdown notes with durable links.
turl.ca
Short, reputation-checked links.
attn.ca
Notifications and alerts for your services.
voicebin.ca
Record and share short voice clips.
dnsbin.ca
Inspect DNS and debug records.
文档
登录
?
← 返回文本
›
编辑 / 分支
hh
#6KP5RdKTYN
public / public
新版本
匿名
已创建 2 days ago
过期于 3 months
13.6 KB
语法:
html
你的更改会创建一个链接到此文本的新文本 — 原始文本不变。
新版本
你的更改会创建一个链接到此文本的新文本 — 原始文本不变。
标题(可选)
文件名
语法
html
text
bash
c
cpp
css
diff
dockerfile
go
html
ini
java
javascript
json
kotlin
lua
makefile
markdown
nginx
php
python
ruby
rust
shellscript
sql
swift
toml
typescript
xml
yaml
可见性
公开动态
访问
public
过期
90 天
10 分钟
1 小时
1 天
7 天
30 天
90 天
自定义…
自定义过期
变更备注
(可选)
此文本会显示在公开动态中。如果只想通过链接分享,请更改可见性。
创建新版本
取消
粘贴或输入…
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>超级帅帅帅的恒 国庆快乐</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { background: linear-gradient(180deg, #0a0a1a 0%, #111133 40%, #1a1a3e 100%); min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; font-family: "PingFang SC", "Microsoft YaHei", sans-serif; overflow: hidden; color: #fff; } /* ===== 画布层 ===== */ #starfield, #fireworks { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } #starfield { z-index: 0; } #fireworks { z-index: 1; } /* ===== 主内容 ===== */ .container { position: relative; z-index: 2; text-align: center; padding: 20px; } /* 国旗飘落 */ .flag { position: fixed; font-size: 28px; animation: fall linear infinite; z-index: 1; opacity: 0.6; pointer-events: none; } @keyframes fall { 0% { transform: translateY(-60px) rotate(0deg) translateX(0); opacity: 0.7; } 25% { transform: translateY(25vh) rotate(90deg) translateX(20px); } 50% { transform: translateY(50vh) rotate(180deg) translateX(-15px); } 75% { transform: translateY(75vh) rotate(270deg) translateX(10px); } 100% { transform: translateY(110vh) rotate(360deg) translateX(0); opacity: 0; } } /* 标题 */ .title { font-size: 44px; font-weight: 800; background: linear-gradient(90deg, #ffffff, #cccccc, #ffffff, #cccccc); background-size: 300% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; animation: shimmer 3s linear infinite, fadeUp 1.2s 0.5s forwards; opacity: 0; text-shadow: none; filter: drop-shadow(0 0 20px rgba(255, 217, 61, 0.3)); } @keyframes shimmer { to { background-position: 300% center; } } @keyframes fadeUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } /* 副标题 */ .subtitle { font-size: 16px; color: rgba(255,255,255,0.5); margin-top: 8px; opacity: 0; animation: fadeUp 1s 1.5s forwards; letter-spacing: 4px; } /* 打字机 */ .typewriter { font-size: 17px; line-height: 2.2; min-height: 140px; margin: 24px auto; max-width: 440px; text-align: left; white-space: pre-wrap; } .cursor { display: inline-block; width: 2px; height: 1em; background: #ffd93d; animation: blink 0.6s step-end infinite; vertical-align: text-bottom; } @keyframes blink { 50% { opacity: 0; } } /* 隐藏按钮 - 脉冲光晕 */ .secret-btn { margin-top: 28px; padding: 14px 36px; border: 2px solid #ffd93d; background: transparent; color: #ffd93d; font-size: 16px; border-radius: 30px; cursor: pointer; opacity: 0; animation: fadeUp 1s 8s forwards, pulse 2s 9s ease-in-out infinite; transition: all 0.4s; position: relative; overflow: visible; } .secret-btn::before { content: ''; position: absolute; top: -4px; left: -4px; right: -4px; bottom: -4px; border-radius: 34px; border: 2px solid rgba(255, 217, 61, 0.3); animation: pulseRing 2s ease-in-out infinite; } @keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 217, 61, 0.4); } 50% { box-shadow: 0 0 20px 8px rgba(255, 217, 61, 0.2); } } @keyframes pulseRing { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.08); opacity: 0; } } .secret-btn:hover { background: #ffd93d; color: #1a1a3e; transform: scale(1.08); box-shadow: 0 0 30px rgba(255, 217, 61, 0.6); } /* 隐藏心意 */ .heart-reveal { margin-top: 24px; font-size: 20px; color: #ff9a9a; opacity: 0; transform: translateY(20px); transition: all 1.5s ease; } .heart-reveal.show { opacity: 1; transform: translateY(0); } .heart-reveal .heart { display: inline-block; animation: heartbeat 1s ease-in-out infinite; font-size: 28px; } @keyframes heartbeat { 0%, 100% { transform: scale(1); } 15% { transform: scale(1.3); } 30% { transform: scale(1); } 45% { transform: scale(1.2); } 60% { transform: scale(1); } } /* 底部 */ .footer { position: fixed; bottom: 16px; font-size: 12px; color: rgba(255,255,255,0.25); z-index: 2; letter-spacing: 2px; } </style> </head> <body> <canvas id="starfield"></canvas> <canvas id="fireworks"></canvas> <div class="container"> <div class="title">帅恒 国庆快乐</div> <div class="subtitle">— 2026 · 一份悄悄的祝福 —</div> <div class="typewriter" id="typewriter"><span class="cursor"></span></div> <button class="secret-btn" id="secretBtn" onclick="revealHeart()"> ✨ 点我领取隐藏祝福 </button> <div class="heart-reveal" id="heartReveal"> <span class="heart">🎆</span><br> 其实……<br> 这个假期最想见的人是你,<br> 在这人来人往的世界里,每个人都有自己的节奏与底色,<br> 每个人都有独属于自己的光芒,<br> 而你那份恰好照射到我,<br> 温暖且让人依赖。<br> 你们河南竞争大,你不要有太大的压力<br> 尽力就好,开心最重要!<br> 提前祝你高考取得一个令你满意的成绩。<br> 愿你往后的日子里少些烦恼与疲惫<br> 多几分欢喜与安然<br><br> <small style="color:rgba(255,255,255,0.45);font-size:14px;"> (加油!相信自己!) </small> </div> </div> <div class="footer">2026.10.01</div> <script> // ========== 1. 星空背景 ========== const starCanvas = document.getElementById('starfield'); const sCtx = starCanvas.getContext('2d'); starCanvas.width = window.innerWidth; starCanvas.height = window.innerHeight; window.addEventListener('resize', () => { starCanvas.width = window.innerWidth; starCanvas.height = window.innerHeight; initStars(); }); class Star { constructor() { this.reset(); } reset() { this.x = Math.random() * starCanvas.width; this.y = Math.random() * starCanvas.height * 0.85; this.size = Math.random() * 2; this.alpha = Math.random(); this.speed = 0.005 + Math.random() * 0.015; this.direction = Math.random() > 0.5 ? 1 : -1; } update() { this.alpha += this.speed * this.direction; if (this.alpha >= 1) { this.alpha = 1; this.direction = -1; } if (this.alpha <= 0.1) { this.alpha = 0.1; this.direction = 1; } } draw() { sCtx.beginPath(); sCtx.arc(this.x, this.y, this.size, 0, Math.PI * 2); sCtx.fillStyle = `rgba(255, 255, 255, ${this.alpha})`; sCtx.fill(); } } let stars = []; function initStars() { stars = []; const count = Math.min(200, Math.floor(starCanvas.width * starCanvas.height / 5000)); for (let i = 0; i < count; i++) stars.push(new Star()); } initStars(); // ========== 2. 流星 ========== class ShootingStar { constructor() { this.reset(); } reset() { this.x = Math.random() * starCanvas.width; this.y = Math.random() * starCanvas.height * 0.4; this.len = 60 + Math.random() * 80; this.speed = 6 + Math.random() * 6; this.angle = Math.PI / 5 + Math.random() * 0.3; this.alpha = 1; this.decay = 0.01 + Math.random() * 0.015; this.active = false; } launch() { this.reset(); this.active = true; } update() { if (!this.active) return; this.x += Math.cos(this.angle) * this.speed; this.y += Math.sin(this.angle) * this.speed; this.alpha -= this.decay; if (this.alpha <= 0) this.active = false; } draw() { if (!this.active) return; const tailX = this.x - Math.cos(this.angle) * this.len; const tailY = this.y - Math.sin(this.angle) * this.len; const grad = sCtx.createLinearGradient(this.x, this.y, tailX, tailY); grad.addColorStop(0, `rgba(255, 255, 255, ${this.alpha})`); grad.addColorStop(1, `rgba(255, 255, 255, 0)`); sCtx.beginPath(); sCtx.moveTo(this.x, this.y); sCtx.lineTo(tailX, tailY); sCtx.strokeStyle = grad; sCtx.lineWidth = 1.5; sCtx.stroke(); } } const shootingStars = [new ShootingStar(), new ShootingStar()]; setInterval(() => { const idle = shootingStars.find(s => !s.active); if (idle) idle.launch(); }, 3000 + Math.random() * 4000); // ========== 3. 国旗飘落 ========== function createFlag() { const flag = document.createElement('div'); flag.className = 'flag'; flag.textContent = ['帅恒','🎆','✨','🎇'][Math.floor(Math.random()*4)]; flag.style.left = Math.random() * 100 + 'vw'; flag.style.animationDuration = (5 + Math.random() * 5) + 's'; flag.style.fontSize = (16 + Math.random() * 18) + 'px'; document.body.appendChild(flag); setTimeout(() => flag.remove(), 10000); } setInterval(createFlag, 500); // ========== 4. 打字机 ========== const messages = [ "国庆快乐 超级帅帅帅的恒", "", "愿你的假期——", "有吃不完的零食 🍿", "睡到自然醒的早晨 🌙", "和刚刚好的好心情 ☀️", "", "如果可以的话……", "以后一起去看看烟花吧 🎆", ]; let lineIndex = 0, charIndex = 0; const twEl = document.getElementById('typewriter'); const cursor = twEl.querySelector('.cursor'); function typeLine() { if (lineIndex >= messages.length) { cursor.style.display = 'none'; return; } const line = messages[lineIndex]; if (charIndex < line.length) { const span = document.createElement('span'); span.textContent = line[charIndex]; span.style.opacity = '0'; span.style.transition = 'opacity 0.15s'; twEl.insertBefore(span, cursor); requestAnimationFrame(() => span.style.opacity = '1'); charIndex++; setTimeout(typeLine, 70); } else { twEl.appendChild(document.createElement('br')); lineIndex++; charIndex = 0; setTimeout(typeLine, 350); } } setTimeout(typeLine, 1200); // ========== 5. 烟花 Canvas ========== const fwCanvas = document.getElementById('fireworks'); const fCtx = fwCanvas.getContext('2d'); fwCanvas.width = window.innerWidth; fwCanvas.height = window.innerHeight; window.addEventListener('resize', () => { fwCanvas.width = window.innerWidth; fwCanvas.height = window.innerHeight; }); class Particle { constructor(x, y, color, isHeart = false) { this.x = x; this.y = y; this.color = color; this.alpha = 1; this.decay = 0.008 + Math.random() * 0.018; const angle = Math.random() * Math.PI * 2; const speed = isHeart ? 2 + Math.random() * 3 : 1 + Math.random() * 5; this.vx = Math.cos(angle) * speed; this.vy = Math.sin(angle) * speed; this.isHeart = isHeart; this.size = isHeart ? 8 : 1.5 + Math.random() * 2; this.trail = []; } update() { this.trail.push({ x: this.x, y: this.y, alpha: this.alpha }); if (this.trail.length > 4) this.trail.shift(); this.x += this.vx; this.y += this.vy; this.vy += 0.035; this.vx *= 0.99; this.alpha -= this.decay; } draw() { // 拖尾 this.trail.forEach((t, i) => { fCtx.beginPath(); fCtx.arc(t.x, t.y, this.size * 0.5, 0, Math.PI * 2); fCtx.fillStyle = this.isHeart ? `rgba(255,107,107,${t.alpha * 0.3 * (i/this.trail.length)})` : `${this.color.replace('1)', `${t.alpha * 0.3 * (i/this.trail.length)})`)}`; fCtx.fill(); }); fCtx.save(); fCtx.globalAlpha = this.alpha; if (this.isHeart) { fCtx.font = this.size + 'px serif'; fCtx.fillText('❤️', this.x, this.y); } else { fCtx.beginPath(); fCtx.arc(this.x, this.y, this.size, 0, Math.PI * 2); fCtx.fillStyle = this.color; fCtx.fill(); // 发光 fCtx.shadowBlur = 8; fCtx.shadowColor = this.color; fCtx.fill(); } fCtx.restore(); } } let particles = []; const colors = [ 'rgba(255,107,107,1)', 'rgba(255,217,61,1)', 'rgba(107,203,119,1)', 'rgba(77,150,255,1)', 'rgba(255,107,203,1)', 'rgba(255,255,255,1)' ]; function explode(x, y) { const color = colors[Math.floor(Math.random() * colors.length)]; const count = 50 + Math.floor(Math.random() * 30); for (let i = 0; i < count; i++) particles.push(new Particle(x, y, color)); } function launchHeart() { const x = Math.random() * fwCanvas.width; const y = Math.random() * fwCanvas.height * 0.5; for (let i = 0; i < 10; i++) particles.push(new Particle(x, y, 'rgba(255,107,107,1)', true)); } // 自动烟花 setInterval(() => { explode( fwCanvas.width * 0.15 + Math.random() * fwCanvas.width * 0.7, fwCanvas.height * 0.1 + Math.random() * fwCanvas.height * 0.35 ); }, 1200); function animate() { // 星空 sCtx.clearRect(0, 0, starCanvas.width, starCanvas.height); stars.forEach(s => { s.update(); s.draw(); }); shootingStars.forEach(s => { s.update(); s.draw(); }); // 烟花 - 半透明清除制造残影 fCtx.fillStyle = 'rgba(10, 10, 26, 0.15)'; fCtx.fillRect(0, 0, fwCanvas.width, fwCanvas.height); particles = particles.filter(p => p.alpha > 0); particles.forEach(p => { p.update(); p.draw(); }); requestAnimationFrame(animate); } animate(); // ========== 6. 隐藏心意 ========== function revealHeart() { document.getElementById('heartReveal').classList.add('show'); document.getElementById('secretBtn').style.display = 'none'; // 爱心烟花连发 for (let i = 0; i < 40; i++) setTimeout(() => launchHeart(), i * 80); // 再放几波大烟花庆祝 for (let i = 0; i < 5; i++) { setTimeout(() => explode( fwCanvas.width * 0.2 + Math.random() * fwCanvas.width * 0.6, fwCanvas.height * 0.15 + Math.random() * fwCanvas.height * 0.3 ), i * 300); } } </script> </body> </html>