diff --git a/package.json b/package.json
index 2e6eab2..2cae1b2 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "version": "1.1.8",
+ "version": "1.1.9",
"type": "module",
"engines": {
"node": ">=22.12.0"
diff --git a/settings.yaml b/settings.yaml
index 17d07da..f4e790d 100644
--- a/settings.yaml
+++ b/settings.yaml
@@ -575,6 +575,11 @@ spec:
- group: links
label: 友情链接
formSchema:
+ - $formkit: switch
+ name: links_apply_form_enabled
+ label: 显示友链申请表单
+ value: true
+ help: 在友链页底部展示访客申请表单;需链接管理插件开启「友链申请」功能,未开启时表单自动隐藏
- $formkit: text
name: links_page_title
label: 页面标题
diff --git a/src/components/HeroSection.astro b/src/components/HeroSection.astro
index e7d1c24..af7e136 100644
--- a/src/components/HeroSection.astro
+++ b/src/components/HeroSection.astro
@@ -281,7 +281,7 @@
inset: 0;
background-size: cover;
background-position: center;
- opacity: 0.15;
+ opacity: 1;
}
/* 深色模式背景图切换:未配置双图时不生效,保持单一背景图 */
@@ -313,6 +313,12 @@
letter-spacing: -0.03em;
color: var(--hero-title-text, var(--ink));
line-height: var(--leading-tight);
+ /* 背景图完整显示后,用轻投影保证文字在复杂图片上仍可读 */
+ text-shadow: 0 1px 3px rgba(255, 253, 250, 0.6), 0 1px 14px rgba(255, 253, 250, 0.4);
+ }
+
+ html.dark .hero__title {
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55), 0 1px 14px rgba(0, 0, 0, 0.35);
}
.hero__subtitle {
@@ -321,6 +327,11 @@
color: var(--hero-subtitle-text, var(--ink-2));
letter-spacing: 0.05em;
line-height: var(--leading-normal);
+ text-shadow: 0 1px 3px rgba(255, 253, 250, 0.6), 0 1px 10px rgba(255, 253, 250, 0.4);
+ }
+
+ html.dark .hero__subtitle {
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55), 0 1px 10px rgba(0, 0, 0, 0.35);
}
.hero__description {
@@ -330,6 +341,11 @@
max-width: 560px;
text-align: center;
transition: opacity 0.3s ease;
+ text-shadow: 0 1px 3px rgba(255, 253, 250, 0.55);
+ }
+
+ html.dark .hero__description {
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.hero__scroll-indicator {
diff --git a/src/components/MobileMenu.astro b/src/components/MobileMenu.astro
index 43c6764..15c4cae 100644
--- a/src/components/MobileMenu.astro
+++ b/src/components/MobileMenu.astro
@@ -21,6 +21,16 @@
class="wi-mobile-menu__link"
th:data-href="${menuItem.status.href}"
>
+
+
+
@@ -213,6 +223,14 @@
background var(--duration-fast) var(--ease-out-quart);
}
+ /* 二级菜单项:缩进 + 弱化,与一级项区分 */
+ .wi-mobile-menu__link--sub {
+ padding-left: 2rem;
+ font-size: var(--text-base);
+ font-weight: 400;
+ color: var(--ink-3);
+ }
+
.wi-mobile-menu__link:hover {
color: var(--accent);
background: var(--bg-raised);
diff --git a/src/components/Navbar.astro b/src/components/Navbar.astro
index aa18d22..024b1d8 100644
--- a/src/components/Navbar.astro
+++ b/src/components/Navbar.astro
@@ -32,15 +32,34 @@ import ThemeSwitcher from "./ThemeSwitcher.astro";
-
-
+
+
+
+
@@ -257,6 +276,88 @@ import ThemeSwitcher from "./ThemeSwitcher.astro";
min-width: 0;
}
+ /* 一级菜单项容器(含子菜单时作为下拉的定位锚点) */
+ .wi-navbar__item {
+ position: relative;
+ display: inline-flex;
+ }
+
+ /* 二级下拉:纯 CSS 悬停/聚焦展开,无 JS 开销 */
+ .wi-navbar__submenu {
+ position: absolute;
+ top: 100%;
+ left: 50%;
+ transform: translateX(-50%) translateY(6px);
+ display: flex;
+ flex-direction: column;
+ min-width: 168px;
+ padding: 6px;
+ margin: 0;
+ list-style: none;
+ border-radius: var(--radius-md, 12px);
+ background: var(--bg-raised);
+ border: 1px solid var(--rule);
+ box-shadow: var(--shadow-lg);
+ opacity: 0;
+ visibility: hidden;
+ transition: opacity 0.18s ease, transform 0.18s var(--ease-out-quart),
+ visibility 0.18s;
+ z-index: 101;
+ }
+
+ /* 悬停桥:避免鼠标从一级移到二级途中经过空隙导致菜单关闭 */
+ .wi-navbar__item--has-children::after {
+ content: "";
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 100%;
+ height: 10px;
+ }
+
+ .wi-navbar__item--has-children:hover .wi-navbar__submenu,
+ .wi-navbar__item--has-children:focus-within .wi-navbar__submenu {
+ opacity: 1;
+ visibility: visible;
+ transform: translateX(-50%) translateY(0);
+ }
+
+ .wi-navbar__submenu-link {
+ display: block;
+ padding: 0.5rem 0.75rem;
+ border-radius: 8px;
+ font-size: var(--text-sm);
+ color: var(--ink-2);
+ text-decoration: none;
+ white-space: nowrap;
+ transition: color 0.15s ease, background 0.15s ease;
+ }
+
+ .wi-navbar__submenu-link:hover {
+ color: var(--accent);
+ background: color-mix(in srgb, var(--accent) 8%, transparent);
+ }
+
+ /* 有子菜单的一级项带下拉小箭头 */
+ .wi-navbar__item--has-children > .wi-navbar__link::after {
+ content: "";
+ display: inline-block;
+ width: 4px;
+ height: 4px;
+ margin-left: 0.3rem;
+ margin-top: -2px;
+ border-right: 1.5px solid currentColor;
+ border-bottom: 1.5px solid currentColor;
+ transform: rotate(45deg);
+ opacity: 0.6;
+ transition: transform 0.18s var(--ease-out-quart);
+ }
+
+ .wi-navbar__item--has-children:hover > .wi-navbar__link::after {
+ transform: rotate(225deg);
+ margin-top: 2px;
+ }
+
.wi-navbar__link {
display: inline-flex;
align-items: center;
diff --git a/src/pages/links.astro b/src/pages/links.astro
index 098f340..f864eea 100644
--- a/src/pages/links.astro
+++ b/src/pages/links.astro
@@ -87,6 +87,92 @@ import Layout from "../layouts/Layout.astro";
+
+
@@ -189,6 +275,132 @@ import Layout from "../layouts/Layout.astro";
margin-top: var(--space-3xl);
}
+ /* ===== 友链申请表单 ===== */
+ .wi-links__apply {
+ margin-top: var(--space-3xl);
+ padding: var(--space-xl);
+ border: 1px solid var(--rule);
+ border-radius: var(--radius-lg, 16px);
+ background: var(--bg-raised);
+ }
+
+ .wi-links__apply-title {
+ text-align: center;
+ font-size: var(--text-xl);
+ font-weight: 700;
+ color: var(--ink);
+ margin-bottom: var(--space-lg);
+ }
+
+ .wi-links__apply-result {
+ text-align: center;
+ font-size: var(--text-sm);
+ color: var(--accent);
+ margin-bottom: var(--space-md);
+ }
+
+ .wi-links__apply-result--error {
+ color: #e6162d;
+ }
+
+ html.dark .wi-links__apply-result--error {
+ color: #ff6b6b;
+ }
+
+ .wi-links__apply-form {
+ display: flex;
+ flex-direction: column;
+ gap: var(--space-md);
+ }
+
+ .wi-links__apply-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: var(--space-md);
+ }
+
+ .wi-links__apply-field {
+ display: flex;
+ flex-direction: column;
+ gap: 0.35rem;
+ font-size: var(--text-sm);
+ color: var(--ink-2);
+ }
+
+ .wi-links__apply-field input,
+ .wi-links__apply-field textarea {
+ padding: 0.6rem 0.8rem;
+ border: 1px solid var(--rule);
+ border-radius: 10px;
+ background: var(--bg);
+ color: var(--ink);
+ font-family: inherit;
+ font-size: var(--text-sm);
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
+ resize: vertical;
+ }
+
+ .wi-links__apply-field input:focus,
+ .wi-links__apply-field textarea:focus {
+ outline: none;
+ border-color: var(--accent);
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 15%, transparent);
+ }
+
+ .wi-links__apply-captcha {
+ display: flex;
+ align-items: flex-end;
+ padding-bottom: 2px;
+ }
+
+ .wi-links__apply-captcha-img {
+ border-radius: 8px;
+ border: 1px solid var(--rule);
+ cursor: pointer;
+ }
+
+ .wi-links__apply-submit {
+ align-self: center;
+ padding: 0.65rem 2.2rem;
+ min-height: 44px;
+ border: none;
+ border-radius: 9999px;
+ font-size: var(--text-sm);
+ font-weight: 600;
+ font-family: inherit;
+ color: #fff;
+ background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 70%, #000));
+ cursor: pointer;
+ transition: transform var(--duration-fast) var(--ease-out-quart), opacity 0.15s ease;
+ }
+
+ .wi-links__apply-submit:hover {
+ transform: translateY(-1px);
+ opacity: 0.95;
+ }
+
+ .wi-links__apply-submit:active {
+ transform: translateY(0) scale(0.98);
+ }
+
+ /* 插件未开放申请时(验证码 404)自动隐藏表单并提示 */
+ .wi-links__apply--unavailable .wi-links__apply-form {
+ display: none;
+ }
+
+ .wi-links__apply--unavailable .wi-links__apply-unavailable-tip {
+ display: block !important;
+ text-align: center;
+ color: var(--ink-3);
+ font-size: var(--text-sm);
+ }
+
+ @media (max-width: 640px) {
+ .wi-links__apply-row {
+ grid-template-columns: 1fr;
+ }
+ }
+
.wi-links__title {
font-size: var(--text-4xl);
margin-bottom: var(--space-xs);
diff --git a/src/pages/moments.astro b/src/pages/moments.astro
index 3c859ea..3f4930c 100644
--- a/src/pages/moments.astro
+++ b/src/pages/moments.astro
@@ -31,20 +31,42 @@ import LightGallery from "../components/LightGallery.astro";
-
-
-
-
-
-
-
@@ -527,6 +551,43 @@ import LightGallery from "../components/LightGallery.astro";
transform: translateY(-3px);
}
+ /* 朋友圈式布局:头像在左,昵称/正文/九宫格在右 */
+ .wi-moments-page__card-layout {
+ display: flex;
+ gap: var(--space-md);
+ align-items: flex-start;
+ }
+
+ .wi-moments-page__avatar {
+ flex-shrink: 0;
+ width: 44px;
+ height: 44px;
+ border-radius: 10px;
+ object-fit: cover;
+ }
+
+ .wi-moments-page__avatar--fallback {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
+ color: var(--accent);
+ font-weight: 700;
+ font-size: var(--text-lg);
+ }
+
+ .wi-moments-page__main {
+ flex: 1;
+ min-width: 0;
+ }
+
+ .wi-moments-page__name {
+ font-size: var(--text-base);
+ font-weight: 600;
+ color: var(--accent);
+ margin-bottom: var(--space-xs);
+ }
+
.wi-moments-page__card-text {
font-size: var(--text-base);
line-height: var(--leading-relaxed);
@@ -568,8 +629,15 @@ import LightGallery from "../components/LightGallery.astro";
grid-template-columns: repeat(2, 1fr);
}
- .wi-moments-page__card-media:has(.wi-moments-page__card-image:nth-child(4)) {
- grid-template-columns: repeat(3, 1fr);
+ /* 微信九宫格规则:4 张时 2x2 排布 */
+ .wi-moments-page__card-media:has(.wi-moments-page__card-image:nth-child(4)):not(:has(.wi-moments-page__card-image:nth-child(5))) {
+ grid-template-columns: repeat(2, 1fr);
+ max-width: 72%;
+ }
+
+ /* 三列九宫格限制宽度,避免大屏下图片单元过大 */
+ .wi-moments-page__card-media:has(.wi-moments-page__card-image:nth-child(3)) {
+ max-width: 100%;
}
.wi-moments-page__card-footer {
diff --git a/theme.yaml b/theme.yaml
index b5dfc99..0749758 100644
--- a/theme.yaml
+++ b/theme.yaml
@@ -28,7 +28,7 @@ spec:
description: 微信读书书架(依赖微信读书插件)
screenshot:
file: weread.html
- version: "1.1.8"
+ version: "1.1.9"
requires: ">=2.24.0"
license:
- name: "GPL-3.0"