v0.1.15 반응형 레이아웃 및 오버 사이드 수정

This commit is contained in:
2026-04-13 18:31:10 +09:00
parent a2439a60bc
commit 0a65176008
4 changed files with 105 additions and 38 deletions

View File

@@ -15,8 +15,8 @@
--shadow: 0 8px 24px rgba(20, 16, 12, 0.035);
--radius: 18px;
--radius-sm: 14px;
--sidebar-left: 240px;
--sidebar-right: 320px;
--sidebar-left: 287px;
--sidebar-right: 287px;
--content-column: 720px;
--content-measure: 680px;
--content-header: 720px;
@@ -88,7 +88,7 @@ input {
.site-shell {
display: grid;
grid-template-columns: var(--sidebar-left) minmax(0, var(--content-column)) var(--sidebar-right);
grid-template-columns: var(--sidebar-left) minmax(0, 1fr) var(--sidebar-right);
min-height: calc(100vh - var(--topbar-height));
width: min(100%, var(--shell-width));
margin: 0 auto;
@@ -1362,36 +1362,7 @@ body:not(.left-sidebar-collapsed) .topbar__sidebar-toggle-icon--close {
border-bottom: 0;
}
@media (max-width: 1240px) {
.topbar {
width: 100%;
grid-template-columns: 240px minmax(0, 1fr);
border-left: 0;
border-right: 0;
}
.topbar__actions {
border-left: 0;
}
.site-shell {
width: 100%;
grid-template-columns: 240px minmax(0, 1fr);
border-left: 0;
border-right: 0;
}
body.left-sidebar-collapsed .site-shell {
width: min(100%, var(--content-column));
grid-template-columns: minmax(0, 1fr);
}
.sidebar--right {
display: none;
}
}
@media (max-width: 960px) {
@media (max-width: 1023px) {
.topbar {
grid-template-columns: 1fr;
padding: 0 14px;
@@ -1431,13 +1402,35 @@ body:not(.left-sidebar-collapsed) .topbar__sidebar-toggle-icon--close {
}
.site-shell {
grid-template-columns: 1fr;
width: min(100%, calc(var(--content-column) + var(--sidebar-right)));
grid-template-columns: minmax(0, 1fr) var(--sidebar-right);
border-left: 0;
border-right: 0;
}
.sidebar--left {
display: none;
position: fixed;
top: var(--topbar-height);
left: 0;
bottom: 0;
z-index: 40;
width: var(--sidebar-left);
border-right: 1px solid var(--border);
transform: translateX(-100%);
transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
box-shadow: 0 20px 40px rgba(20, 16, 12, 0.08);
}
body.left-sidebar-open .sidebar--left {
transform: translateX(0);
}
.left-sidebar-backdrop {
position: fixed;
inset: var(--topbar-height) 0 0;
z-index: 35;
background: rgba(17, 17, 17, 0.22);
backdrop-filter: blur(2px);
}
.content-area {
@@ -1477,6 +1470,25 @@ body:not(.left-sidebar-collapsed) .topbar__sidebar-toggle-icon--close {
}
}
@media (max-width: 767px) {
.site-shell {
width: 100%;
grid-template-columns: 1fr;
}
.sidebar--right {
display: block;
border-left: 0;
border-top: 1px solid var(--border);
}
.sidebar__inner--right {
position: static;
height: auto;
padding-top: 18px;
}
}
@media (max-width: 640px) {
.topbar {
padding-inline: 16px;

View File

@@ -66,13 +66,67 @@
});
var leftSidebarToggle = document.querySelector("[data-left-sidebar-toggle]");
var leftSidebarBackdrop = document.querySelector("[data-left-sidebar-backdrop]");
var tabletMedia = window.matchMedia("(max-width: 1023px)");
function syncLeftSidebarState() {
var isOverlay = tabletMedia.matches;
var isOpen = isOverlay ? body.classList.contains("left-sidebar-open") : !body.classList.contains("left-sidebar-collapsed");
if (leftSidebarToggle) {
leftSidebarToggle.setAttribute("aria-expanded", isOpen ? "true" : "false");
}
if (leftSidebarBackdrop) {
leftSidebarBackdrop.hidden = !isOverlay || !isOpen;
}
}
function openLeftSidebar() {
if (tabletMedia.matches) {
body.classList.add("left-sidebar-open");
} else {
body.classList.remove("left-sidebar-collapsed");
}
syncLeftSidebarState();
}
function closeLeftSidebar() {
if (tabletMedia.matches) {
body.classList.remove("left-sidebar-open");
} else {
body.classList.add("left-sidebar-collapsed");
}
syncLeftSidebarState();
}
if (leftSidebarToggle) {
leftSidebarToggle.addEventListener("click", function () {
var collapsed = body.classList.toggle("left-sidebar-collapsed");
leftSidebarToggle.setAttribute("aria-expanded", collapsed ? "false" : "true");
var isOverlay = tabletMedia.matches;
var isOpen = isOverlay ? body.classList.contains("left-sidebar-open") : !body.classList.contains("left-sidebar-collapsed");
if (isOpen) {
closeLeftSidebar();
} else {
openLeftSidebar();
}
});
}
if (leftSidebarBackdrop) {
leftSidebarBackdrop.addEventListener("click", function () {
closeLeftSidebar();
});
}
if (tabletMedia.addEventListener) {
tabletMedia.addEventListener("change", syncLeftSidebarState);
} else if (tabletMedia.addListener) {
tabletMedia.addListener(syncLeftSidebarState);
}
syncLeftSidebarState();
var tabRoot = document.querySelector("[data-tabs]");
if (tabRoot) {
var triggers = tabRoot.querySelectorAll("[data-tab-trigger]");

View File

@@ -12,6 +12,7 @@
</head>
<body class="{{body_class}}">
{{> "site/topbar"}}
<div class="left-sidebar-backdrop" data-left-sidebar-backdrop hidden></div>
<div class="site-shell-wrap">
<div class="site-shell">
{{> "site/sidebar-left"}}

View File

@@ -1,6 +1,6 @@
{
"name": "ghost-theme-thred-clone",
"version": "0.1.14",
"version": "0.1.15",
"private": true,
"description": "A Ghost theme inspired by the Thred reference layout.",
"keywords": [