fix: 修复发送评论卡片底部异常空白

- 将 #post_comment.card 底部 padding 从 12px 调整为 8px
- 优化卡片底部与按钮区域的间距,使布局更紧凑
This commit is contained in:
User
2026-03-12 19:39:21 +08:00
parent d11873f921
commit d66d1eaf87

647
style.css
View File

@@ -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;
.site-rss-btn {
width: 100%;
height: 38px;
display: flex;
align-items: center;
justify-content: center;
color: #fff !important;
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-btn i {
margin-right: 8px;
font-size: 16px;
}
.site-rss-btn:hover {
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;
color: #fff !important;
transform: translateY(-2px);
box-shadow: 0 6px 15px rgba(var(--themecolor-rgbstr), 0.25);
}
.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: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;
}