<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>建站笔记 on 黄启轩的博客</title><link>https://www.huangqixuan.com/categories/%E5%BB%BA%E7%AB%99%E7%AC%94%E8%AE%B0/</link><description>Recent content in 建站笔记 on 黄启轩的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 28 Aug 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://www.huangqixuan.com/categories/%E5%BB%BA%E7%AB%99%E7%AC%94%E8%AE%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>从毛玻璃到液态玻璃：这个博客是怎么搭起来的</title><link>https://www.huangqixuan.com/p/liquid-glass-blog-build/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0800</pubDate><guid>https://www.huangqixuan.com/p/liquid-glass-blog-build/</guid><description>&lt;img src="https://www.huangqixuan.com/img/tahoe-light-2560.webp" alt="Featured image of post 从毛玻璃到液态玻璃：这个博客是怎么搭起来的" /&gt;&lt;p&gt;这个网站最早只是一个很普通的想法：家里已经有一个 &lt;code&gt;huangqixuan.com&lt;/code&gt; 域名，与其一直空着，不如拿来写教程。&lt;/p&gt;&#10;&lt;p&gt;我以前也试过免费建站。当时用 InfinityFree 的免费空间和 &lt;code&gt;wuaze.com&lt;/code&gt; 子域名，做过带评论区的网站，甚至还折腾过论坛。后来账号因为长时间没有使用被暂停并删除，子域名也出现了 DNS 解析错误。那次经历让我明白，网页文件、域名和服务器其实是三件不同的东西。免费平台一旦收回空间，网站内容和网址都有可能一起失效。&lt;/p&gt;&#10;&lt;p&gt;这一次我想把源文件留在自己电脑里。托管平台可以换，域名也可以重新解析，但文章不能跟着平台一起消失。&lt;/p&gt;&#10;&lt;h2 id="先决定网站该怎么运行"&gt;&lt;a href="#%e5%85%88%e5%86%b3%e5%ae%9a%e7%bd%91%e7%ab%99%e8%af%a5%e6%80%8e%e4%b9%88%e8%bf%90%e8%a1%8c" class="header-anchor"&gt;&lt;/a&gt;先决定网站该怎么运行&#10;&lt;/h2&gt;&lt;p&gt;博客常见的方案大致有两类。&lt;/p&gt;&#10;&lt;p&gt;动态网站会在访问时查询数据库，再生成页面。WordPress、论坛和带用户系统的网站通常属于这一类。它适合登录、发帖、后台管理和复杂评论，但也需要长期运行的服务器、数据库、更新和安全维护。&lt;/p&gt;&#10;&lt;p&gt;静态网站则提前把文章生成成 HTML。读者访问时，服务器只需要发送已经做好的文件。教程博客不需要注册和数据库，静态方案更省事，也更不容易因为服务器配置出错而打不开。&lt;/p&gt;&#10;&lt;p&gt;最后我选了：&lt;/p&gt;&#10;&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;Markdown 文章&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Hugo 生成 HTML&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cloudflare Pages 发布&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;www.huangqixuan.com&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;GitHub 在这里不是必须的服务器。它更像一个代码仓库，可以保存修改历史并触发自动部署。当前网站即使不依赖 GitHub，也能用 Wrangler 命令直接发布到 Cloudflare Pages。以后要换成 GitHub 自动构建，文章源文件也不需要重写。&lt;/p&gt;&#10;&lt;h2 id="为什么用了-hugo-stack"&gt;&lt;a href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e7%94%a8%e4%ba%86-hugo-stack" class="header-anchor"&gt;&lt;/a&gt;为什么用了 Hugo Stack&#10;&lt;/h2&gt;&lt;p&gt;我看过几个教程博客，比较喜欢 Hugo Stack 的三栏布局：左边放头像和导航，中间是文章，右边放搜索、分类和标签。它在桌面上信息密度合适，缩到手机后也能改成单栏。&lt;/p&gt;&#10;&lt;p&gt;Hugo 本身只负责把内容生成网页，Stack 提供基础模板。文章依然是普通 Markdown，例如：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;&#10;&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="s2"&gt;&amp;#34;文章标题&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ld"&gt;2026-08-28&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;categories&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;&#10;&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;Hugo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;&#10;&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 class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;正文写在这里。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样做的好处很直接。网站样式可以重做，文章本身不用搬家。哪天不想用 Stack，甚至不想用 Hugo，这些 Markdown 文件仍然能打开。&lt;/p&gt;&#10;&lt;h2 id="第一版为什么看起来不像液态玻璃"&gt;&lt;a href="#%e7%ac%ac%e4%b8%80%e7%89%88%e4%b8%ba%e4%bb%80%e4%b9%88%e7%9c%8b%e8%b5%b7%e6%9d%a5%e4%b8%8d%e5%83%8f%e6%b6%b2%e6%80%81%e7%8e%bb%e7%92%83" class="header-anchor"&gt;&lt;/a&gt;第一版为什么看起来不像液态玻璃&#10;&lt;/h2&gt;&lt;p&gt;一开始，我只知道自己喜欢苹果的 Liquid Glass 风格，于是先找有没有现成的 Skill。最初找到的是 &lt;code&gt;apple-design&lt;/code&gt;、&lt;code&gt;frontend-design&lt;/code&gt; 一类设计规范，它们能说明层级、动效和控件应该怎么组织，但不能自动带来真实折射。&lt;/p&gt;&#10;&lt;p&gt;第一批 Demo 主要用了这些 CSS：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;rgba&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;255&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;255&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;12&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;backdrop-filter&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;blur&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;24px&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;saturate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;140&lt;/span&gt;&lt;span class="o"&gt;%);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;border&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;1px&lt;/span&gt; &lt;span class="nt"&gt;solid&lt;/span&gt; &lt;span class="nt"&gt;rgba&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;255&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;255&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;2&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;它能做出漂亮的毛玻璃，却没有改变背景像素的位置。玻璃下面的线条不会弯，边缘也没有凸透镜感。看起来像一张半透明塑料片，而不是有厚度的玻璃。&lt;/p&gt;&#10;&lt;p&gt;后来我把判断标准改成了下面几项：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;背景细节在玻璃边缘发生位移。&lt;/li&gt;&#10;&lt;li&gt;曲面边缘有连续折射，不只是模糊。&lt;/li&gt;&#10;&lt;li&gt;色差和高光要克制，不能像霓虹描边。&lt;/li&gt;&#10;&lt;li&gt;控件移动时要重新采样它下面的画面。&lt;/li&gt;&#10;&lt;li&gt;内容仍然清楚，按钮和输入框也必须能点。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="把六个原项目放在一起比较"&gt;&lt;a href="#%e6%8a%8a%e5%85%ad%e4%b8%aa%e5%8e%9f%e9%a1%b9%e7%9b%ae%e6%94%be%e5%9c%a8%e4%b8%80%e8%b5%b7%e6%af%94%e8%be%83" class="header-anchor"&gt;&lt;/a&gt;把六个原项目放在一起比较&#10;&lt;/h2&gt;&lt;p&gt;只看截图很容易误判，所以我把六个公开项目下载到本地，保留原引擎和默认参数，再做了一页统一入口。对比对象包括：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;项目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;实现路线&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;我最后记住的特点&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://github.com/ybouane/liquidglass" target="_blank" rel="noopener"&#10; &gt;ybouane/liquidglass&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;WebGL Shader&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;折射、色差和光照完整，适合独立按钮和工具栏&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://github.com/archisvaze/liquid-glass" target="_blank" rel="noopener"&#10; &gt;archisvaze/liquid-glass&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SVG + WebGL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;像一个光学实验台，适合理解厚度、IOR 和边缘宽度&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://github.com/xanaxknight/liquid-glass-css-svg" target="_blank" rel="noopener"&#10; &gt;xanaxknight/liquid-glass-css-svg&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SVG displacement&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;单文件也能做出可见位移，适合研究位移图&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://github.com/el-gladiador/liquid-glass-react" target="_blank" rel="noopener"&#10; &gt;el-gladiador/liquid-glass-react&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;React + WebGL2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;共享 WebGL 上下文，适合 React 项目中的多层玻璃&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://github.com/deepika-builds/liquid-glass" target="_blank" rel="noopener"&#10; &gt;deepika-builds/liquid-glass&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;JavaScript + SVG&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中心清楚、边缘折射，普通 DOM 内容仍可交互&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://github.com/dpawlikowski/liquid-glass" target="_blank" rel="noopener"&#10; &gt;dpawlikowski/liquid-glass&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CSS + SVG&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;不依赖 WebGL，也能组合折射和色差&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;这一步推翻了我最早的做法。不同引擎里的参数不能硬凑成一套。例如，一个项目里的 IOR 并不能直接换算成另一个项目的 &lt;code&gt;refraction&lt;/code&gt;。原项目调好的默认值通常比随手改出来的数字更平衡。&lt;/p&gt;&#10;&lt;p&gt;我最后最喜欢的是 1 号的 WebGL 光学和 5 号的可读窗口。5 号 Demo 还有一套很特别的果冻拖动：窗口用 &lt;code&gt;stiffness = 0.12&lt;/code&gt; 和 &lt;code&gt;damping = 0.72&lt;/code&gt; 追赶鼠标，再根据速度沿移动方向拉长，最大形变约 8%。折射和拖动其实是两套机制，一个负责看起来像玻璃，一个负责动起来像有弹性。&lt;/p&gt;&#10;&lt;h2 id="把研究结果写成自己的-skill"&gt;&lt;a href="#%e6%8a%8a%e7%a0%94%e7%a9%b6%e7%bb%93%e6%9e%9c%e5%86%99%e6%88%90%e8%87%aa%e5%b7%b1%e7%9a%84-skill" class="header-anchor"&gt;&lt;/a&gt;把研究结果写成自己的 Skill&#10;&lt;/h2&gt;&lt;p&gt;原项目解决的是效果，建站还需要一套选择规则。于是我把研究结果整理成 &lt;code&gt;liquid-glass-webgl-jelly&lt;/code&gt; Skill，让以后修改页面时先判断组件职责，而不是看到一个框就加玻璃。&lt;/p&gt;&#10;&lt;p&gt;现在这套规则大致是：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;可读窗口、搜索框和信息面板使用边缘位移方案，中心尽量保持清楚。&lt;/li&gt;&#10;&lt;li&gt;独立按钮和紧凑工具栏可以使用 WebGL，但不能在一页堆几十个 Canvas。&lt;/li&gt;&#10;&lt;li&gt;长文章、表格和重复列表不做强折射，阅读比材质展示重要。&lt;/li&gt;&#10;&lt;li&gt;玻璃后面必须有可辨认的壁纸、线条或网格，否则无法确认折射是否真的存在。&lt;/li&gt;&#10;&lt;li&gt;选中、按下和成功状态不能只靠折射，还要有文字、边框或圆点提示。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;prefers-reduced-motion&lt;/code&gt; 和降低透明度设置必须有对应降级。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;其中一条是被实际 Bug 逼出来的。早期 Demo 在玻璃导航条里又放了一层透明 WebGL 选中透镜。它没有填充色，却会重新折射下面的竹林背景。点击标签后，看起来不像胶囊移动，而像背景突然换了一块。后来我删除了第二层折射，只保留清晰的选中状态。&lt;/p&gt;&#10;&lt;p&gt;这个经验后来又用在网站分类卡上。外层窗口已经有真实折射，里面的卡片就不应该再套一层光学滤镜。内层只需要稳定的浅色衬底、细边框和很小的悬浮变化。玻璃叠玻璃不仅容易变脏，还会拖慢滚动。&lt;/p&gt;&#10;&lt;h2 id="把-stack-改成现在的样子"&gt;&lt;a href="#%e6%8a%8a-stack-%e6%94%b9%e6%88%90%e7%8e%b0%e5%9c%a8%e7%9a%84%e6%a0%b7%e5%ad%90" class="header-anchor"&gt;&lt;/a&gt;把 Stack 改成现在的样子&#10;&lt;/h2&gt;&lt;p&gt;网站没有直接照搬某个 Demo。我保留了 Stack 熟悉的三栏结构，然后逐项修改。&lt;/p&gt;&#10;&lt;p&gt;左栏删掉了多余介绍，只留下头像、标题、首页、归档、关于和暗色模式。中间仍然是普通文章流，整张文章卡都可以点击。右栏把多个搜索入口合并成一个苹果式搜索框，避免顶部按钮、侧栏输入框和导航菜单重复出现。&lt;/p&gt;&#10;&lt;p&gt;背景最终用了 Tahoe 亮色壁纸。原图是 6016 × 6016 的 PNG，直接放进网页会太大，所以压成了 2560 像素的 WebP。页面仍能看到足够的线条和色彩变化，文件却只剩几十 KB。&lt;/p&gt;&#10;&lt;p&gt;当前站点加载的主要光学方案是 SVG 位移滤镜。脚本会给头像区、导航、工具栏、搜索面板、文章卡和正文窗口初始化折射；不支持 SVG &lt;code&gt;backdrop-filter&lt;/code&gt; 的浏览器使用磨砂降级。研究时准备的 WebGL 和果冻拖动代码还保留着，但这一版没有把它们同时铺满页面。滚动流畅比多几个 Shader 更重要。&lt;/p&gt;&#10;&lt;p&gt;页面样式前后改了很多次，比较明显的问题有：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;整页套了暗色滤镜，导致亮壁纸变灰，文字也发闷。&lt;/li&gt;&#10;&lt;li&gt;搜索框沿用了暗色主题背景，变成一块纯黑矩形。&lt;/li&gt;&#10;&lt;li&gt;某些文字为了显得精致被缩得太小，在手机上很难看清。&lt;/li&gt;&#10;&lt;li&gt;卡片静止时完全透明，鼠标移上去才突然出现一大块底色。&lt;/li&gt;&#10;&lt;li&gt;移动端背景高度计算错误，页面底部出现黑色区域。&lt;/li&gt;&#10;&lt;li&gt;每次切页都重新加载全部效果，滚动和跳转显得卡。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这些问题没有靠一个“大改版”解决，而是对照截图逐个修。现在卡片的静止和悬浮状态是连续的，正文有稳定的对比度，手机端也不会再露出黑底。&lt;/p&gt;&#10;&lt;h2 id="发布到-cloudflare-pages"&gt;&lt;a href="#%e5%8f%91%e5%b8%83%e5%88%b0-cloudflare-pages" class="header-anchor"&gt;&lt;/a&gt;发布到 Cloudflare Pages&#10;&lt;/h2&gt;&lt;p&gt;本地写文章时先启动 Hugo：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;hugo&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="n"&gt;-D&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;浏览器可以在本地立即看到修改。确认页面正常后，再生成用于发布的静态文件：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;hugo&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-minify&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-cleanDestinationDir&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-destination&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;cloudflare-dist&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最后用 Wrangler 上传到已有的 Pages 项目：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;npx&lt;/span&gt; &lt;span class="n"&gt;wrangler&lt;/span&gt; &lt;span class="n"&gt;pages&lt;/span&gt; &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;cloudflare-dist&lt;/span&gt; &lt;span class="p"&gt;`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-project-name&lt;/span&gt; &lt;span class="nb"&gt;huangqixuan-blog&lt;/span&gt; &lt;span class="p"&gt;`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-branch&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cloudflare Pages 会生成一个版本地址，同时把生产版本更新到 &lt;code&gt;huangqixuan-blog.pages.dev&lt;/code&gt;。项目目前绑定了 &lt;code&gt;www.huangqixuan.com&lt;/code&gt;，Hugo 的 &lt;code&gt;baseURL&lt;/code&gt; 也使用这个地址。&lt;/p&gt;&#10;&lt;p&gt;我的发布流程现在固定成了四步：写 Markdown，本地构建，视觉和功能检查，同步到 Cloudflare 后再确认生产部署状态。托管平台只保存生成后的网页，真正需要长期保存的仍然是 Markdown、模板、样式和脚本。&lt;/p&gt;&#10;&lt;h2 id="现在回头看"&gt;&lt;a href="#%e7%8e%b0%e5%9c%a8%e5%9b%9e%e5%a4%b4%e7%9c%8b" class="header-anchor"&gt;&lt;/a&gt;现在回头看&#10;&lt;/h2&gt;&lt;p&gt;这个网站并不是先选好一套技术，然后一次搭成的。它从一个闲置域名开始，绕过免费空间、GitHub Pages、闲置电脑服务器和动态博客，最后才落到 Hugo 与 Cloudflare Pages。&lt;/p&gt;&#10;&lt;p&gt;液态玻璃也走了同样的弯路。先做出毛玻璃，再发现不对；下载原项目对比之后，又遇到玻璃叠加、背景突变、文字对比度和性能问题。最后留下来的不是一个夸张 Demo，而是一套知道什么时候该用、什么时候该停的规则。&lt;/p&gt;&#10;&lt;p&gt;这篇文章本身就是下一次测试。以后网站哪里改坏了，我可以回来看看当时为什么这样选，而不是重新从十几个标签页和聊天记录里找答案。&lt;/p&gt;&#10;</description></item><item><title>你好，欢迎来到我的博客</title><link>https://www.huangqixuan.com/p/hello/</link><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.huangqixuan.com/p/hello/</guid><description>&lt;p&gt;我想给自己留个能长期写东西的地方。以后遇到值得记下来的问题，就把过程和最后能用的办法放在这里，不再只丢进聊天记录或收藏夹。&lt;/p&gt;&#10;&lt;h2 id="这里会写什么"&gt;&lt;a href="#%e8%bf%99%e9%87%8c%e4%bc%9a%e5%86%99%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;这里会写什么&#10;&lt;/h2&gt;&lt;p&gt;大多是软件怎么用、电脑出了问题怎么查，还有搭这个网站时踩过的坑。偶尔也会放一点我不想忘掉的东西。&lt;/p&gt;&#10;&lt;blockquote class="alert alert-note"&gt;&#10; &lt;div class="alert-header"&gt;&#10; &lt;span class="alert-icon"&gt;📝&lt;/span&gt;&#10; &lt;span class="alert-title"&gt;备注&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="alert-body"&gt;&#10; &lt;p&gt;现在还是个刚搭起来的空架子，内容会慢慢补。&lt;/p&gt;&#10; &lt;/div&gt;&#10; &lt;/blockquote&gt;&#10;&lt;h2 id="一段示例代码"&gt;&lt;a href="#%e4%b8%80%e6%ae%b5%e7%a4%ba%e4%be%8b%e4%bb%a3%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;一段示例代码&#10;&lt;/h2&gt;&lt;p&gt;教程里可以直接放命令。比如查看网络配置：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ipconfig&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;all&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;搜索和分类已经能用。下一步是把真正遇到过的问题整理成文章。&lt;/p&gt;&#10;</description></item></channel></rss>