v0.1.15 반응형 레이아웃 및 오버 사이드 수정
This commit is contained in:
@@ -15,8 +15,8 @@
|
|||||||
--shadow: 0 8px 24px rgba(20, 16, 12, 0.035);
|
--shadow: 0 8px 24px rgba(20, 16, 12, 0.035);
|
||||||
--radius: 18px;
|
--radius: 18px;
|
||||||
--radius-sm: 14px;
|
--radius-sm: 14px;
|
||||||
--sidebar-left: 240px;
|
--sidebar-left: 287px;
|
||||||
--sidebar-right: 320px;
|
--sidebar-right: 287px;
|
||||||
--content-column: 720px;
|
--content-column: 720px;
|
||||||
--content-measure: 680px;
|
--content-measure: 680px;
|
||||||
--content-header: 720px;
|
--content-header: 720px;
|
||||||
@@ -88,7 +88,7 @@ input {
|
|||||||
|
|
||||||
.site-shell {
|
.site-shell {
|
||||||
display: grid;
|
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));
|
min-height: calc(100vh - var(--topbar-height));
|
||||||
width: min(100%, var(--shell-width));
|
width: min(100%, var(--shell-width));
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
@@ -1362,36 +1362,7 @@ body:not(.left-sidebar-collapsed) .topbar__sidebar-toggle-icon--close {
|
|||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1240px) {
|
@media (max-width: 1023px) {
|
||||||
.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) {
|
|
||||||
.topbar {
|
.topbar {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
padding: 0 14px;
|
padding: 0 14px;
|
||||||
@@ -1431,13 +1402,35 @@ body:not(.left-sidebar-collapsed) .topbar__sidebar-toggle-icon--close {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.site-shell {
|
.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-left: 0;
|
||||||
border-right: 0;
|
border-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar--left {
|
.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 {
|
.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) {
|
@media (max-width: 640px) {
|
||||||
.topbar {
|
.topbar {
|
||||||
padding-inline: 16px;
|
padding-inline: 16px;
|
||||||
|
|||||||
@@ -66,13 +66,67 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
var leftSidebarToggle = document.querySelector("[data-left-sidebar-toggle]");
|
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) {
|
if (leftSidebarToggle) {
|
||||||
leftSidebarToggle.addEventListener("click", function () {
|
leftSidebarToggle.addEventListener("click", function () {
|
||||||
var collapsed = body.classList.toggle("left-sidebar-collapsed");
|
var isOverlay = tabletMedia.matches;
|
||||||
leftSidebarToggle.setAttribute("aria-expanded", collapsed ? "false" : "true");
|
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]");
|
var tabRoot = document.querySelector("[data-tabs]");
|
||||||
if (tabRoot) {
|
if (tabRoot) {
|
||||||
var triggers = tabRoot.querySelectorAll("[data-tab-trigger]");
|
var triggers = tabRoot.querySelectorAll("[data-tab-trigger]");
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="{{body_class}}">
|
<body class="{{body_class}}">
|
||||||
{{> "site/topbar"}}
|
{{> "site/topbar"}}
|
||||||
|
<div class="left-sidebar-backdrop" data-left-sidebar-backdrop hidden></div>
|
||||||
<div class="site-shell-wrap">
|
<div class="site-shell-wrap">
|
||||||
<div class="site-shell">
|
<div class="site-shell">
|
||||||
{{> "site/sidebar-left"}}
|
{{> "site/sidebar-left"}}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ghost-theme-thred-clone",
|
"name": "ghost-theme-thred-clone",
|
||||||
"version": "0.1.14",
|
"version": "0.1.15",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "A Ghost theme inspired by the Thred reference layout.",
|
"description": "A Ghost theme inspired by the Thred reference layout.",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
Reference in New Issue
Block a user