feat(frontend): adopt zibll site-layout-1/2/3 float dual-column system

Wire settings-driven sidebar visibility and body site-layout classes,
replace content-layout CSS grid with Zibll float geometry, move sidebar
DOM to content-wrap sibling across single/archive/page/home, and add
post meta show_layout overrides.
This commit is contained in:
2026-07-15 00:30:26 +08:00
parent 232b6eb752
commit 12673fb819
15 changed files with 354 additions and 168 deletions
+92 -32
View File
@@ -109,62 +109,122 @@
font-weight: 600;
}
.content-layout {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
align-items: start;
/* ============================================================
* Site shell — Zibll site-layout-1/2/3 float dual-column
* body.site-layout-1 = no sidebar
* body.site-layout-2 = sidebar right
* body.site-layout-3 = sidebar left
* ============================================================ */
main.container,
main.content-shell,
.site-main.container {
position: relative;
}
@media (min-width: 992px) {
.content-layout {
grid-template-columns: minmax(0, 1fr) var(--sidebar-width, 311px);
gap: 20px;
}
main.container::after,
main.content-shell::after,
.site-main.container::after {
content: "";
display: table;
clear: both;
}
.content-wrap {
float: left;
width: 100%;
min-width: 0;
}
.content-layout {
display: block;
width: 100%;
min-width: 0;
margin-right: 0;
margin-left: 0;
}
.content-layout__primary {
min-width: 0;
max-width: 100%;
}
.content-layout__aside {
.content-layout__aside,
.sidebar {
min-width: 0;
}
/* No sidebar */
body.site-layout-1 .sidebar {
display: none;
}
body.site-layout-1 .content-layout,
body.site-layout-1 .content-layout--no-sidebar {
margin-left: 0;
margin-right: 0;
}
/* Compat: templates may still stamp content-layout--no-sidebar */
.content-layout--no-sidebar {
margin-left: 0 !important;
margin-right: 0 !important;
}
/* Sidebar RIGHT (layout 2) — Zibll default */
body.site-layout-2 .content-layout {
margin-right: calc(var(--sidebar-width, 311px) + 15px);
margin-left: 0;
}
body.site-layout-2 .sidebar {
float: left;
width: var(--sidebar-width, 311px);
margin-left: calc(0px - var(--sidebar-width, 311px));
position: relative;
}
/* Sidebar LEFT (layout 3) */
body.site-layout-3 .content-layout {
margin-left: calc(var(--sidebar-width, 311px) + 15px);
margin-right: unset;
}
body.site-layout-3 .sidebar {
float: left;
width: var(--sidebar-width, 311px);
margin-left: -100%;
position: relative;
}
/* Sticky widgets inside sidebar */
@media (min-width: 992px) {
body.site-layout-2 .sidebar .posts-nav-box,
body.site-layout-3 .sidebar .posts-nav-box,
.sidebar .content-layout__aside,
.content-layout__aside {
position: sticky;
top: calc(var(--nav-height, 60px) + 16px);
align-self: start;
}
/* WordPress Admin Bar 已全局禁用,无需偏移规则 */
}
@media (min-width: 992px) {
.has-static-nav .sidebar .posts-nav-box,
.has-static-nav .content-layout__aside {
top: 16px;
}
}
.content-layout--no-sidebar {
grid-template-columns: 1fr;
}
.content-layout--no-sidebar .content-layout__primary {
width: 100%;
max-width: var(--content-no-sidebar-max, 1080px);
margin: 0 auto;
}
/* 三栏布局变体:侧边栏在左侧 */
@media (min-width: 992px) {
.content-layout--sidebar-left {
grid-template-columns: var(--sidebar-width, 311px) minmax(0, 1fr);
/* Mobile collapse (Zibll max-width: 991px) */
@media (max-width: 991.98px) {
body.site-layout-2 .content-layout,
body.site-layout-3 .content-layout {
margin-left: auto;
margin-right: auto;
}
.content-layout--sidebar-left .content-layout__aside {
order: -1;
body.site-layout-2 .sidebar,
body.site-layout-3 .sidebar,
.sidebar {
display: none;
}
}