feat(frontend): align single post page 1:1 with Zibll

Restore Zibll float dual-column shell, fix single settings DTO key mapping,
reorder article footer/actions, and match author bar, prev/next, title/body
typography, and limit-height expand UX.
This commit is contained in:
2026-07-13 08:26:36 +08:00
parent a651bd6d2d
commit 5ae1a9ad93
12 changed files with 626 additions and 218 deletions
@@ -1,3 +1,47 @@
/* ===== Zibll article-nav (prev/next) ===== */
.article-nav {
display: block;
width: 100%;
}
.article-nav .box-body {
width: calc(50% - 7px);
margin: 0;
display: inline-block;
vertical-align: top;
}
.article-nav .box-body + .box-body {
margin-right: 0;
float: right;
text-align: right;
}
.article-nav a {
display: block;
color: inherit;
text-decoration: none;
}
.article-nav a:hover {
color: var(--focus-color, #f04494);
}
.article-nav .text-ellipsis-2 {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
font-size: 14px;
line-height: 1.5;
color: var(--key-color, #333);
}
.article-nav p {
margin: 0 0 6px;
font-size: 12px;
}
/* ===== Previous / Next Navigation ===== */
.post-nav-box {
display: grid;
@@ -112,12 +156,45 @@
/* ===== Comment Card Spacing ===== */
.comments-card { margin-bottom: 16px; }
/* ===== Content Height Clamp ===== */
/* ===== Content Height Clamp (Zibll) ===== */
.limit-height,
.wp-posts-content.limit-height {
position: relative;
overflow: hidden;
}
.limit-height .read-more {
position: absolute;
bottom: 0;
width: 100%;
text-align: center;
background-image: linear-gradient(0deg, var(--main-bg-color, #fff) 70px, rgba(255, 255, 255, 0) 100%);
animation: lazy_fade 0.5s;
z-index: 80;
}
html.dark .limit-height .read-more,
body.dark-theme .limit-height .read-more {
background-image: linear-gradient(0deg, var(--main-bg-color, #2a2a2a) 70px, rgba(53, 54, 55, 0) 100%);
}
.limit-height .read-more a,
.limit-height .read-more .read-more-open {
padding: 25px 0;
display: inline-block;
color: var(--focus-color, #f04494);
margin-top: 80px;
cursor: pointer;
background: none;
border: 0;
font-size: 14px;
}
@keyframes lazy_fade {
from { opacity: 0; }
to { opacity: 1; }
}
.wp-posts-content.limit-height::after {
content: '';
position: absolute;