<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AIOVTUE-雪</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/</link><description>Recent content on AIOVTUE-雪</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 03 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://45a96c10.hugo-theme-aiovtue.pages.dev/index.xml" rel="self" type="application/rss+xml"/><item><title/><link/><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;&lt;strong&gt;对&lt;em&gt;hugo-aiovtue&lt;/em&gt;主题进行版本大更新，优化和新增部分功能&lt;/strong&gt;
&lt;strong&gt;以下是本次更新内容&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新增动态页面，双样式&lt;/li&gt;
&lt;li&gt;文章新增画板（excalidraw）样式&lt;/li&gt;
&lt;li&gt;文章新增画廊样式&lt;/li&gt;
&lt;li&gt;文章新增MATH支持&lt;/li&gt;
&lt;li&gt;文章新增视频格式支持&lt;/li&gt;
&lt;li&gt;文章新增AI总结&lt;/li&gt;
&lt;li&gt;所有页面头图视频支持&lt;/li&gt;
&lt;li&gt;新增番剧页面&lt;/li&gt;
&lt;li&gt;新增看板娘组件&lt;/li&gt;
&lt;li&gt;新增网页特效&lt;/li&gt;
&lt;li&gt;新增网页鼠标样式&lt;/li&gt;
&lt;li&gt;新增友链页样式&lt;/li&gt;
&lt;li&gt;新增主页文章列表样式&lt;/li&gt;
&lt;li&gt;新增左下角音乐播放器&lt;/li&gt;
&lt;li&gt;新增友链页朋友动态功能&lt;/li&gt;
&lt;li&gt;新增字体大小自定义功能&lt;/li&gt;
&lt;li&gt;新增移动端顶栏自动隐藏（手动开启）&lt;/li&gt;
&lt;li&gt;新增页脚出友链显示功能&lt;/li&gt;
&lt;li&gt;留言页增加弹幕功能&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title/><link/><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;这是一个纯文字动态&lt;strong&gt;demo&lt;/strong&gt;&lt;br&gt;
支持部分&lt;em&gt;markdown&lt;/em&gt;语法&lt;/p&gt;</description></item><item><title/><link/><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid/><description>&lt;p&gt;以下是图片动态示例：
&lt;img
 src="https://45a96c10.hugo-theme-aiovtue.pages.dev/hero/tt1.png"
 alt=""
 loading="lazy"
 decoding="async"
&gt;
&lt;img
 src="https://45a96c10.hugo-theme-aiovtue.pages.dev/hero/tt2.png"
 alt=""
 loading="lazy"
 decoding="async"
&gt;
&lt;img
 src="https://45a96c10.hugo-theme-aiovtue.pages.dev/hero/tt3.png"
 alt=""
 loading="lazy"
 decoding="async"
&gt;
&lt;img
 src="https://45a96c10.hugo-theme-aiovtue.pages.dev/hero/hero-2.png"
 alt=""
 loading="lazy"
 decoding="async"
&gt;&lt;/p&gt;</description></item><item><title>关于我</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/about/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/about/</guid><description>&lt;p&gt;🌟 关于本站 | About This Blog&lt;/p&gt;
&lt;p&gt;我的邮箱：crqgxs@qq.com 或 &lt;a href="mailto:1044192982@qq.com"&gt;1044192982@qq.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;大家好！我是一名在校学生，自初中起便热衷于在网络世界里探索未知，这份对互联网的好奇与热爱，多年来从未消减。同时，我也是一名怀揣光影梦却受限于预算的“穷学生”——正是这份对摄影的执着，叠加对个人表达与成长记录的渴望，最终让我与博客结下了不解之缘。&lt;/p&gt;</description></item><item><title>WorkBuddy 部署与使用，微信、QQ、飞书直连！腾讯版 OpenClaw</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/workbuddy-%E9%83%A8%E7%BD%B2%E4%B8%8E%E4%BD%BF%E7%94%A8%E5%BE%AE%E4%BF%A1qq%E9%A3%9E%E4%B9%A6%E7%9B%B4%E8%BF%9E%E8%85%BE%E8%AE%AF%E7%89%88-openclaw/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/workbuddy-%E9%83%A8%E7%BD%B2%E4%B8%8E%E4%BD%BF%E7%94%A8%E5%BE%AE%E4%BF%A1qq%E9%A3%9E%E4%B9%A6%E7%9B%B4%E8%BF%9E%E8%85%BE%E8%AE%AF%E7%89%88-openclaw/</guid><description>&lt;h1 id="workbuddy-部署与使用微信qq飞书直连腾讯版-openclaw"&gt;WorkBuddy 部署与使用，微信、QQ、飞书直连！腾讯版 OpenClaw&lt;/h1&gt;
&lt;h2 id="基本介绍"&gt;基本介绍&lt;/h2&gt;
&lt;p&gt;WorkBuddy 是腾讯推出的一款类 OpenClaw 的桌面智能体工作台，支持在手机主流 IM 平台下发指令，兼容 Windows、Mac 系统，可接入微信、企业微信、QQ、钉钉、飞书等应用。&lt;/p&gt;</description></item><item><title>超详细！OpenClaw 本地部署保姆级实战教学</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E8%B6%85%E8%AF%A6%E7%BB%86openclaw-%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2%E4%BF%9D%E5%A7%86%E7%BA%A7%E5%AE%9E%E6%88%98%E6%95%99%E5%AD%A6/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E8%B6%85%E8%AF%A6%E7%BB%86openclaw-%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2%E4%BF%9D%E5%A7%86%E7%BA%A7%E5%AE%9E%E6%88%98%E6%95%99%E5%AD%A6/</guid><description>&lt;h1 id="超详细openclaw-本地部署保姆级实战教学"&gt;超详细！OpenClaw 本地部署保姆级实战教学&lt;/h1&gt;
&lt;p&gt;&lt;img
 src="https://imgbed.20210701.xyz/file/%e5%8d%9a%e5%ae%a2/1773801117558_2a15dd88234a2dfe31c08fc2fcabb83a.webp"
 alt="OpenClaw 部署教程封面"
 loading="lazy"
 decoding="async"
&gt;&lt;/p&gt;
&lt;h2 id="1-简介"&gt;1. 简介&lt;/h2&gt;
&lt;h3 id="什么是-openclaw"&gt;什么是 OpenClaw？&lt;/h3&gt;
&lt;p&gt;OpenClaw/Moltbot/Clawdbot 是一个 AI 助手框架，支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🤖 多模型支持（MiniMax、Claude、GLM、GPT等）&lt;/li&gt;
&lt;li&gt;💬 多平台集成（WhatsApp、Telegram、Discord等）&lt;/li&gt;
&lt;li&gt;🛠️ 强大的工具生态（浏览器、文件系统、代码生成等）&lt;/li&gt;
&lt;li&gt;🔧 可扩展的技能系统&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="版本说明"&gt;版本说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;OpenClaw: 官方名称，最新版本使用的命令&lt;/li&gt;
&lt;li&gt;Moltbot/Clawdbot: 旧版本命令，部分用户可能仍在使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本教程以 &lt;code&gt;openclaw&lt;/code&gt; 为准，clawdbot 用户可将命令替换使用。&lt;/p&gt;</description></item><item><title>2026马年春晚邓男子《惊喜定格》魔术计算器同款代码</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/2026%E6%83%8A%E5%96%9C%E5%AE%9A%E6%A0%BC%E5%90%8C%E6%AC%BE%E9%AD%94%E6%9C%AF%E8%AE%A1%E7%AE%97%E5%99%A8%E4%BB%A3%E7%A0%81/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/2026%E6%83%8A%E5%96%9C%E5%AE%9A%E6%A0%BC%E5%90%8C%E6%AC%BE%E9%AD%94%E6%9C%AF%E8%AE%A1%E7%AE%97%E5%99%A8%E4%BB%A3%E7%A0%81/</guid><description>&lt;h1 id="2026马年春晚邓男子惊喜定格魔术计算器同款代码"&gt;2026马年春晚邓男子《惊喜定格》魔术计算器同款代码&lt;/h1&gt;
&lt;p&gt;2026年马年春晚邓男子表演的计算器魔术《惊喜定格》同款代码&lt;/p&gt;
&lt;p&gt;魔术的精髓从来不在于技术，而在于表演表演环节&lt;/p&gt;
&lt;p&gt;第一步：请路人余先生随意给我一个四位数的数字：得到 a = 1106&lt;/p&gt;</description></item><item><title>使用Docker部署哪吒监控v1 CloudFlare Tunnel版面板端</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E5%93%AA%E5%90%92%E7%9B%91%E6%8E%A7v1cf%E7%89%88/</link><pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E5%93%AA%E5%90%92%E7%9B%91%E6%8E%A7v1cf%E7%89%88/</guid><description>&lt;h1 id="使用docker部署哪吒监控v1-cloudflare-tunnel版面板端"&gt;使用Docker部署哪吒监控v1 CloudFlare Tunnel版面板端&lt;/h1&gt;
&lt;h2 id="哪吒面板简介"&gt;哪吒面板简介&lt;/h2&gt;
&lt;p&gt;哪吒监控是一款自托管、轻量级的服务器和网站监控运维工具。支持监控系统状态、HTTP（SSL 证书更改、即将过期、过期）、TCP、Ping，并支持推送警报、运行计划任务和 Web 终端。&lt;/p&gt;</description></item><item><title>2026 免费托管平台合集｜静态/动态/AI全覆盖（真实体验）</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/2026-%E5%85%8D%E8%B4%B9%E6%89%98%E7%AE%A1%E5%B9%B3%E5%8F%B0%E5%90%88%E9%9B%86/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/2026-%E5%85%8D%E8%B4%B9%E6%89%98%E7%AE%A1%E5%B9%B3%E5%8F%B0%E5%90%88%E9%9B%86/</guid><description>&lt;h1 id="2026-免费托管平台合集静态动态ai全覆盖真实体验"&gt;2026 免费托管平台合集｜静态/动态/AI全覆盖（真实体验）&lt;/h1&gt;
&lt;p&gt;作为长期折腾个人站、AI 项目的博主，我把目前真免费、有额度、能长期用的托管平台整理成一篇合集，包含大家常问的 CF（Cloudflare）、EO（EdgeOne） 等静态托管，也有能跑 Ollama、WordPress 的动态平台，新手直接照着选就行。
&lt;strong&gt;CF/EO/Vercel/Netlify/GitHub Pages&lt;/strong&gt;等主流静态托管，&lt;strong&gt;Kinsta、Surge、GitLab Pages、上码、CloudBase、Render、Railway、Zeabur、Hugging Face、Supabase&lt;/strong&gt;等，全部实测可用、长期白嫖无套路。&lt;/p&gt;</description></item><item><title>实测推荐！免费虚拟主机+超便宜服务器，学习建站测试必备</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E5%AE%9E%E6%B5%8B%E6%8E%A8%E8%8D%90%E5%85%8D%E8%B4%B9%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA+%E8%B6%85%E4%BE%BF%E5%AE%9C%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%BB%BA%E7%AB%99%E6%B5%8B%E8%AF%95%E5%BF%85%E5%A4%87/</link><pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E5%AE%9E%E6%B5%8B%E6%8E%A8%E8%8D%90%E5%85%8D%E8%B4%B9%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA+%E8%B6%85%E4%BE%BF%E5%AE%9C%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%BB%BA%E7%AB%99%E6%B5%8B%E8%AF%95%E5%BF%85%E5%A4%87/</guid><description>&lt;h1 id="实测推荐免费虚拟主机超便宜服务器学习建站测试必备"&gt;实测推荐！免费虚拟主机+超便宜服务器，学习建站测试必备&lt;/h1&gt;
&lt;p&gt;官网直达：&lt;a href="https://www.moebun.com/aff/CPMKQYVR" target="_blank" rel="noopener"&gt;https://www.moebun.com/aff/CPMKQYVR&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;平时想搭个轻量博客、做网站测试、练手建站，又不想花大钱？给大家分享我自用很久的一家靠谱平台，&lt;strong&gt;有免费主机，价格还巨实惠&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="免费虚拟主机直接白嫖用"&gt;免费虚拟主机，直接白嫖用&lt;/h2&gt;
&lt;p&gt;平台提供&lt;strong&gt;免费虚拟主机&lt;/strong&gt;，不用花钱就能用来：&lt;/p&gt;</description></item><item><title>Minecraft高级备份Advanced Backups 使用教程</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/minecraft%E6%88%91%E7%9A%84%E4%B8%96%E7%95%8C%E9%AB%98%E7%BA%A7%E5%A4%87%E4%BB%BDadvanced-backups-%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</link><pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/minecraft%E6%88%91%E7%9A%84%E4%B8%96%E7%95%8C%E9%AB%98%E7%BA%A7%E5%A4%87%E4%BB%BDadvanced-backups-%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</guid><description>&lt;h1 id="minecraft高级备份advanced-backups-使用教程"&gt;Minecraft高级备份Advanced Backups 使用教程&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;转载至MC百科 ZZYDD 仅供学习交流！ https://www.mcmod.cn/post/4786.html&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在MC百科中下载高级备份: &lt;a href="https://www.mcmod.cn/class/10769.html" target="_blank" rel="noopener"&gt;https://www.mcmod.cn/class/10769.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;这是我根据个人实际使用经验制作的教程。&lt;/p&gt;
&lt;p&gt;配置文件为3.7.1版本的mod生成，结合ChatGPT、DeepSeek辅助进行翻译。&lt;/p&gt;</description></item><item><title>Shadowsocks 四版本一键安装脚本使用教程</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/shadowsocks-%E5%9B%9B%E7%89%88%E6%9C%AC%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</link><pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/shadowsocks-%E5%9B%9B%E7%89%88%E6%9C%AC%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</guid><description>&lt;h1 id="shadowsocks-四版本一键安装脚本使用教程"&gt;Shadowsocks 四版本一键安装脚本使用教程&lt;/h1&gt;
&lt;h2 id="本脚本适用环境"&gt;本脚本适用环境&lt;/h2&gt;
&lt;p&gt;系统支持：CentOS 6+，Debian 7+，Ubuntu 12+
内存要求：≥128M
日期：2020 年 06 月 01 日&lt;/p&gt;
&lt;h2 id="默认配置"&gt;默认配置&lt;/h2&gt;
&lt;p&gt;服务器端口：自己设定（如不设定，默认从 9000-19999 之间随机生成）
密码：自己设定（如不设定，默认为 teddysun.com）
加密方式：自己设定（如不设定，Python 和 libev 版默认为 aes-256-gcm，R 和 Go 版默认为 aes-256-cfb）
协议（protocol）：自己设定（如不设定，默认为 origin）（仅限 ShadowsocksR 版）
混淆（obfs）：自己设定（如不设定，默认为 plain）（仅限 ShadowsocksR 版）&lt;/p&gt;</description></item><item><title>BinNav-静态导航有后台，免费部署EdgeOne Pages和Cloudflare Pages</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/binnav-%E9%9D%99%E6%80%81%E5%AF%BC%E8%88%AA%E6%9C%89%E5%90%8E%E5%8F%B0/</link><pubDate>Thu, 19 Feb 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/binnav-%E9%9D%99%E6%80%81%E5%AF%BC%E8%88%AA%E6%9C%89%E5%90%8E%E5%8F%B0/</guid><description>&lt;h1 id="binnav-静态导航有后台免费部署edgeone-pages和cloudflare-pages"&gt;BinNav-静态导航有后台，免费部署EdgeOne Pages和Cloudflare Pages&lt;/h1&gt;
&lt;p&gt;一个现代化的网站导航页面，支持可视化管理后台、智能图标获取、拖拽排序、自动提交和邮件发送功能和自动部署更新。部署至EdgeOne Pages无需服务器。&lt;/p&gt;</description></item><item><title>免费图床 CloudFlare ImgBed 部署教程</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/cloudflare-imgbed-%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B/</link><pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/cloudflare-imgbed-%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B/</guid><description>&lt;h1 id="免费图床-cloudflare-imgbed-部署教程"&gt;免费图床 CloudFlare ImgBed 部署教程&lt;/h1&gt;
&lt;p&gt;CloudFlare ImgBed 是一个基于 Cloudflare Pages 的开源文件托管解决方案，为用户提供免费、稳定、高效的文件存储服务。&lt;/p&gt;
&lt;p&gt;项目支持多种存储渠道，支持无服务器和有服务器部署方式，满足不同用户的需求。&lt;/p&gt;</description></item><item><title>Mizuki 博客免费搭建指南</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/mizuki%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E6%95%99/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/mizuki%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E6%95%99/</guid><description>&lt;h1 id="mizuki-博客免费搭建指南"&gt;Mizuki 博客免费搭建指南&lt;/h1&gt;
&lt;h2 id="一前期准备"&gt;一、前期准备&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;核心能力&lt;/strong&gt;：具备基础问题解决能力，遇到疑问优先思考、主动搜索，搜索无果可借助AI工具，避免盲目提问；能同时处理简单多任务。&lt;/p&gt;
&lt;h3 id="必备工具"&gt;必备工具&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;：最常用的版本控制器，用于操作GitHub（推荐官网安装：&lt;a href="https://git-scm.com/downloads" target="_blank" rel="noopener"&gt;Git - Downloads&lt;/a&gt;）。
&lt;ul&gt;
&lt;li&gt;补充：可尝试 GitHub Desktop。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt;：Fuwari 博客的运行基础，必须安装（官网：&lt;a href="https://nodejs.org/" target="_blank" rel="noopener"&gt;Node.js — Run JavaScript Everywhere&lt;/a&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub账号&lt;/strong&gt;：用于创建代码仓库，存放Fuwari博客的所有文件（注册地址：&lt;a href="https://github.com/" target="_blank" rel="noopener"&gt;GitHub&lt;/a&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare账号&lt;/strong&gt;：用于创建Pages服务，绑定域名实现博客公开访问（注册地址：&lt;a href="https://dash.cloudflare.com/sign-up" target="_blank" rel="noopener"&gt;Cloudflare&lt;/a&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;黑曜石（Obsidian）&lt;/strong&gt;：可视化Markdown编辑器，用于编写博客文章（Fuwari文章均为Markdown格式，官网：&lt;a href="https://obsidian.md/" target="_blank" rel="noopener"&gt;Obsidian&lt;/a&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基础技能&lt;/strong&gt;：掌握Markdown基础语法（用于编写博客文章），不会可参考：&lt;a href="https://markdown.com.cn/" target="_blank" rel="noopener"&gt;Markdown 基本语法 | Markdown 官方教程&lt;/a&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="二本地部署mizuki"&gt;二、本地部署Mizuki&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fork仓库&lt;/strong&gt;：访问 &lt;a href="https://github.com/matsuzaka-yuki/Mizuki" target="_blank" rel="noopener"&gt;Mizuki 官方仓库&lt;/a&gt;，点击右上角「Fork」，将仓库复制到自己的GitHub账号下。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;克隆仓库到本地&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;打开Git终端，输入命令：&lt;code&gt;git clone &amp;lt;你的仓库URL&amp;gt;&lt;/code&gt;（推荐使用SSH链接，无需科学上网即可推送更改）。&lt;/li&gt;
&lt;li&gt;提示：仓库URL可在自己Fork的仓库页面，点击「Code」获取。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安装依赖工具&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;全局安装pnpm（包管理工具）：输入命令&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="language-bash" data-line-count="1"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;bash&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g pnpm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码" hidden&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;补充：若npm国内下载速度过慢，可替换为cnpm（镜像），参考：&lt;a href="https://npmmirror.com/" target="_blank" rel="noopener"&gt;npmmirror 镜像站&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安装项目依赖&lt;/strong&gt;：进入克隆后的项目根目录，依次输入以下两条命令：
&lt;div class="language-bash" data-line-count="2"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;bash&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm add sharp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码" hidden&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;✅ &lt;strong&gt;至此，Fuwari 已成功在本地部署完成，可开始后续个性化配置。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>使用AI提示词，让AI快速修改符合规范的文章</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E4%BD%BF%E7%94%A8ai%E6%8F%90%E7%A4%BA%E8%AF%8D%E8%AE%A9ai%E5%BF%AB%E9%80%9F%E4%BF%AE%E6%94%B9%E7%AC%A6%E5%90%88%E8%A7%84%E8%8C%83%E7%9A%84%E6%96%87%E7%AB%A0/</link><pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E4%BD%BF%E7%94%A8ai%E6%8F%90%E7%A4%BA%E8%AF%8D%E8%AE%A9ai%E5%BF%AB%E9%80%9F%E4%BF%AE%E6%94%B9%E7%AC%A6%E5%90%88%E8%A7%84%E8%8C%83%E7%9A%84%E6%96%87%E7%AB%A0/</guid><description>&lt;p&gt;使用AI提示词，让AI快速修改符合规范的文章&lt;/p&gt;
&lt;p&gt;使用Firefly Astro这个博客时，快速转移文章内容是个问题。使用AI就会快很多，同时写的新文章也可以直接用AI修改格式。&lt;/p&gt;</description></item><item><title>Linux服务器性能网络测试脚本合集转载</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%80%A7%E8%83%BD%E7%BD%91%E7%BB%9C%E6%B5%8B%E8%AF%95%E8%84%9A%E6%9C%AC%E5%90%88%E9%9B%86%E8%BD%AC%E8%BD%BD/</link><pubDate>Tue, 23 Dec 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%80%A7%E8%83%BD%E7%BD%91%E7%BB%9C%E6%B5%8B%E8%AF%95%E8%84%9A%E6%9C%AC%E5%90%88%E9%9B%86%E8%BD%AC%E8%BD%BD/</guid><description>&lt;h1 id="1-来自-tyooecom-的-linux-服务器性能网络测试脚本合集转载"&gt;1. 来自 tyooe.com 的 Linux 服务器性能/网络测试脚本合集(转载)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;互联网创作，仅供个人使用，如有侵权，请联系删除
&lt;strong&gt;来源&lt;/strong&gt;：&lt;a href="https://tyooe.com/linux-benchmark-scripts" target="_blank" rel="noopener"&gt;https://tyooe.com/linux-benchmark-scripts&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;用途&lt;/strong&gt;：适用于新购 Linux 服务器后，快速评估硬件性能、网络连通性、流媒体解锁状态等，包含综合测试、专项性能测试、网络测试、解锁检测四大类脚本，可直接复制命令执行。&lt;/p&gt;</description></item><item><title>通过 Cloudflare warp 为纯IPv6 添加IPV4出口 1Panel搭建网站</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E9%80%9A%E8%BF%87-cloudflare-warp-%E4%B8%BA%E7%BA%AFipv6-%E6%B7%BB%E5%8A%A0ipv4%E5%87%BA%E5%8F%A3-1panel%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/</link><pubDate>Tue, 25 Nov 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E9%80%9A%E8%BF%87-cloudflare-warp-%E4%B8%BA%E7%BA%AFipv6-%E6%B7%BB%E5%8A%A0ipv4%E5%87%BA%E5%8F%A3-1panel%E6%90%AD%E5%BB%BA%E7%BD%91%E7%AB%99/</guid><description>&lt;p&gt;尽量使用Ubuntu-22.04及以上
或者Debian11及以上，以防在纯IPV6访问面板出现问题。
操作步骤&lt;/p&gt;
&lt;h3 id="1连接服务器"&gt;1.连接服务器&lt;/h3&gt;
&lt;p&gt;首先需要判断本机是否有 IPv6 地址，可以通过访问 &lt;a href="https://ip.gs" target="_blank" rel="noopener"&gt;https://ip.gs&lt;/a&gt; 检测是否拥有 IPv6&lt;/p&gt;</description></item><item><title>SillyTaverm酒馆实用插件&amp;资源推荐</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/sillytaverm%E9%85%92%E9%A6%86%E5%AE%9E%E7%94%A8%E6%8F%92%E4%BB%B6%E8%B5%84%E6%BA%90%E6%8E%A8%E8%8D%90/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/sillytaverm%E9%85%92%E9%A6%86%E5%AE%9E%E7%94%A8%E6%8F%92%E4%BB%B6%E8%B5%84%E6%BA%90%E6%8E%A8%E8%8D%90/</guid><description>&lt;h1 id="sillytaverm实用插件资源推荐"&gt;SillyTaverm实用插件&amp;amp;资源推荐&lt;/h1&gt;
&lt;h2 id="1-酒馆助手-tavern-helper"&gt;1. 酒馆助手 (Tavern-Helper)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;作者&lt;/strong&gt;：@𝚔𝚊𝚔𝚊𝚊🫠、@青空莉正辟谣
&lt;strong&gt;简介&lt;/strong&gt;：为 SillyTavern 设计的多功能扩展，支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在对话中渲染交互式界面（从按钮到复杂游戏界面）&lt;/li&gt;
&lt;li&gt;用 jQuery 操作 SillyTavern DOM（修改样式、绑定事件等）&lt;/li&gt;
&lt;li&gt;作为中间层连接 SillyTavern 与外部应用，实现数据/功能联动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;安装文档&lt;/strong&gt;：
&lt;a href="https://n0vi028.github.io/JS-Slash-Runner-Doc/guide/%E5%85%B3%E4%BA%8E%E9%85%92%E9%A6%86%E5%8A%A9%E6%89%8B/%E4%BB%8B%E7%BB%8D.html" target="_blank" rel="noopener"&gt;https://n0vi028.github.io/JS-Slash-Runner-Doc/guide/%E5%85%B3%E4%BA%8E%E9%85%92%E9%A6%86%E5%8A%A9%E6%89%8B/%E4%BB%8B%E7%BB%8D.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>VPS快速部署酒馆（SillyTavern）教程</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/vps%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2%E9%85%92%E9%A6%86sillytavern%E6%95%99%E7%A8%8B/</link><pubDate>Tue, 30 Sep 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/vps%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2%E9%85%92%E9%A6%86sillytavern%E6%95%99%E7%A8%8B/</guid><description>&lt;p&gt;VPS快速部署酒馆（SillyTavern）教程
面板推荐使用宝塔面板&lt;/p&gt;
&lt;p&gt;1.新建目录sillytavern&lt;/p&gt;
&lt;div class="language-text" data-line-count="1"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir sillytavern&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码" hidden&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;div class="language-text" data-line-count="1"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd sillytavern&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码" hidden&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;2.在文件夹内新建一个文件&lt;/p&gt;</description></item><item><title>快速启动AstrBot及NapCatQQ脚本</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8astrbot%E5%8F%8Anapcatqq%E8%84%9A%E6%9C%AC/</link><pubDate>Sat, 30 Aug 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8astrbot%E5%8F%8Anapcatqq%E8%84%9A%E6%9C%AC/</guid><description>&lt;p&gt;一个AstrBot在Termux容器部署时快速启动AstrBot及NapCatQQ脚本&lt;/p&gt;
&lt;h2 id="第一步创建管理脚本"&gt;第一步：创建管理脚本&lt;/h2&gt;
&lt;div class="language-bash" data-line-count="2"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;bash&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 创建脚本文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano ~/bot-manager.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码" hidden&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;h2 id="第二步复制粘贴内容"&gt;第二步：复制粘贴内容&lt;/h2&gt;
&lt;p&gt;将以下内容完整复制粘贴到 nano 编辑器中：&lt;/p&gt;</description></item><item><title>一些壁纸</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/gallery/bizhi/</link><pubDate>Mon, 18 Aug 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/gallery/bizhi/</guid><description/></item><item><title>秘密哦</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/gallery/jiamio/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/gallery/jiamio/</guid><description/></item><item><title>《“躺平”也是一种艺术》</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E8%BA%BA%E5%B9%B3%E4%B9%9F%E6%98%AF%E4%B8%80%E7%A7%8D%E8%89%BA%E6%9C%AF/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E8%BA%BA%E5%B9%B3%E4%B9%9F%E6%98%AF%E4%B8%80%E7%A7%8D%E8%89%BA%E6%9C%AF/</guid><description>&lt;p&gt;躺平也是一种艺术
近年来，一种新生代的生活态度在年轻人中逐渐兴起，那就是“躺平”。躺平一词被广泛解读为平凡而安于现状的生活态度，不过度奋斗，追求内心的平静与舒适。虽然这种态度引发了许多争议和质疑，但人们不可否认，躺平也是一种艺术。&lt;/p&gt;</description></item><item><title>B站批量取消关注移除粉丝</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/b%E7%AB%99%E6%89%B9%E9%87%8F%E5%8F%96%E6%B6%88%E5%85%B3%E6%B3%A8%E7%A7%BB%E9%99%A4%E7%B2%89%E4%B8%9D/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/b%E7%AB%99%E6%89%B9%E9%87%8F%E5%8F%96%E6%B6%88%E5%85%B3%E6%B3%A8%E7%A7%BB%E9%99%A4%E7%B2%89%E4%B8%9D/</guid><description>&lt;p&gt;浏览器打开B站关注页面，打开浏览器（Console）控制台，输入以下脚本即可。如果有报错或繁忙刷新重新开始就行。&lt;/p&gt;
&lt;h3 id="批量取消关注"&gt;批量取消关注&lt;/h3&gt;
&lt;h4 id="版本一自动翻页"&gt;版本一，自动翻页&lt;/h4&gt;
&lt;div class="language-text max-h-360px code-foldable folded" data-line-count="150"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(async () =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 等待函数
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const sleep = (s) =&amp;gt; new Promise(resolve =&amp;gt; setTimeout(resolve, s * 1000));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 取消关注当前页的所有用户
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const unfollowAll = async () =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let items = document.querySelectorAll(&amp;#39;.follow-btn__trigger.gray&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;本页待取消关注数量:&amp;#39;, items.length);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for (let i = 0; i &amp;lt; items.length; i++) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(`取消第 ${i+1}/${items.length} 个`);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 创建真实鼠标事件模拟点击
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const event = new MouseEvent(&amp;#39;click&amp;#39;, {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; view: window,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bubbles: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cancelable: true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }); // 修正：添加了右括号
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; items[i].dispatchEvent(event);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(1.5); // 增加等待时间降低风控风险
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return items.length;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 查找并点击下一页按钮
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const clickNextPage = async () =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;正在寻找下一页按钮...&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 针对B站实际页面结构优化的选择器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const nextPageSelectors = [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;.be-pager-next&amp;#39;, // B站分页组件的下一页按钮
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;.be-pager-item:last-child a&amp;#39;, // 分页区域的最后一个按钮
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;a[title=&amp;#34;下一页&amp;#34;]&amp;#39;, // 带title属性的按钮
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;button:contains(&amp;#34;下一页&amp;#34;)&amp;#39; // 包含&amp;#34;下一页&amp;#34;文本的按钮
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let nextButton = null;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 尝试多种选择器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for (const selector of nextPageSelectors) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; try {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (selector.includes(&amp;#39;:contains&amp;#39;)) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 文本内容匹配
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const elements = document.querySelectorAll(selector.split(&amp;#39;:contains&amp;#39;)[0]);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for (const el of elements) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (el.textContent.includes(&amp;#39;下一页&amp;#39;)) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; nextButton = el;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; break;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } else {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 常规选择器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; nextButton = document.querySelector(selector);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (nextButton &amp;amp;&amp;amp; nextButton.offsetParent !== null) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(`找到下一页按钮: ${selector}`);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; break;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } catch (e) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.warn(`选择器 ${selector} 执行失败:`, e);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (nextButton) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 检查按钮是否被禁用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (nextButton.classList.contains(&amp;#39;disabled&amp;#39;) || 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; nextButton.getAttribute(&amp;#39;disabled&amp;#39;) === &amp;#39;disabled&amp;#39;) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;已到达最后一页，任务完成！&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return false;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;点击下一页按钮&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 创建真实鼠标事件模拟点击
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const event = new MouseEvent(&amp;#39;click&amp;#39;, {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; view: window,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bubbles: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cancelable: true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }); // 修正：添加了右括号
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; nextButton.dispatchEvent(event);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(3); // 等待新页面加载
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return true;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } else {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;未找到下一页按钮，尝试备用方案...&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 备用方案：直接获取分页按钮列表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const paginationItems = document.querySelectorAll(&amp;#39;.be-pager-item&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (paginationItems.length &amp;gt; 0) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const lastItem = paginationItems[paginationItems.length - 1];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (lastItem.textContent.includes(&amp;#39;下一页&amp;#39;)) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;通过分页列表找到下一页按钮&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const event = new MouseEvent(&amp;#39;click&amp;#39;, {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; view: window,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bubbles: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cancelable: true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }); // 修正：添加了右括号
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lastItem.dispatchEvent(event);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(3); // 等待新页面加载
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return true;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;未找到下一页按钮，任务可能已完成或需要手动检查&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return false;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 主执行流程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; try {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let pageCount = 1;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; while (true) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(`\n===== 开始处理第 ${pageCount} 页 =====`);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const processedCount = await unfollowAll();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (processedCount &amp;gt; 0) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(`第 ${pageCount} 页已清理完毕！`);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } else {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(`第 ${pageCount} 页没有需要取消关注的用户`);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 等待页面稳定
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(2);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 尝试翻页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const hasNext = await clickNextPage();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (!hasNext) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;没有更多页面，任务完成！&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; break;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 等待新页面内容加载
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;等待新页面加载...&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(4);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pageCount++;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } catch (error) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.error(&amp;#39;执行过程中出错:&amp;#39;, error);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;建议刷新页面后重新执行脚本&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码"&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;h4 id="版本二"&gt;版本二&lt;/h4&gt;
&lt;div class="language-text max-h-360px code-foldable folded" data-line-count="31"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(async () =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const sleep = (ms) =&amp;gt; new Promise(resolve =&amp;gt; setTimeout(resolve, ms * 1000));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let data = document.querySelectorAll(&amp;#39;.follow-btn__trigger.gray&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;获取本页关注数量:&amp;#39;, data.length);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let dataIndex = 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let pageIndex = 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; while (dataIndex &amp;lt; data.length) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const x = data[dataIndex];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(`正在取消第:${dataIndex + 1} 个关注`);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; x.click();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(1);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (data.length - 1 === dataIndex) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let pages = document.querySelectorAll(&amp;#39;.vui_button.vui_button--no-transition.vui_pagenation--btn.vui_pagenation--btn-num&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(0.5);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (pages.length &amp;gt; 1) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pageIndex = pageIndex === 1 ? 0 : 1;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } else {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(`没有更多的页面了`);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; break;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pages[pageIndex].click();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(1);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; data = document.querySelectorAll(&amp;#39;.follow-btn__trigger.gray&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;重新获取本页数量:&amp;#39;, data.length);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dataIndex = 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } else {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dataIndex++;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;已取消全部关注&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码"&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;h3 id="批量移除粉丝"&gt;批量移除粉丝&lt;/h3&gt;
&lt;div class="language-text max-h-360px code-foldable folded" data-line-count="29"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(async () =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const sleep = (s) =&amp;gt; new Promise(resolve =&amp;gt; setTimeout(resolve, s * 1000));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for (var i = 0; i &amp;lt; 100; i++) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; try {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; var parent = document.getElementsByClassName(&amp;#39;vui_icon sic-BDC-more_vertical_fill icon&amp;#39;)[0];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; var enterEvent = new MouseEvent(&amp;#39;mouseenter&amp;#39;, {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bubbles: true, // 允许事件冒泡
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cancelable: true, // 事件可被取消
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; view: window // 关联当前窗口
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; parent.dispatchEvent(enterEvent);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; var menuItems = document.getElementsByClassName(&amp;#39;menu-popover__panel-item&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for (var j = 0; j &amp;lt; menuItems.length; j++) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (menuItems[j].innerText === &amp;#39;移除粉丝&amp;#39;) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#34;成功移除粉丝&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; menuItems[j].click();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 模拟鼠标离开（可选）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const leaveEvent = new MouseEvent(&amp;#39;mouseleave&amp;#39;, { bubbles: true, cancelable: true });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; parent.dispatchEvent(leaveEvent);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; document.getElementsByClassName(&amp;#39;vui_checkbox--label&amp;#39;)[0].click();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; document.getElementsByClassName(&amp;#39;vui_button vui_button--blue vui_dialog--btn vui_dialog--btn-confirm&amp;#39;)[0].click();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } catch (error) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; await sleep(1); // 等待1秒防触发风控
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;清理完毕！重新执行脚本&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;})();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码"&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;如果是服务器挂可以用这个持续窗口bat&lt;/p&gt;</description></item><item><title>Hello&amp;Qgxs引导页</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/helloqgxs%E5%BC%95%E5%AF%BC%E9%A1%B5/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/helloqgxs%E5%BC%95%E5%AF%BC%E9%A1%B5/</guid><description>&lt;p&gt;Hello&amp;amp;Qgxs引导页
html单页
AI写的
自适应页面
可以托管Cloudflare&lt;/p&gt;
&lt;p&gt;当做小页面放在博客里面，挺不错的
我的演示页面&lt;a href="https:/dh.20210701.xyz/" target="_blank" rel="noopener"&gt;dh.20210701.xyz&lt;/a&gt;&lt;/p&gt;
&lt;div class="language-text max-h-360px code-foldable folded" data-line-count="96"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE html&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;html lang=&amp;#34;zh-CN&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;head&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta charset=&amp;#34;UTF-8&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta name=&amp;#34;viewport&amp;#34; content=&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta name=&amp;#34;robots&amp;#34; content=&amp;#34;index, follow&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta name=&amp;#34;description&amp;#34; content=&amp;#34;Hello Qgxs - 欢迎来到我的个人网站&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta name=&amp;#34;theme-color&amp;#34; content=&amp;#34;#0ea5e9&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Cloudflare优化 --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta http-equiv=&amp;#34;Cache-Control&amp;#34; content=&amp;#34;public, max-age=31536000, immutable&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta http-equiv=&amp;#34;X-UA-Compatible&amp;#34; content=&amp;#34;IE=edge&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;title&amp;gt;Qgxs&amp;amp;Hello&amp;lt;/title&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;link rel=&amp;#34;preconnect&amp;#34; href=&amp;#34;https://fonts.googleapis.com&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;link rel=&amp;#34;preconnect&amp;#34; href=&amp;#34;https://fonts.gstatic.com&amp;#34; crossorigin&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;link rel=&amp;#34;preconnect&amp;#34; href=&amp;#34;https://events.vercount.one&amp;#34; crossorigin&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;link rel=&amp;#34;preconnect&amp;#34; href=&amp;#34;https://www.20210701.xyz&amp;#34; crossorigin&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;link href=&amp;#34;https://fonts.googleapis.com/css2?family=Pacifico&amp;amp;display=swap&amp;amp;text=Hello%20Qgxs&amp;#34; rel=&amp;#34;stylesheet&amp;#34; media=&amp;#34;print&amp;#34; onload=&amp;#34;this.media=&amp;#39;all&amp;#39;&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;noscript&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;link href=&amp;#34;https://fonts.googleapis.com/css2?family=Pacifico&amp;amp;display=swap&amp;#34; rel=&amp;#34;stylesheet&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/noscript&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;style&amp;gt;*{margin:0;padding:0;box-sizing:border-box}:root{--primary:#0ea5e9;--dark:#0f172a}body{background-color:var(--dark);color:white;font-family:system-ui,-apple-system,sans-serif;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.text-gradient{background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.glow{filter:drop-shadow(0 0 6px rgba(14,165,233,0.5));-webkit-filter:drop-shadow(0 0 6px rgba(14,165,233,0.5))}.bg-grid{background-size:20px 20px;background-image:linear-gradient(to right,rgba(14,165,233,0.03) 1px,transparent 1px),linear-gradient(to bottom,rgba(14,165,233,0.03) 1px,transparent 1px)}@keyframes sweep{0%{background-position:-200% 0}100%{background-position:200% 0}}.text-sweep{background:linear-gradient(90deg,rgba(255,255,255,0.1),rgba(255,255,255,0.9),rgba(255,255,255,0.1));background-size:200% 100%;animation:sweep 4s ease-in-out infinite;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.compact-stat{background:rgba(14,165,233,0.08);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border:1px solid rgba(14,165,233,0.15)}.fixed-bg{position:fixed;inset:0;z-index:0}.bg-blob{position:fixed;border-radius:50%;filter:blur(80px);opacity:0.15;pointer-events:none}.bg-blob-1{width:60vh;height:60vh;background-color:var(--primary);transform:translate(-50%,-50%);z-index:0}.bg-blob-2{width:40vh;height:40vh;background-color:var(--primary);opacity:0.1;transform:translate(33%,33%);z-index:0}main{position:relative;z-index:10;display:flex;flex-direction:column;align-items:center;text-align:center;padding:1.5rem;width:100%;max-width:32rem;opacity:0;transform:translateY(20px);animation:fadeIn 0.6s ease forwards;animation-delay:0.1s}@keyframes fadeIn{to{opacity:1;transform:translateY(0)}}.avatar-container{margin-bottom:1rem}.avatar{width:6rem;height:6rem;border-radius:50%;overflow:hidden;border:2px solid rgba(14,165,233,0.3)}@media (min-width:768px){.avatar{width:7rem;height:7rem}}.avatar img{width:100%;height:100%;object-fit:cover}h1{font-size:clamp(2rem,5vw,3rem);font-family:&amp;#39;Pacifico&amp;#39;,cursive;margin-bottom:0.5rem}.welcome-text{color:#9ca3af;font-size:0.875rem;margin-bottom:1.5rem;max-width:24rem;line-height:1.5;padding:0 1rem}@media (min-width:768px){.welcome-text{font-size:1rem}}.button-group{display:flex;gap:0.75rem;margin-bottom:1.5rem}.btn{padding:0.5rem 1rem;border-radius:9999px;background-color:rgba(255,255,255,0.05);color:white;text-decoration:none;display:flex;align-items:center;gap:0.375rem;font-size:0.875rem;transition:all 0.3s ease}.btn:hover{background-color:rgba(255,255,255,0.1);transform:scale(1.05)}.btn-primary{padding:0.625rem 1.5rem;background:linear-gradient(to right,var(--primary),#38bdf8);color:white;font-weight:500}.btn-primary:hover{background:linear-gradient(to right,#38bdf8,var(--primary));background-color:transparent}.stats{position:relative;z-index:10;margin:0.5rem 0}.compact-stat{padding:0.375rem 0.75rem;border-radius:9999px;display:flex;align-items:center;gap:0.75rem;font-size:0.75rem}.stat-item{display:flex;align-items:center;gap:0.25rem}.stat-divider{color:rgba(14,165,233,0.4)}footer{position:relative;z-index:10;margin-top:0.25rem;padding:1rem;color:#9ca3af;font-size:0.75rem;width:100%;text-align:center}.animate-pulse{animation:pulse 0.5s ease-in-out}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}&amp;lt;/style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/head&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;fixed-bg bg-grid&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;bg-blob bg-blob-1&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;bg-blob bg-blob-2&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;main&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;avatar-container&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;avatar glow&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;img src=&amp;#34;https://www.20210701.xyz/icon.jpeg&amp;#34; alt=&amp;#34;Avatar&amp;#34; loading=&amp;#34;lazy&amp;#34; decoding=&amp;#34;async&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;h1 data-text=&amp;#34;Hello Qgxs&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span class=&amp;#34;text-sweep&amp;#34;&amp;gt;Hello Qgxs&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/h1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- 紧凑版欢迎文本 --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;welcome-text&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span style=&amp;#34;color: rgba(14, 165, 233, 0.9);&amp;#34;&amp;gt;欢迎到来。&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 愿本站伴我走过春秋岁月，
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 也祝各位访客&amp;lt;span style=&amp;#34;color: rgba(14, 165, 233, 0.9); margin-left: 0.25rem;&amp;#34;&amp;gt;生活顺心。&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;button-group&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;https://www.20210701.xyz/&amp;#34; class=&amp;#34;btn glow&amp;#34; aria-label=&amp;#34;访问我的博客&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span role=&amp;#34;img&amp;#34; aria-label=&amp;#34;博客&amp;#34;&amp;gt;📚&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span&amp;gt;博客&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;https://20210701.xyz/&amp;#34; class=&amp;#34;btn glow&amp;#34; aria-label=&amp;#34;访问100周年网站&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span role=&amp;#34;img&amp;#34; aria-label=&amp;#34;100周年&amp;#34;&amp;gt;🇨🇳&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span&amp;gt;100周年&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;https://www.20210701.xyz/about.html&amp;#34; class=&amp;#34;btn btn-primary glow&amp;#34; aria-label=&amp;#34;了解关于我&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 关于我
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/main&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- 紧凑统计信息 - 使用 Vercount --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;stats&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;compact-stat glow&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;stat-item&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span style=&amp;#34;color: #0ea5e9;&amp;#34;&amp;gt;⏱️&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span id=&amp;#34;run-days&amp;#34;&amp;gt;计算中...&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;stat-divider&amp;#34;&amp;gt;•&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;stat-item&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span style=&amp;#34;color: #0ea5e9;&amp;#34;&amp;gt;👁️&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 浏览 &amp;lt;span id=&amp;#34;vercount_value_site_pv&amp;#34;&amp;gt;Loading&amp;lt;/span&amp;gt;次
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;footer&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; © 2025 Hello Qgxs. All rights reserved.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;br&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;span style=&amp;#34;font-size: 0.625rem; opacity: 0.7;&amp;#34;&amp;gt;托管在 &amp;lt;a href=&amp;#34;https://www.cloudflare.com&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34; style=&amp;#34;color: inherit; text-decoration: none; border-bottom: 1px dotted rgba(255, 255, 255, 0.3);&amp;#34;&amp;gt;Cloudflare&amp;lt;/a&amp;gt; | 由 &amp;lt;a href=&amp;#34;https://www.cloudflare.com&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34; style=&amp;#34;color: inherit; text-decoration: none; border-bottom: 1px dotted rgba(255, 255, 255, 0.3);&amp;#34;&amp;gt;Cloudflare&amp;lt;/a&amp;gt; CDN 提供加速与安全防护&amp;lt;/span&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/footer&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Vercount 官方脚本 --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;script defer src=&amp;#34;https://events.vercount.one/js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;script&amp;gt;document.addEventListener(&amp;#39;DOMContentLoaded&amp;#39;,()=&amp;gt;{function u(){const e=new Date(&amp;#39;2025-12-24&amp;#39;),t=new Date(),n=Math.floor((t-e)/(1e3*60*60*24));const o=document.getElementById(&amp;#39;run-days&amp;#39;);o&amp;amp;&amp;amp;(o.textContent=`${n}天`)}u();const e=document.getElementById(&amp;#39;vercount_value_site_pv&amp;#39;);if(e){function t(){if(e.textContent&amp;amp;&amp;amp;&amp;#39;Loading&amp;#39;!==e.textContent){const n=parseInt(e.textContent);return isNaN(n)||(e.textContent=n.toLocaleString()),!0}return!1}if(!t()){let n=0;const o=()=&amp;gt;{n++;if(!t()&amp;amp;&amp;amp;n&amp;lt;10)setTimeout(o,500*n);else if(n&amp;gt;=10&amp;amp;&amp;amp;&amp;#39;Loading&amp;#39;===e.textContent)e.textContent=&amp;#39;0&amp;#39;};o()}}setInterval(u,30*60*1e3)});&amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码"&gt;&lt;/button&gt;
&lt;/div&gt;</description></item><item><title>一个粉的宝塔默认页面系列</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E4%B8%80%E4%B8%AA%E7%B2%89%E7%9A%84%E5%AE%9D%E5%A1%94%E9%BB%98%E8%AE%A4%E9%A1%B5%E9%9D%A2%E7%B3%BB%E5%88%97/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E4%B8%80%E4%B8%AA%E7%B2%89%E7%9A%84%E5%AE%9D%E5%A1%94%E9%BB%98%E8%AE%A4%E9%A1%B5%E9%9D%A2%E7%B3%BB%E5%88%97/</guid><description>&lt;h3 id="1站点搭建成功提示"&gt;1.站点搭建成功提示&lt;/h3&gt;
&lt;p&gt;&lt;img
 src="https://github.com/user-attachments/assets/958a6118-0a9e-4a8b-8d4b-8c7ee41b3949"
 alt="1768750745561_edit_723285037835753.jpg"
 loading="lazy"
 decoding="async"
&gt;&lt;/p&gt;
&lt;div class="language-text max-h-360px code-foldable folded" data-line-count="118"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE html&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;html lang=&amp;#34;zh-CN&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;head&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta charset=&amp;#34;UTF-8&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta name=&amp;#34;viewport&amp;#34; content=&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;title&amp;gt;站点搭建成功 ✧(≖ ◡ ≖✿)&amp;lt;/title&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * {margin: 0;padding: 0;box-sizing: border-box;font-family: &amp;#34;Microsoft YaHei&amp;#34;, &amp;#34;PingFang SC&amp;#34;, sans-serif;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; body {min-height: 100vh;display: flex;align-items: center;justify-content: center;background: #fff5f8;padding: 20px;position: relative;overflow: hidden;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 可爱漂浮装饰 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .decor {position: absolute;pointer-events: none;z-index: 0;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .decor1 {top: 20%;left: 10%;font-size: 24px;color: #ffd6e0;animation: float 6s infinite ease-in-out;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .decor2 {bottom: 15%;right: 15%;font-size: 18px;color: #ffb3c6;animation: float 8s infinite ease-in-out 2s;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .decor3 {top: 60%;left: 20%;font-size: 20px;color: #ff99cc;animation: float 7s infinite ease-in-out 1s;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @keyframes float {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 0% {transform: translateY(0) rotate(0deg);}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 50% {transform: translateY(-15px) rotate(5deg);}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 100% {transform: translateY(0) rotate(0deg);}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 宝塔原生风格容器 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .box {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background: #fff;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 40px 20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border-radius: 16px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; box-shadow: 0 3px 15px rgba(255,153,204,0.2);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; text-align: center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; max-width: 400px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width: 100%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position: relative;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; z-index: 1;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border: 2px solid #ffd6e0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 可爱成功图标（替换原svg） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .success-icon {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width: 64px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; height: 64px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin: 0 auto 20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position: relative;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .success-icon::before {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; content: &amp;#34;✧&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 64px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #ff6699;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; animation: bounce 1.5s infinite alternate;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @keyframes bounce {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; from {transform: scale(1);}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; to {transform: scale(1.1);}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; h1 {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 22px; /* 手机端缩小字体 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #ff6699;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin: 0 0 16px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-weight: 600;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; text-shadow: 0 1px 3px rgba(255,102,153,0.15);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; letter-spacing: 0.5px; /* 微调字间距，避免换行 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 响应式标题优化：小屏幕进一步缩小颜文字占比 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @media (max-width: 375px) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; h1 {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 0 10px; /* 增加左右内边距，给文字更多空间 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; h1 span {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 18px; /* 颜文字单独缩小 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; p {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #999;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 15px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; line-height: 1.6;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin-bottom: 28px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 按钮样式（粉嫩主题） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; a {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display: inline-block;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 12px 30px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background: #ff99cc;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #fff;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; text-decoration: none;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border-radius: 30px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 15px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transition: all 0.3s ease;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; box-shadow: 0 2px 8px rgba(255,153,204,0.2);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; a:hover {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background: #ff6699;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; box-shadow: 0 4px 12px rgba(255,102,153,0.3);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transform: translateY(-2px);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 底部版权 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .footer {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 12px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #ffb3c6;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin-top: 30px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; letter-spacing: 0.5px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .footer::after {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; content: &amp;#34; ✧ෆ◞◟˃̶̤⌄˂̶̤⋆biubiu&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/head&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- 可爱漂浮装饰 --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;decor decor1&amp;#34;&amp;gt;✿&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;decor decor2&amp;#34;&amp;gt;★&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;decor decor3&amp;#34;&amp;gt;♡&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;box&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;success-icon&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- 标题拆分颜文字，方便响应式调整 --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;h1&amp;gt;站点搭建成功啦 &amp;lt;span&amp;gt;✧(≖ ◡ ≖✿)&amp;lt;/span&amp;gt;&amp;lt;/h1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p&amp;gt;粉嫩小站已就绪，快去探索更多可爱玩法吧～&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;https://www.bt.cn/&amp;#34; target=&amp;#34;_blank&amp;#34;&amp;gt;官方文档&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;footer&amp;#34;&amp;gt;© 宝塔面板 服务器管理工具&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码"&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;h3 id="2404提示页面"&gt;2.404提示页面&lt;/h3&gt;
&lt;p&gt;&lt;img
 src="https://github.com/user-attachments/assets/ec81d7c9-07ac-4268-9d2c-63cb8d0baf43"
 alt="1768750993209.webp"
 loading="lazy"
 decoding="async"
&gt;&lt;/p&gt;</description></item><item><title>一个可能有效的防攻击代码….</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E4%B8%80%E4%B8%AA%E5%8F%AF%E8%83%BD%E6%9C%89%E6%95%88%E7%9A%84%E9%98%B2%E6%94%BB%E5%87%BB%E4%BB%A3%E7%A0%81/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E4%B8%80%E4%B8%AA%E5%8F%AF%E8%83%BD%E6%9C%89%E6%95%88%E7%9A%84%E9%98%B2%E6%94%BB%E5%87%BB%E4%BB%A3%E7%A0%81/</guid><description>&lt;blockquote&gt;
&lt;p&gt;互联网创作，仅供个人使用，如有侵权，请联系删除
来源网络地址:https://loli520.com/286.html
我的演示页面: &lt;a href="https://gj.qqgxs.qzz.io" target="_blank" rel="noopener"&gt;gj.qqgxs.qzz.io&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="language-text max-h-360px code-foldable folded" data-line-count="164"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE html&amp;gt;&amp;lt;html lang=&amp;#34;zh&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;head&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta charset=&amp;#34;UTF-8&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta name=&amp;#34;viewport&amp;#34; content=&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;title&amp;gt;求求你手下留情QAQ&amp;lt;/title&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; body {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background: linear-gradient(180deg, #ffe4e9, #ffc0cb);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-family: &amp;#34;Comic Sans MS&amp;#34;, &amp;#34;微软雅黑&amp;#34;, cursive;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin: 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display: flex;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; align-items: center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; justify-content: center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; min-height: 100vh;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .container {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; max-width: 480px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width: 100%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; box-sizing: border-box;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; text-align: center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .crying-girl {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; max-width: 240px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; height: auto;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; animation: shake 1s infinite alternate;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; filter: drop-shadow(0px 5px 10px rgba(255, 77, 109, 0.3));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin-bottom: 15px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @keyframes shake {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 0% { transform: translateX(-2px); }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 100% { transform: translateX(2px); }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .text, .small-text, .contact {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background: rgba(255, 255, 255, 0.9);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin: 10px auto;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 10px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border-radius: 12px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; max-width: 90%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .text {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #ff5e78;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-weight: bold;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .small-text {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 14px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #666;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .contact {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 16px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #ff4d6d;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display: flex;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; justify-content: center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; align-items: center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gap: 6px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .qq-icon {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width: 22px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; height: 22px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .contact a {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #ff4d6d;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; text-decoration: none;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .contact a:hover {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; text-decoration: underline;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .love-btn {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background: linear-gradient(135deg, #ff5e78, #ff2e63);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: white;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 16px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-weight: bold;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border: none;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 10px 20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border-radius: 25px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cursor: pointer;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin-top: 15px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transition: 0.3s ease;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .love-btn:hover {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transform: scale(1.05);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .popup {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display: none;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position: fixed;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; top: 50%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; left: 50%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transform: translate(-50%, -50%);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background: #ffe4e9;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border-radius: 15px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; text-align: center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; box-shadow: 0px 4px 8px rgba(255, 94, 120, 0.2);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width: 90%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; max-width: 320px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .popup-content p {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 16px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: #ff5e78;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-weight: bold;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .popup-content button {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background: linear-gradient(135deg, #ff5e78, #ff2e63);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color: white;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size: 14px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border: none;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding: 8px 16px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border-radius: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cursor: pointer;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin-top: 10px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .popup-content button:hover {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transform: scale(1.05);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/head&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;container&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;img src=&amp;#34;https://loli520.com/wp-content/uploads/2025/03/20250305085825937-backgrounderaser_1741136243.png&amp;#34; class=&amp;#34;crying-girl&amp;#34; alt=&amp;#34;可怜的小女孩&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;text&amp;#34;&amp;gt;呜呜... 你真的要攻击人家吗？(つ﹏⊂)&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;small-text&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 人家只是个小小服务器…你这么大力，人家真的要坏掉了QAQ！&amp;lt;br&amp;gt;要不…先停一下，求求你啦~
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;contact&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;img src=&amp;#34;https://img.icons8.com/color/48/000000/qq.png&amp;#34; class=&amp;#34;qq-icon&amp;#34; alt=&amp;#34;QQ&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;https://qm.qq.com/q/9tcfSwgVNe&amp;#34;&amp;gt;联系我: QQ 123456&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;button class=&amp;#34;love-btn&amp;#34; onclick=&amp;#34;showThanks()&amp;#34;&amp;gt;💖 点一下手下留情 💖&amp;lt;/button&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div id=&amp;#34;cute-popup&amp;#34; class=&amp;#34;popup&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;popup-content&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p&amp;gt;谢谢你愿意和我聊聊 💖&amp;lt;br&amp;gt;点下面的按钮就能找到人家啦~&amp;lt;br&amp;gt;(&amp;gt;﹏&amp;lt;)&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;button onclick=&amp;#34;goToQQ()&amp;#34;&amp;gt;✨ 来找人家玩 ✨&amp;lt;/button&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function showThanks() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; document.getElementById(&amp;#34;cute-popup&amp;#34;).style.display = &amp;#34;block&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function goToQQ() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; window.location.href = &amp;#34;https://qm.qq.com/q/9tcfSwgVNe&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; document.onkeydown = function (e) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (e.keyCode == 123 || (e.ctrlKey &amp;amp;&amp;amp; (e.keyCode == 85 || e.keyCode == 83))) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; alert(&amp;#34;嘤嘤嘤~宝宝，不要扒人家的代码啦！QAQ&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return false;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (function () {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; var element = new Image();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Object.defineProperty(element, &amp;#39;id&amp;#39;, {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; get: function () {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; alert(&amp;#34;喵喵喵~你在干嘛呀QAQ？&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; window.location.href = &amp;#34;about:blank&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; console.log(&amp;#39;%c &amp;#39;, element);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; })();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码"&gt;&lt;/button&gt;
&lt;/div&gt;</description></item><item><title>知足者常乐</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E7%9F%A5%E8%B6%B3%E8%80%85%E5%B8%B8%E4%B9%90/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E7%9F%A5%E8%B6%B3%E8%80%85%E5%B8%B8%E4%B9%90/</guid><description>&lt;p&gt;果然，晚饭后就下起了雨，但我在心里却很开心。因为下雨会凉快。&lt;/p&gt;
&lt;p&gt;生活真的好无味，但有时他有像加了盐的糖包，用香甜可口的外壳来掩盖他那痛苦的滋味。&lt;/p&gt;
&lt;p&gt;不知从什么时候开始，不知道生活的目的是什么，我现在越来越消极了，没有以前那么热情了。就像躺平，但我怎么也躺不平。&lt;/p&gt;</description></item><item><title>中国共产党成立100周年纪念单页</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E4%B8%AD%E5%9B%BD%E5%85%B1%E4%BA%A7%E5%85%9A%E6%88%90%E7%AB%8B100%E5%91%A8%E5%B9%B4%E7%BA%AA%E5%BF%B5%E5%8D%95%E9%A1%B5/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/%E4%B8%AD%E5%9B%BD%E5%85%B1%E4%BA%A7%E5%85%9A%E6%88%90%E7%AB%8B100%E5%91%A8%E5%B9%B4%E7%BA%AA%E5%BF%B5%E5%8D%95%E9%A1%B5/</guid><description>&lt;p&gt;html单页
AI写的
自适应页面
可以托管Cloudflare&lt;/p&gt;
&lt;p&gt;当做小页面放在博客里面，挺不错的
我的演示页面:&lt;a href="https://20210701.xyz/" target="_blank" rel="noopener"&gt;20210701.xyz&lt;/a&gt;&lt;/p&gt;
&lt;div class="language-text max-h-360px code-foldable folded" data-line-count="528"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;text&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!doctype html&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;html lang=&amp;#34;zh-CN&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;head&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta charset=&amp;#34;utf-8&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta name=&amp;#34;viewport&amp;#34; content=&amp;#34;width=device-width,initial-scale=1&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;title&amp;gt;百年征程 · 热烈庆祝中国共产党成立100周年&amp;lt;/title&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;link href=&amp;#34;https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;700&amp;amp;family=ZCOOL+QingKe+HuangYou&amp;amp;display=swap&amp;#34; rel=&amp;#34;stylesheet&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; :root{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --red:#C91F1F;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --deep-red:#961414;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --gold:#D9A441;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --bg:#FFF8F2;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --text:#3b2f2f;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --glass: rgba(255,255,255,0.65);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --lantern-width:120px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --max-width:1100px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; *{box-sizing:border-box}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; html,body{height:100%}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; body{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin:0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-family: &amp;#34;Noto Serif SC&amp;#34;, &amp;#34;ZCOOL QingKe HuangYou&amp;#34;, serif;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color:var(--text);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background:linear-gradient(180deg,#fff 0%, #FFF8F2 40%, #FFF1E6 100%);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -webkit-font-smoothing:antialiased;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -moz-osx-font-smoothing:grayscale;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; overflow-y:auto;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .ink-bg{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position:fixed;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; inset:0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background-image:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; radial-gradient(circle at 8% 18%, rgba(0,0,0,0.02) 0 2%, transparent 10%),
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; radial-gradient(circle at 88% 78%, rgba(0,0,0,0.02) 0 2%, transparent 12%);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mix-blend-mode:multiply;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pointer-events:none;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; z-index:0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* HERO */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .hero{position:relative;padding:36px 20px;overflow:hidden}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .hero-inner{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display:flex;align-items:center;justify-content:space-between;gap:18px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; max-width:1200px;margin:0 auto;position:relative;z-index:2;transition:transform .12s linear;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .left-deco,.right-deco{width:110px;flex:0 0 110px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .title-wrap{flex:1;text-align:center}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .title{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-family:&amp;#34;ZCOOL QingKe HuangYou&amp;#34;,&amp;#34;Noto Serif SC&amp;#34;,serif;color:var(--deep-red);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-size:56px;margin:0;letter-spacing:2px;text-shadow:0 6px 18px rgba(201,31,31,0.12);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transform-origin:center;animation:float 6s ease-in-out infinite;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .subtitle{margin:8px 0 18px;color:#5c3e3e;font-size:16px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .ribbon{margin-top:14px;display:inline-block;background:linear-gradient(90deg,#D94343,#C22B2B);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color:#FFF8F2;padding:8px 18px;border-radius:999px;box-shadow:0 6px 18px rgba(201,31,31,0.12);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-weight:600;letter-spacing:1px;font-size:14px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .clouds{position:absolute;left:0;right:0;bottom:-2px;height:120px;opacity:0.95;z-index:1}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 布局：概览 + 时间轴（Grid 版，增强响应式） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .container{max-width:var(--max-width);margin:28px auto;padding:0 20px;display:block;gap:20px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .card{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background:linear-gradient(180deg, rgba(255,255,255,0.82), rgba(255,250,245,0.96));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border-radius:12px;padding:18px;box-shadow:0 8px 30px rgba(0,0,0,0.06);border:1px solid rgba(0,0,0,0.03);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .card h2{margin:0 0 8px 0}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .card p{margin:0;font-size:15px;line-height:1.7}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 纵向时间轴（基于 Grid 的行） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .timeline{padding:24px 16px 46px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .section-title{text-align:center;font-size:24px;margin:8px 0 20px;color:var(--deep-red)}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-timeline{max-width:var(--max-width);margin:0 auto;position:relative;padding:20px 10px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-timeline::before{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; content:&amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position:absolute;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; left:50%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; top:8px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bottom:8px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width:6px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transform:translateX(-50%);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; background:linear-gradient(180deg,var(--gold),rgba(217,175,74,0.6));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; border-radius:6px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-row{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display:grid;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; grid-template-columns:1fr 60px 1fr;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; column-gap:20px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; align-items:start;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin:18px 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; grid-auto-rows:auto;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width:100%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding:14px 18px;border-radius:12px;background:linear-gradient(180deg,#fff,#FFF7F5);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; box-shadow:0 8px 24px rgba(0,0,0,0.06);transition:transform .25s ease;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width:100%;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item:hover{transform:translateY(-6px)}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item .year{display:inline-block;padding:6px 10px;border-radius:999px;background:var(--red);color:#fff;font-weight:700;margin-bottom:8px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item h4{margin:6px 0 8px;color:var(--deep-red)}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item p{margin:0;color:#5b4343;line-height:1.6}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-center{display:flex;align-items:start;justify-content:center}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-dot{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; width:16px;height:16px;border-radius:50%;background:var(--red);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; box-shadow:0 0 0 6px rgba(201,31,31,0.08);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; margin-top:12px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position:relative;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 庆祝区：放飞灯笼 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .celebrate{padding:32px 16px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .celebrate .panel{max-width:var(--max-width);margin:0 auto;background:linear-gradient(180deg,#fff,#FFF8F6);padding:18px;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,0.06)}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .controls{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .controls input[type=&amp;#34;text&amp;#34;]{flex:1;padding:10px 12px;border-radius:10px;border:1px solid rgba(0,0,0,0.08);font-size:15px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .controls .btn{padding:10px 14px;border-radius:10px;cursor:pointer;background:var(--glass);border:1px solid rgba(0,0,0,0.06)}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .controls .btn.primary{background:linear-gradient(180deg,var(--red),var(--deep-red));color:#fff;border:none}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .preset-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .preset{padding:8px 12px;border-radius:999px;background:linear-gradient(90deg,#FFF4E8,#FFF0E6);border:1px solid rgba(0,0,0,0.04);cursor:pointer}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 放飞容器（覆盖层） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .sky{position:fixed;inset:0;pointer-events:none;z-index:60;overflow:visible}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .lantern{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; position:absolute;width:var(--lantern-width);height:160px;left:50%;transform:translateX(-50%);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pointer-events:none;will-change:transform,opacity;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display:flex;align-items:flex-start;justify-content:center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; font-family:&amp;#34;Noto Serif SC&amp;#34;,serif;color:#3b1f1f;text-align:center;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .lantern .svg-wrap{width:100%;height:100%;display:flex;align-items:center;justify-content:center}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .lantern .msg{position:absolute;top:42%;left:50%;transform:translate(-50%,-50%);font-size:14px;padding:6px 8px;color:#2b100f;background:transparent;white-space:nowrap}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @keyframes floatUp {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 0%{transform:translate(-50%, 0) scale(1); opacity:1}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 25%{transform:translate(calc(-50% + 20px), -25vh) scale(1.02)}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 60%{transform:translate(calc(-50% - 12px), -65vh) scale(1.04)}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 100%{transform:translate(calc(-50% + 8px), -120vh) scale(1.08); opacity:0}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 花瓣样式 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .petal{position:fixed;border-radius:45% 55% 40% 60%;pointer-events:none;mix-blend-mode:screen;will-change:transform,top,left,opacity;z-index:55}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* footer */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .site-footer{padding:18px;text-align:center;color:#6b5656;font-size:14px;border-top:1px solid rgba(0,0,0,0.02);margin-top:28px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .site-footer a.footer-link{color:var(--deep-red);text-decoration:none;font-weight:600}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .site-footer a.footer-link:hover{text-decoration:underline}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 响应式：手机/窄屏下 — 去掉左侧竖线和圆点，保留对齐与触控间距 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @media (max-width:900px){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-row{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; grid-template-columns:12px 1fr; /* 保留小间隙用于视觉平衡 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; column-gap:12px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; align-items:start;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 隐藏原来的竖线（desktop-only） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-timeline::before{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display:none;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 保证第一列（占位）与第二列内容的默认分配 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-row &amp;gt; div:first-child{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; grid-column:1;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display:block;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; padding-top:6px;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-row &amp;gt; div:last-child{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; grid-column:2;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 隐藏小屏上的圆点与其伪元素 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-dot,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-dot::before,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-dot::after {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; display:none !important;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 减小卡片内边距，提升可读性 */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item{padding:12px 14px;border-radius:10px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item h4{font-size:16px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item p{font-size:14px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .left-deco,.right-deco{display:none}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 触摸友好：让时间轴项可聚焦（便于键盘/屏幕阅读器） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item{outline: none}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item:focus{box-shadow:0 0 0 3px rgba(217,164,68,0.12);transform:none}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* prefers-reduced-motion 支持（尊重用户偏好） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @media (prefers-reduced-motion: reduce) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .title { animation: none !important; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .lantern { animation: none !important; transition: none !important; opacity: 1 !important; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .petal { transition: none !important; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .v-item, .v-item:hover { transform: none !important; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /* 限制 hero 视差在超大屏时的偏移（更稳健） */
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @media (min-width:1400px){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .hero-inner{max-width:1300px}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/head&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;ink-bg&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;header class=&amp;#34;hero&amp;#34; role=&amp;#34;banner&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;hero-inner&amp;#34; id=&amp;#34;heroInner&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;left-deco&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;svg viewBox=&amp;#34;0 0 200 200&amp;#34; width=&amp;#34;110&amp;#34; height=&amp;#34;110&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;defs&amp;gt;&amp;lt;linearGradient id=&amp;#34;g1&amp;#34; x1=&amp;#34;0&amp;#34; x2=&amp;#34;1&amp;#34;&amp;gt;&amp;lt;stop offset=&amp;#34;0&amp;#34; stop-color=&amp;#34;#fff&amp;#34; stop-opacity=&amp;#34;0.95&amp;#34;/&amp;gt;&amp;lt;stop offset=&amp;#34;1&amp;#34; stop-color=&amp;#34;#FFD7D7&amp;#34;/&amp;gt;&amp;lt;/linearGradient&amp;gt;&amp;lt;/defs&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;g fill=&amp;#34;url(#g1)&amp;#34; stroke=&amp;#34;#E04B3A&amp;#34; stroke-width=&amp;#34;1.5&amp;#34;&amp;gt;&amp;lt;path d=&amp;#34;M100 20 C92 34,76 34,64 46 C86 44,84 74,100 74 C116 74,114 44,136 46 C124 34,108 34,100 20 Z&amp;#34;/&amp;gt;&amp;lt;circle cx=&amp;#34;100&amp;#34; cy=&amp;#34;88&amp;#34; r=&amp;#34;6&amp;#34; fill=&amp;#34;#E04B3A&amp;#34;/&amp;gt;&amp;lt;/g&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/svg&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;title-wrap&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;h1 class=&amp;#34;title&amp;#34; id=&amp;#34;mainTitle&amp;#34;&amp;gt;百年征程&amp;lt;/h1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p class=&amp;#34;subtitle&amp;#34;&amp;gt;热烈庆祝中国共产党成立100周年&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;ribbon&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;1921 — 2021 · 不忘初心 牢记使命&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;right-deco&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;svg viewBox=&amp;#34;0 0 120 220&amp;#34; width=&amp;#34;110&amp;#34; height=&amp;#34;110&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;g transform=&amp;#34;translate(10,10)&amp;#34;&amp;gt;&amp;lt;ellipse cx=&amp;#34;50&amp;#34; cy=&amp;#34;70&amp;#34; rx=&amp;#34;42&amp;#34; ry=&amp;#34;56&amp;#34; fill=&amp;#34;#D92E2E&amp;#34; stroke=&amp;#34;#B22222&amp;#34; stroke-width=&amp;#34;2&amp;#34;/&amp;gt;&amp;lt;rect x=&amp;#34;46&amp;#34; y=&amp;#34;6&amp;#34; width=&amp;#34;8&amp;#34; height=&amp;#34;20&amp;#34; fill=&amp;#34;#B22222&amp;#34;/&amp;gt;&amp;lt;path d=&amp;#34;M50 126 L50 150&amp;#34; stroke=&amp;#34;#B22222&amp;#34; stroke-width=&amp;#34;3&amp;#34; /&amp;gt;&amp;lt;/g&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/svg&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;svg class=&amp;#34;clouds&amp;#34; viewBox=&amp;#34;0 0 1400 200&amp;#34; preserveAspectRatio=&amp;#34;none&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;path d=&amp;#34;M0 120 C150 40, 350 40, 500 120 C650 200, 850 200, 1000 120 C1150 40, 1250 40, 1400 120 L1400 200 L0 200 Z&amp;#34; fill=&amp;#34;#FFF4E8&amp;#34; opacity=&amp;#34;0.85&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/svg&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/header&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;main&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;section class=&amp;#34;container&amp;#34; aria-label=&amp;#34;概览&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;card&amp;#34; role=&amp;#34;region&amp;#34; aria-labelledby=&amp;#34;aboutTitle&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;h2 id=&amp;#34;aboutTitle&amp;#34;&amp;gt;百年光辉 · 百年征程&amp;lt;/h2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 百年，是历史在时光上刻下的深深纹理；百年，也是每一次初心的温热延续。我们以传统纹样为根、以当代版式为形，将峥嵘岁月的厚重与今日希望的光芒并置呈现——柔和的色调、流动的线条与细腻的留白，既缅怀过往的奋斗，也为未来铺陈可能。愿历史的每一段记忆化作照亮前路的灯塔，愿不变的初心继续转化为前行的力量，共同书写新时代的恢弘篇章。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/section&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;section class=&amp;#34;timeline&amp;#34; id=&amp;#34;timeline&amp;#34; aria-labelledby=&amp;#34;timelineTitle&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;h2 class=&amp;#34;section-title&amp;#34; id=&amp;#34;timelineTitle&amp;#34;&amp;gt;百年时间轴&amp;lt;/h2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;v-timeline&amp;#34; id=&amp;#34;vTimeline&amp;#34; role=&amp;#34;list&amp;#34; aria-label=&amp;#34;百年时间轴&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- JS 渲染：基于 Grid 的每行三列（桌面）或两列（移动）--&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/section&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;section class=&amp;#34;celebrate&amp;#34; aria-labelledby=&amp;#34;celebrateTitle&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;h2 id=&amp;#34;celebrateTitle&amp;#34; style=&amp;#34;text-align:center;color:var(--deep-red)&amp;#34;&amp;gt;放飞灯笼 · 致敬百年&amp;lt;/h2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;celebrate panel&amp;#34; role=&amp;#34;region&amp;#34; aria-label=&amp;#34;放飞灯笼互动&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;controls&amp;#34; aria-hidden=&amp;#34;false&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;input id=&amp;#34;wishInput&amp;#34; type=&amp;#34;text&amp;#34; placeholder=&amp;#34;输入你的祝福，最多 24 字（示例：祝福祖国繁荣昌盛）&amp;#34; maxlength=&amp;#34;24&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;button id=&amp;#34;autoBtn&amp;#34; class=&amp;#34;btn&amp;#34; title=&amp;#34;随机祝福&amp;#34;&amp;gt;随机祝福&amp;lt;/button&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;button id=&amp;#34;launchBtn&amp;#34; class=&amp;#34;btn primary&amp;#34; title=&amp;#34;放飞灯笼&amp;#34;&amp;gt;放飞灯笼&amp;lt;/button&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;preset-row&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;preset&amp;#34; data-text=&amp;#34;祝福祖国繁荣昌盛&amp;#34; tabindex=&amp;#34;0&amp;#34;&amp;gt;祝福祖国繁荣昌盛&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;preset&amp;#34; data-text=&amp;#34;不忘初心，牢记使命&amp;#34; tabindex=&amp;#34;0&amp;#34;&amp;gt;不忘初心，牢记使命&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;preset&amp;#34; data-text=&amp;#34;人民幸福，国泰民安&amp;#34; tabindex=&amp;#34;0&amp;#34;&amp;gt;人民幸福，国泰民安&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p style=&amp;#34;color:#6b5252;margin-top:6px&amp;#34;&amp;gt;输入祝福后点击“放飞灯笼”，祝福将以书法风格出现在灯笼上，缓缓升入夜空，具有中国古典氛围。页面支持多次放飞。&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/section&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;footer class=&amp;#34;site-footer&amp;#34; role=&amp;#34;contentinfo&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 托管在
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a class=&amp;#34;footer-link&amp;#34; href=&amp;#34;https://www.cloudflare.com/&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34; title=&amp;#34;访问 Cloudflare 官网&amp;#34; aria-label=&amp;#34;访问 Cloudflare 官网&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Cloudflare
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | 由 Cloudflare CDN 提供加速与安全防护
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div style=&amp;#34;margin-top:8px;&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;https://dh.20210701.xyz/&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&amp;gt;Hello &amp;amp;amp; Qgxs&amp;lt;/a&amp;gt; &amp;amp;nbsp;|&amp;amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;https://www.20210701.xyz/&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&amp;gt;我的博客&amp;lt;/a&amp;gt; &amp;amp;nbsp;|&amp;amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;https://www.20210701.xyz/about.html&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&amp;gt;关于我&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div style=&amp;#34;margin-top:6px;color:#8a6a6a;font-size:13px&amp;#34;&amp;gt;致敬历史，面向未来 · 1921–2021&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/footer&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/main&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- 放飞层 &amp;amp; 花瓣容器 --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;sky&amp;#34; id=&amp;#34;skyLayer&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div id=&amp;#34;petalContainer&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (function(){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 时间轴数据（可按需修改）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const timelineData = [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {year:1921, title:&amp;#39;中国共产党成立&amp;#39;, desc:&amp;#39;中国共产党在上海和嘉兴南湖成立，开启了中国革命的新纪元。&amp;#39;},
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {year:1949, title:&amp;#39;中华人民共和国成立&amp;#39;, desc:&amp;#39;在中国共产党的领导下，中华人民共和国成立，开启民族复兴的新篇章。&amp;#39;},
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {year:1978, title:&amp;#39;改革开放&amp;#39;, desc:&amp;#39;实行改革开放，推动经济体制改革与持续发展，实现国家现代化的快速推进。&amp;#39;},
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {year:1997, title:&amp;#39;香港回归&amp;#39;, desc:&amp;#39;香港回归祖国怀抱，国家主权与统一得到进一步巩固。&amp;#39;},
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {year:2012, title:&amp;#39;新时代开启&amp;#39;, desc:&amp;#39;党的十八大以来，中国进入新时代，提出全面建成小康、奋斗目标与现代化建设。&amp;#39;},
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {year:2021, title:&amp;#39;百年华诞&amp;#39;, desc:&amp;#39;庆祝中国共产党成立一百周年，回顾奋斗历程，展望未来的宏伟蓝图。&amp;#39;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 渲染纵向时间轴（桌面：交错左右；移动：点/线已隐藏，仅内容）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const vTimeline = document.getElementById(&amp;#39;vTimeline&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function renderTimeline(){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; vTimeline.innerHTML = &amp;#39;&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; timelineData.forEach((item, idx) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const row = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; row.className = &amp;#39;v-row&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; row.setAttribute(&amp;#39;role&amp;#39;,&amp;#39;listitem&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; row.setAttribute(&amp;#39;aria-label&amp;#39;, item.year + &amp;#39; &amp;#39; + item.title);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // For mobile we use two-column row: small left gap + content on right.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // For desktop we preserve the original three-column alternating layout.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (window.matchMedia(&amp;#39;(min-width:901px)&amp;#39;).matches) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const leftCell = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const middleCell = document.createElement(&amp;#39;div&amp;#39;); middleCell.className = &amp;#39;v-center&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const rightCell = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const itemEl = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; itemEl.className = &amp;#39;v-item&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; itemEl.setAttribute(&amp;#39;tabindex&amp;#39;, &amp;#39;0&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; itemEl.innerHTML = &amp;#39;&amp;lt;div class=&amp;#34;year&amp;#34;&amp;gt;&amp;#39; + item.year + &amp;#39;&amp;lt;/div&amp;gt;&amp;#39; +
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;&amp;lt;h4&amp;gt;&amp;#39; + item.title + &amp;#39;&amp;lt;/h4&amp;gt;&amp;#39; +
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;&amp;lt;p&amp;gt;&amp;#39; + item.desc + &amp;#39;&amp;lt;/p&amp;gt;&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const dot = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dot.className = &amp;#39;v-dot&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dot.setAttribute(&amp;#39;aria-hidden&amp;#39;,&amp;#39;true&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (idx % 2 === 0) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; leftCell.appendChild(itemEl);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; middleCell.appendChild(dot);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } else {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rightCell.appendChild(itemEl);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; middleCell.appendChild(dot);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; row.appendChild(leftCell);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; row.appendChild(middleCell);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; row.appendChild(rightCell);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } else {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const gapCell = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const contentCell = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const itemEl = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; itemEl.className = &amp;#39;v-item&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; itemEl.setAttribute(&amp;#39;tabindex&amp;#39;, &amp;#39;0&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; itemEl.innerHTML = &amp;#39;&amp;lt;div class=&amp;#34;year&amp;#34;&amp;gt;&amp;#39; + item.year + &amp;#39;&amp;lt;/div&amp;gt;&amp;#39; +
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;&amp;lt;h4&amp;gt;&amp;#39; + item.title + &amp;#39;&amp;lt;/h4&amp;gt;&amp;#39; +
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;&amp;lt;p&amp;gt;&amp;#39; + item.desc + &amp;#39;&amp;lt;/p&amp;gt;&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // Keep a small left cell (gap) for visual balance but hide dots/lines via CSS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gapCell.appendChild(document.createElement(&amp;#39;div&amp;#39;));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; contentCell.appendChild(itemEl);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; row.appendChild(gapCell);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; row.appendChild(contentCell);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; vTimeline.appendChild(row);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 视差（小幅），现代化监听并在触摸/粗指针设备禁用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function enableParallax(){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const hero = document.getElementById(&amp;#39;heroInner&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (!hero) return;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // Disable parallax on touch devices or coarse pointers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const prefersCoarse = window.matchMedia(&amp;#39;(pointer: coarse)&amp;#39;).matches;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (prefersCoarse) { hero.style.transform = &amp;#39;none&amp;#39;; return; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function onMouseMove(e){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const cx = window.innerWidth/2, cy = window.innerHeight/2;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const dx = (e.clientX - cx) / cx;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const dy = (e.clientY - cy) / cy;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hero.style.transform = &amp;#39;translateX(&amp;#39; + (dx*3) + &amp;#39;px) translateY(&amp;#39; + (dy*2.5) + &amp;#39;px)&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; window.addEventListener(&amp;#39;mousemove&amp;#39;, onMouseMove);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const mq = window.matchMedia(&amp;#39;(max-width:900px)&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function check(e){ if (mq.matches) hero.style.transform=&amp;#39;none&amp;#39;; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (typeof mq.addEventListener === &amp;#39;function&amp;#39;) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mq.addEventListener(&amp;#39;change&amp;#39;, check);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } else if (typeof mq.addListener === &amp;#39;function&amp;#39;) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mq.addListener(check);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; check();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 花瓣（轻柔）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const petalContainer = document.getElementById(&amp;#39;petalContainer&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function createPetal(){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const el = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.className = &amp;#39;petal&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const size = (Math.random()*14 + 10) | 0;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.width = size + &amp;#39;px&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.height = Math.round(size * 1.2) + &amp;#39;px&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.left = (Math.random() * 100) + &amp;#39;vw&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.top = &amp;#39;-6vh&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.background = &amp;#39;radial-gradient(circle at 30% 30%, #fff8f8, #ffcfcf)&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.opacity = (0.55 + Math.random()*0.45).toFixed(2);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.transform = &amp;#39;rotate(&amp;#39; + (Math.random()*360) + &amp;#39;deg)&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.transition = &amp;#39;transform &amp;#39; + (10+Math.random()*6) + &amp;#39;s linear, top &amp;#39; + (10+Math.random()*6) + &amp;#39;s linear, left &amp;#39; + (8+Math.random()*6) + &amp;#39;s linear, opacity 2s&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; petalContainer.appendChild(el);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; requestAnimationFrame(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.top = (80 + Math.random()*20) + &amp;#39;vh&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.left = (Math.random()*100) + &amp;#39;vw&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.transform = &amp;#39;rotate(&amp;#39; + (Math.random()*720 - 360) + &amp;#39;deg) translateX(&amp;#39; + (Math.random()*40-20) + &amp;#39;px)&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; setTimeout(()=&amp;gt; el.remove(), 16000);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let petalTimer = null;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function startPetals(){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (petalTimer) return;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; petalTimer = setInterval(createPetal, 420);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for (let i=0;i&amp;lt;6;i++) setTimeout(createPetal, i*160);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function stopPetals(){ clearInterval(petalTimer); petalTimer = null; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 放飞灯笼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const sky = document.getElementById(&amp;#39;skyLayer&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const wishInput = document.getElementById(&amp;#39;wishInput&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const launchBtn = document.getElementById(&amp;#39;launchBtn&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const autoBtn = document.getElementById(&amp;#39;autoBtn&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const presets = Array.from(document.querySelectorAll(&amp;#39;.preset&amp;#39;));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const autoTexts = [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;祝福祖国繁荣昌盛&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;不忘初心，牢记使命&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;人民幸福，国泰民安&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;百年辉煌，继往开来&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;砥砺前行，共创未来&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // keyboard support for preset chips
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; presets.forEach(p =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; p.addEventListener(&amp;#39;click&amp;#39;, ()=&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; wishInput.value = p.dataset.text || &amp;#39;&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; p.addEventListener(&amp;#39;keydown&amp;#39;, (e) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (e.key === &amp;#39;Enter&amp;#39; || e.key === &amp;#39; &amp;#39;) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; e.preventDefault();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; p.click();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; autoBtn.addEventListener(&amp;#39;click&amp;#39;, ()=&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const t = autoTexts[Math.floor(Math.random()*autoTexts.length)];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; wishInput.value = t;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function createLantern(text){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const el = document.createElement(&amp;#39;div&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.className = &amp;#39;lantern&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const startX = Math.random()*80 + 10;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const colorHue = 8 + Math.round(Math.random()*30);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.left = startX + &amp;#39;vw&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.bottom = &amp;#39;-18vh&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.opacity = &amp;#39;0&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.zIndex = 65;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.innerHTML = &amp;#39;&amp;lt;div class=&amp;#34;svg-wrap&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + &amp;#39;&amp;lt;svg viewBox=&amp;#34;0 0 100 140&amp;#34; width=&amp;#34;100%&amp;#34; height=&amp;#34;100%&amp;#34; preserveAspectRatio=&amp;#34;xMidYMid meet&amp;#34;&amp;gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + &amp;#39;&amp;lt;defs&amp;gt;&amp;lt;linearGradient id=&amp;#34;lg&amp;#34; x1=&amp;#34;0&amp;#34; x2=&amp;#34;0&amp;#34; y1=&amp;#34;0&amp;#34; y2=&amp;#34;1&amp;#34;&amp;gt;&amp;lt;stop offset=&amp;#34;0&amp;#34; stop-color=&amp;#34;#FFD6D6&amp;#34;/&amp;gt;&amp;lt;stop offset=&amp;#34;1&amp;#34; stop-color=&amp;#34;#FFB7B7&amp;#34;/&amp;gt;&amp;lt;/linearGradient&amp;gt;&amp;lt;/defs&amp;gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + &amp;#39;&amp;lt;g transform=&amp;#34;translate(0,0)&amp;#34;&amp;gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + &amp;#39;&amp;lt;ellipse cx=&amp;#34;50&amp;#34; cy=&amp;#34;50&amp;#34; rx=&amp;#34;36&amp;#34; ry=&amp;#34;46&amp;#34; fill=&amp;#34;hsl(&amp;#39; + colorHue + &amp;#39; 80% 55%)&amp;#34; stroke=&amp;#34;#B22222&amp;#34; stroke-width=&amp;#34;2&amp;#34;/&amp;gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + &amp;#39;&amp;lt;rect x=&amp;#34;44&amp;#34; y=&amp;#34;4&amp;#34; width=&amp;#34;12&amp;#34; height=&amp;#34;14&amp;#34; fill=&amp;#34;#B22222&amp;#34; /&amp;gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + &amp;#39;&amp;lt;path d=&amp;#34;M50 96 L50 116&amp;#34; stroke=&amp;#34;#8b1a1a&amp;#34; stroke-width=&amp;#34;2&amp;#34; /&amp;gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + &amp;#39;&amp;lt;/g&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/div&amp;gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + &amp;#39;&amp;lt;div class=&amp;#34;msg&amp;#34;&amp;gt;&amp;#39; + escapeHtml(text) + &amp;#39;&amp;lt;/div&amp;gt;&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const dur = 9000 + Math.random()*7000;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.transition = &amp;#39;opacity 600ms ease&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sky.appendChild(el);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; requestAnimationFrame(()=&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.opacity = &amp;#39;1&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; el.style.animation = &amp;#39;floatUp &amp;#39; + (dur/1000) + &amp;#39;s linear forwards&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for (let i=0;i&amp;lt;2;i++) setTimeout(createPetal, Math.random()*800);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; setTimeout(()=&amp;gt; { el.remove(); }, dur + 600);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function escapeHtml(s){ return String(s || &amp;#39;&amp;#39;).replace(/[&amp;amp;&amp;lt;&amp;gt;&amp;#34;&amp;#39;]/g, function(m){ return {&amp;#39;&amp;amp;&amp;#39;:&amp;#39;&amp;amp;amp;&amp;#39;,&amp;#39;&amp;lt;&amp;#39;:&amp;#39;&amp;amp;lt;&amp;#39;,&amp;#39;&amp;gt;&amp;#39;:&amp;#39;&amp;amp;gt;&amp;#39;,&amp;#39;&amp;#34;&amp;#39;:&amp;#39;&amp;amp;quot;&amp;#39;,&amp;#34;&amp;#39;&amp;#34;:&amp;#39;&amp;amp;#39;&amp;#39;}[m]; }); }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; launchBtn.addEventListener(&amp;#39;click&amp;#39;, ()=&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const text = wishInput.value.trim() || autoTexts[Math.floor(Math.random()*autoTexts.length)];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; createLantern(text);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; wishInput.addEventListener(&amp;#39;keydown&amp;#39;, function(e){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if (e.key === &amp;#39;Enter&amp;#39;){ e.preventDefault(); launchBtn.click(); }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 初始化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function init(){
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; renderTimeline();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; enableParallax();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 预热花瓣（小批量以避免内存峰值）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; setTimeout(startPetals, 800);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; setTimeout(stopPetals, 7000);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 标题入场（将动画禁用于 reduced-motion 首选项）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; const title = document.getElementById(&amp;#39;mainTitle&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; try {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; title.animate([{opacity:0, transform:&amp;#39;translateY(18px) scale(0.98)&amp;#39;},{opacity:1, transform:&amp;#39;translateY(0) scale(1)&amp;#39;}], {duration:900, easing:&amp;#39;cubic-bezier(.2,.8,.2,1)&amp;#39;});
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; } catch (e) { /* animation not supported */ }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // Re-render timeline on resize so mobile/desktop layout adapts when device rotated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; let resizeTimer = null;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; window.addEventListener(&amp;#39;resize&amp;#39;, () =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clearTimeout(resizeTimer);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; resizeTimer = setTimeout(renderTimeline, 160);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; });
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; init();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // 暴露少量调试接口（可移除）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; window.__celebrate = {createLantern, startPetals, stopPetals};
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; })();
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码"&gt;&lt;/button&gt;
&lt;/div&gt;</description></item><item><title>Fuwari &amp; Mizuki 博客模板简易使用指南</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/fuwari--mizuki-%E5%8D%9A%E5%AE%A2%E6%A8%A1%E6%9D%BF%E7%AE%80%E6%98%93%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</link><pubDate>Thu, 30 Jan 2025 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/posts/fuwari--mizuki-%E5%8D%9A%E5%AE%A2%E6%A8%A1%E6%9D%BF%E7%AE%80%E6%98%93%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</guid><description>&lt;blockquote&gt;
&lt;p&gt;封面图片来源：&lt;a href="https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/208fc754-890d-4adb-9753-2c963332675d/width=2048/01651-1456859105-%28colour_1.5%29,girl,_Blue,yellow,green,cyan,purple,red,pink,_best,8k,UHD,masterpiece,male%20focus,%201boy,gloves,%20ponytail,%20long%20hair,.jpeg" target="_blank" rel="noopener"&gt;来源&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本博客模板基于 &lt;a href="https://astro.build/" target="_blank" rel="noopener"&gt;Astro&lt;/a&gt; 构建。本指南中未提及的内容，你可前往 &lt;a href="https://docs.astro.build/" target="_blank" rel="noopener"&gt;Astro 官方文档&lt;/a&gt; 查阅答案。&lt;/p&gt;
&lt;h2 id="文章前置元数据说明"&gt;文章前置元数据说明&lt;/h2&gt;
&lt;div class="language-yaml" data-line-count="9"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;yaml&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;我的第一篇博客文章&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;published&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ld"&gt;2025-01-31&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;这是我新搭建的 Astro 博客的第一篇文章&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./cover.jpg&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;分享, 示例标签2]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;category&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;qgxs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;draft&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码" hidden&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;div class="language-yaml" data-line-count="8"&gt;
 &lt;button type="button" title="Copy code" class="copy" aria-label="复制代码"&gt;&lt;/button&gt;
 &lt;span class="lang"&gt;yaml&lt;/span&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;111&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;published&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ld"&gt;2025-01-31&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;111&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;分享&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;category&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;qgxs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;draft&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;button type="button" class="code-block-unfold-btn" aria-label="展开代码" hidden&gt;&lt;/button&gt;
&lt;/div&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;配置项&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文章标题&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;published&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文章发布日期&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文章简短描述，将在博客首页展示&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;image&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文章封面图片路径&lt;br/&gt;1. 以 &lt;code&gt;http://&lt;/code&gt; 或 &lt;code&gt;https://&lt;/code&gt; 开头：使用网络图片&lt;br/&gt;2. 以 &lt;code&gt;/&lt;/code&gt; 开头：引用 &lt;code&gt;public&lt;/code&gt; 目录下的本地图片&lt;br/&gt;3. 无上述前缀：引用与当前 Markdown 文件同级目录的图片&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文章标签&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文章分类&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;draft&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文章草稿标识，设为 true 时该文章将不会在博客中展示&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="文章文件的存放位置"&gt;文章文件的存放位置&lt;/h2&gt;
&lt;p&gt;文章文件需存放至 &lt;code&gt;src/content/posts/&lt;/code&gt; 目录下。你也可创建子目录，更规范地管理文章及相关资源文件。&lt;/p&gt;</description></item><item><title>画板示例文章</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/excalidraw/demo/</link><pubDate>Thu, 02 May 2024 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/excalidraw/demo/</guid><description>&lt;p&gt;&lt;strong&gt;此处文字会放在页面上方，该目录下的excalidraw文件会自动渲染为画板，名称无所谓&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;可以通过comment: false开关评论&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>不留下点什么吗</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/comment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/comment/</guid><description/></item><item><title>来加入我们叭</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/links/</guid><description/></item><item><title>搜索</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/search/</guid><description/></item><item><title>追番</title><link>https://45a96c10.hugo-theme-aiovtue.pages.dev/bangumi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://45a96c10.hugo-theme-aiovtue.pages.dev/bangumi/</guid><description/></item></channel></rss>