From d66d1eaf879d31b9036fd73d4738ce1f02513033 Mon Sep 17 00:00:00 2001 From: User Date: Thu, 12 Mar 2026 19:39:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E9=80=81?= =?UTF-8?q?=E8=AF=84=E8=AE=BA=E5=8D=A1=E7=89=87=E5=BA=95=E9=83=A8=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E7=A9=BA=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 #post_comment.card 底部 padding 从 12px 调整为 8px - 优化卡片底部与按钮区域的间距,使布局更紧凑 --- style.css | 657 ++++++++++++++++++------------------------------------ 1 file changed, 223 insertions(+), 434 deletions(-) diff --git a/style.css b/style.css index 2deb932..6a15bb8 100644 --- a/style.css +++ b/style.css @@ -5965,7 +5965,7 @@ html.darkmode .comment-edit-history-item { /* 发送评论卡片优化 */ #post_comment.card { border-radius: 16px; - padding: 20px; + padding: 20px 20px 8px 20px; background: var(--color-foreground); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04), @@ -5979,6 +5979,16 @@ html.darkmode .comment-edit-history-item { padding: 0; } +#post_comment.card .row { + margin-left: -10px; + margin-right: -10px; +} + +#post_comment.card [class*="col-"] { + padding-left: 10px; + padding-right: 10px; +} + #post_comment.card:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), @@ -6375,17 +6385,19 @@ html.darkmode .post-comment-reply-preview { display: inline-block; - margin-top: 8px; + margin-top: 5px; - height: 28px; + height: 26px; margin-right: 8px; + vertical-align: middle; + } .comment-post-checkbox .custom-control-label { - line-height: 26px; + line-height: 24px; font-size: 13px; @@ -13990,6 +14002,7 @@ article.post.card { overflow: hidden; border: none !important; will-change: auto; + position: relative; } /* M3 按钮样式 */ @@ -16847,54 +16860,7 @@ html.darkmode { --skeleton-highlight: rgba(255, 255, 255, 0.1); } -:root { - --skeleton-bg: #f2f2f2; - --skeleton-highlight: #e6e6e6; -} - -.argon-skeleton { - padding: 24px; - width: 100%; - display: flex; - flex-direction: column; -} - -.argon-skeleton-item { - background: linear-gradient(90deg, var(--skeleton-bg) 25%, var(--skeleton-highlight) 37%, var(--skeleton-bg) 63%); - background-size: 400% 100%; - animation: el-skeleton-loading 1.4s ease infinite; - border-radius: 4px; -} - -.argon-skeleton-title { - width: 40%; - height: 28px; - margin: 0 auto 20px; -} - -.argon-skeleton-meta { - width: 70%; - height: 16px; - margin: 0 auto 24px; -} - -.argon-skeleton-line { - width: 100%; - height: 16px; - margin-bottom: 12px; -} - -.argon-skeleton-line.short { - width: 60%; -} - -.article-list article.post.skeleton-loading>*:not(.argon-skeleton) { - opacity: 0; - visibility: hidden; - transition: opacity 0.4s ease; - position: absolute; - /* Preempt layout shift */ -} +/* 文章骨架屏已移除,不再向文章 DOM 注入骨架元素 */ /* ========== 长文章 backdrop-filter 修复 ========== 浏览器 GPU 纹理大小限制导致 backdrop-filter 在超高元素上失效。 @@ -17230,409 +17196,205 @@ article img:not([loading="lazy"]), 现代化页面加载系? ========================================================================== */ -/* ---------- 基础旋转器(保留用于其他地方?---------- */ -@keyframes modernSpinnerRotate { - to { - transform: rotate(360deg); + +/* ---------- 页面加载骨架屏进度条 ---------- */ +@keyframes el-skeleton-loading { + 0% { + background-position: 100% 50%; + } + 100% { + background-position: 0 50%; } } -.loading-spinner { - width: 24px; - height: 24px; - border: 2px solid var(--color-border); - border-top-color: var(--themecolor); - border-radius: 50%; - animation: modernSpinnerRotate 0.8s linear infinite; +.page-loader { + display: none !important; } -/* ---------- 顶部进度?---------- */ -#page-loading-bar { - position: fixed; +/* ---------- 文章卡片骨架屏 ---------- */ +@keyframes article-skeleton-pulse { + 0% { + background-position: 100% 50%; + } + 100% { + background-position: 0 50%; + } +} + +.article-skeleton { + position: absolute; top: 0; left: 0; - height: 3px; - background: var(--themecolor-gradient); - z-index: 9999; - transition: width var(--animation-fast) var(--ease-out-expo); - box-shadow: 0 0 10px rgba(var(--themecolor-rgbstr), 0.5); + right: 0; + bottom: 0; + z-index: 10; + background: inherit; + border-radius: inherit; + overflow: hidden; } -/* ---------- 页面加载器容?---------- */ -.page-loader { - position: fixed; - inset: 0; - z-index: 9998; - display: flex; - align-items: center; - justify-content: center; - opacity: 0; - visibility: hidden; - pointer-events: none; - transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0.35s; -} - -.page-loader.is-visible { - opacity: 1; - visibility: visible; - pointer-events: auto; - transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s; -} - -.page-loader.is-hiding { - opacity: 0; - transition: opacity 0.35s cubic-bezier(0.4, 0, 0.6, 1); -} - -/* ---------- 背景遮罩 ---------- */ -.page-loader-backdrop { +.article-skeleton::before { + content: ''; position: absolute; inset: 0; - background: linear-gradient(135deg, rgba(var(--themecolor-rgbstr), 0.03) 0%, rgba(var(--themecolor-rgbstr), 0.08) 100%); - -webkit-backdrop-filter: blur(calc(var(--card-blur) * 1.2)) saturate(var(--card-saturate)); - backdrop-filter: blur(calc(var(--card-blur) * 1.2)) saturate(var(--card-saturate)); + background: rgba(255, 255, 255, var(--card-opacity, 1)); } -html.darkmode .page-loader-backdrop { - background: linear-gradient(135deg, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.6) 100%); +html.darkmode .article-skeleton::before { + background: rgba(66, 66, 66, var(--card-opacity, 1)); } -/* ---------- 内容容器 ---------- */ -.page-loader-content { - position: relative; +.article-skeleton-title, +.article-skeleton-line, +.article-skeleton-badge, +.article-skeleton-thumb { + background: linear-gradient( + 90deg, + var(--skeleton-bg, rgba(0, 0, 0, 0.06)) 25%, + var(--skeleton-highlight, rgba(0, 0, 0, 0.1)) 50%, + var(--skeleton-bg, rgba(0, 0, 0, 0.06)) 75% + ); + background-size: 400% 100%; + animation: article-skeleton-pulse 1.5s ease-in-out infinite; +} + +html.darkmode .article-skeleton-title, +html.darkmode .article-skeleton-line, +html.darkmode .article-skeleton-badge, +html.darkmode .article-skeleton-thumb { + --skeleton-bg: rgba(255, 255, 255, 0.04); + --skeleton-highlight: rgba(255, 255, 255, 0.08); +} + +.article-skeleton-fade-out { + opacity: 0; + transition: opacity 0.3s ease; +} + +@media (prefers-reduced-motion: reduce) { + .article-skeleton-title, + .article-skeleton-line, + .article-skeleton-badge, + .article-skeleton-thumb { + animation: none !important; + } +} + +/* 默认布局骨架屏 (content-preview-1) */ +.article-skeleton-default { display: flex; flex-direction: column; align-items: center; - gap: 32px; - transform: translateY(20px) scale(0.95); - opacity: 0; - transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.4s ease; + padding: 24px; } -.page-loader.is-visible .page-loader-content { - transform: translateY(0) scale(1); - opacity: 1; - transition-delay: 0.1s; -} - -/* ---------- 进度环容?---------- */ -.loader-ring-container { - position: relative; - width: 120px; - height: 120px; -} - -/* ---------- SVG 进度?---------- */ -.loader-ring { - width: 100%; - height: 100%; - transform: rotate(-90deg); - filter: drop-shadow(0 4px 12px rgba(var(--themecolor-rgbstr), 0.2)); -} - -.loader-ring-bg { - fill: none; - stroke: var(--color-border); - stroke-width: 3; - opacity: 0.2; -} - -.loader-ring-progress { - fill: none; - stroke: url(#loaderGradient); - stroke-width: 3; - stroke-linecap: round; - stroke-dasharray: 283; - stroke-dashoffset: 283; - transition: stroke-dashoffset 0.3s cubic-bezier(0.4, 0, 0.2, 1); -} - -/* 渐变定义(通过 JS 动态添加或使用内联 SVG?*/ -.loader-ring::before { - content: ''; - position: absolute; - inset: 0; - border-radius: 50%; - background: conic-gradient(from 0deg, var(--themecolor), transparent); - opacity: 0.1; - animation: ringGlow 2s ease-in-out infinite; -} - -@keyframes ringGlow { - - 0%, - 100% { - opacity: 0.1; - } - - 50% { - opacity: 0.3; - } -} - -/* ---------- 中心图标 ---------- */ -.loader-icon { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 48px; - height: 48px; - color: var(--themecolor); - animation: iconPulse 2s ease-in-out infinite; -} - -.loader-icon svg { - width: 100%; - height: 100%; - animation: iconRotate 3s linear infinite; -} - -@keyframes iconPulse { - - 0%, - 100% { - opacity: 0.6; - transform: translate(-50%, -50%) scale(1); - } - - 50% { - opacity: 1; - transform: translate(-50%, -50%) scale(1.1); - } -} - -@keyframes iconRotate { - to { - transform: rotate(360deg); - } -} - -/* ---------- 加载文字 ---------- */ -.loader-text { - text-align: center; - opacity: 0; - transform: translateY(10px); - animation: textFadeIn 0.5s ease forwards; - animation-delay: 0.3s; -} - -@keyframes textFadeIn { - to { - opacity: 1; - transform: translateY(0); - } -} - -.loader-title { - font-size: 20px; - font-weight: 600; - color: var(--color-font); - margin-bottom: 8px; - letter-spacing: 0.5px; -} - -.loader-subtitle { - font-size: 14px; - color: var(--color-font-sub); - font-weight: 400; -} - -/* ---------- 骨架屏(延迟显示?---------- */ -.loader-skeleton { - opacity: 0; - transform: translateY(20px); - transition: opacity 0.4s ease, transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); - pointer-events: none; -} - -.page-loader.show-skeleton .loader-skeleton { - opacity: 1; - transform: translateY(0); -} - -/* ---------- 骨架卡片 ---------- */ -.skeleton-card { - width: min(480px, 85vw); - background: var(--color-foreground); - border-radius: 16px; - overflow: hidden; - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08); -} - -html.darkmode .skeleton-card { - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); -} - -/* ---------- 骨架图片 ---------- */ -.skeleton-image { - width: 100%; - height: 200px; - background: linear-gradient(90deg, var(--color-border-on-foreground) 0%, var(--color-border-on-foreground-deeper) 50%, var(--color-border-on-foreground) 100%); - background-size: 200% 100%; - animation: skeletonShimmer 1.5s ease-in-out infinite; - position: relative; - overflow: hidden; -} - -.skeleton-image::after { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); - animation: shimmerSlide 2s infinite; -} - -html.darkmode .skeleton-image::after { - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.05), transparent); -} - -@keyframes shimmerSlide { - to { - left: 100%; - } -} - -@keyframes skeletonShimmer { - - 0%, - 100% { - background-position: 0% 0%; - } - - 50% { - background-position: 100% 0%; - } -} - -/* ---------- 骨架内容 ---------- */ -.skeleton-content { - padding: 20px; -} - -.skeleton-title { - height: 24px; - width: 70%; - border-radius: 12px; - background: linear-gradient(90deg, var(--color-border-on-foreground) 0%, var(--color-border-on-foreground-deeper) 50%, var(--color-border-on-foreground) 100%); - background-size: 200% 100%; - animation: skeletonShimmer 1.5s ease-in-out infinite; +.article-skeleton-default .article-skeleton-title { + width: 50%; + height: 28px; + border-radius: 6px; margin-bottom: 16px; } -.skeleton-line { +.article-skeleton-default .article-skeleton-meta { + display: flex; + justify-content: center; + gap: 8px; + margin-bottom: 16px; +} + +.article-skeleton-default .article-skeleton-badge { + width: 60px; height: 14px; - border-radius: 7px; - background: linear-gradient(90deg, var(--color-border-on-foreground) 0%, var(--color-border-on-foreground-deeper) 50%, var(--color-border-on-foreground) 100%); - background-size: 200% 100%; - animation: skeletonShimmer 1.5s ease-in-out infinite; + border-radius: 3px; +} + +.article-skeleton-default .article-skeleton-content { + width: 100%; +} + +.article-skeleton-default .article-skeleton-line { + width: 100%; + height: 14px; + border-radius: 3px; margin-bottom: 10px; } -.skeleton-line.short { +.article-skeleton-default .article-skeleton-line.short { + width: 75%; +} + +/* Layout2 骨架屏 (左侧缩略图布局) */ +.article-skeleton-layout2 { + display: flex; + flex-direction: row; + padding: 0; +} + +.article-skeleton-layout2 .article-skeleton-thumb { + width: 300px; + height: 200px; + flex-shrink: 0; + border-radius: var(--card-radius) 0 0 var(--card-radius); +} + +.article-skeleton-layout2 .article-skeleton-body { + flex: 1; + padding: 20px 28px; + display: flex; + flex-direction: column; +} + +.article-skeleton-layout2 .article-skeleton-title { width: 60%; + height: 26px; + border-radius: 6px; + margin-bottom: 16px; } -/* ---------- 响应式适配 ---------- */ -@media (max-width: 768px) { - .loader-ring-container { - width: 100px; - height: 100px; +.article-skeleton-layout2 .article-skeleton-content { + flex: 1; +} + +.article-skeleton-layout2 .article-skeleton-line { + width: 100%; + height: 14px; + border-radius: 3px; + margin-bottom: 10px; +} + +.article-skeleton-layout2 .article-skeleton-line.short { + width: 70%; +} + +.article-skeleton-layout2 .article-skeleton-meta { + display: flex; + gap: 8px; + margin-top: auto; + padding-top: 12px; +} + +.article-skeleton-layout2 .article-skeleton-badge { + width: 50px; + height: 12px; + border-radius: 3px; +} + +@media screen and (max-width: 768px) { + .article-skeleton-layout2 { + flex-direction: column; } - .loader-icon { - width: 40px; - height: 40px; - } - - .loader-title { - font-size: 18px; - } - - .loader-subtitle { - font-size: 13px; - } - - .skeleton-image { + .article-skeleton-layout2 .article-skeleton-thumb { + width: 100%; height: 160px; + border-radius: var(--card-radius) var(--card-radius) 0 0; } - .skeleton-content { - padding: 16px; + .article-skeleton-layout2 .article-skeleton-body { + padding: 16px 20px; } } -@media (max-width: 480px) { - .page-loader-content { - gap: 24px; - } - - .loader-ring-container { - width: 90px; - height: 90px; - } - - .loader-icon { - width: 36px; - height: 36px; - } - - .skeleton-card { - width: 92vw; - } - - .skeleton-image { - height: 140px; - } -} - -/* ---------- 减少动画(无障碍) ---------- */ -@media (prefers-reduced-motion: reduce) { - - .page-loader, - .page-loader-content, - .loader-ring-progress, - .loader-icon, - .loader-text, - .loader-skeleton, - .skeleton-image, - .skeleton-title, - .skeleton-line { - animation: none !important; - transition: none !important; - } - - .page-loader.is-visible .page-loader-content { - transform: none; - opacity: 1; - } -} - -/* 页面过渡内容容器 */ -.page-transition-content { - transition: opacity var(--animation-normal) var(--ease-standard); -} - -html.page-transition-enter .page-transition-content { - opacity: 0; -} - -html.page-transition-enter.page-transition-active .page-transition-content { - opacity: 1; -} - -@media (prefers-reduced-motion: reduce) { - - .page-transition-content, - #article-loading-overlay, - #article-loading-overlay .overlay-content { - transition: none !important; - animation: none !important; - } -} /* 12. 模态框和下拉菜单动画 */ .modal { @@ -17873,23 +17635,50 @@ html.darkmode .argon-hidden-text-background:active { -webkit-filter: none; user-select: auto; }.site-rss { - margin-top: 15px; - display: flex; - justify-content: center; + margin-top: 20px; + margin-bottom: 5px; + padding: 0 10px; } -.site-rss a { - width: 38px; - height: 38px; - display: flex; - align-items: center; - justify-content: center; - color: #fff !important; - background: var(--themecolor); - border-radius: 50%; - box-shadow: 0 4px 6px rgba(50, 50, 93, .11), 0 1px 3px rgba(0, 0, 0, .08); - transition: all .15s ease; + +.site-rss-btn { + width: 100%; + height: 38px; + display: flex; + align-items: center; + justify-content: center; + color: var(--themecolor) !important; + background: transparent; + border-radius: var(--card-radius, 8px); + font-size: 14px; + font-weight: 600; + transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); + border: 1px solid var(--themecolor); + text-decoration: none !important; } -.site-rss a:hover { - transform: translateY(-1px); - box-shadow: 0 7px 14px rgba(50, 50, 93, .1), 0 3px 6px rgba(0, 0, 0, .08); + +.site-rss-btn i { + margin-right: 8px; + font-size: 16px; +} + +.site-rss-btn:hover { + background: var(--themecolor); + color: #fff !important; + transform: translateY(-2px); + box-shadow: 0 6px 15px rgba(var(--themecolor-rgbstr), 0.25); +} + +.site-rss-btn:active { + transform: scale(0.98); +} + +html.darkmode .site-rss-btn { + background: transparent; + border-color: var(--themecolor); + color: var(--themecolor) !important; +} + +html.darkmode .site-rss-btn:hover { + background: var(--themecolor); + color: #fff !important; }