diff --git a/assets/css/src/footer.css b/assets/css/src/footer.css index d2e897b..edadd31 100644 --- a/assets/css/src/footer.css +++ b/assets/css/src/footer.css @@ -23,6 +23,6 @@ @media screen and (min-width: 640px) { #main-footer { - padding: calc(var(--unit--horizontal) / 2) var(--unit--horizontal); + display: none; } } diff --git a/assets/css/src/generic.css b/assets/css/src/generic.css index d248d0e..e7452aa 100644 --- a/assets/css/src/generic.css +++ b/assets/css/src/generic.css @@ -79,21 +79,21 @@ body { } /* ================= BUTTONS ================= */ -.toggle-btn.left::after { +.toggle-btn--left::after { margin-left: var(--unit--horizontal); } -.toggle-btn.left::after { +.toggle-btn--left::after { content: "+"; } -.toggle-btn.left.open::after { +.toggle-btn--left.open::after { content: "-"; } -.toggle-btn.right::before { +.toggle-btn--right::before { margin-right: var(--unit--horizontal); } -.toggle-btn.right::before { +.toggle-btn--right::before { content: "+"; } -.toggle-btn.right.open::before { +.toggle-btn--right.open::before { content: "-"; } diff --git a/assets/css/src/header.css b/assets/css/src/header.css index 11cf244..039ab57 100644 --- a/assets/css/src/header.css +++ b/assets/css/src/header.css @@ -5,13 +5,19 @@ left: 0; box-sizing: border-box; width: 100vw; - height: calc(var(--unit--vertical) * 4); + height: calc(var(--unit--vertical) * 4.5); padding: var(--unit--vertical) var(--unit--horizontal); padding-bottom: 0; transition: height 0.2s ease-in-out; } #logo { position: relative; + height: 100%; +} + +#logo__link { + display: block; + height: 100%; } #main-header.open #actuel { @@ -24,13 +30,13 @@ } #logo #inactuel { position: absolute; + bottom: 0; z-index: 0; color: var(--color-secondary); - bottom: -48%; transition: bottom 0.2s ease-in-out; } -#main-header.minimized #logo #inactuel { - bottom: 0%; +#main-header.minimized { + height: 5.6rem; } body { @@ -63,7 +69,7 @@ body[data-template="home"] { #entry-btns { position: sticky; position: -webkit-sticky; - top: calc(var(--unit--vertical) * 3); + top: calc(var(--unit--vertical) * 4); height: var(--entry-btns-height); display: flex; justify-content: space-between; @@ -143,11 +149,12 @@ button.toggle.right::before { font-size: 11vw; } - #main-header.minimized { - height: calc(var(--unit--vertical) * 4.3); - } - .page-cover { + height: 100vh; padding: calc(10 * var(--unit--vertical)) 0; } + + #entry-btns { + display: none; + } } diff --git a/assets/css/src/html.css b/assets/css/src/html.css index 6ff64e0..877882a 100644 --- a/assets/css/src/html.css +++ b/assets/css/src/html.css @@ -61,7 +61,11 @@ html { } @media screen and (min-width: 640px) { + :root { + --padding-body: calc(12 * var(--unit--horizontal)); + } body { - padding: 0 calc(6 * var(--unit--horizontal)); + padding-left: var(--padding-body); + max-width: calc(17 * var(--unit--horizontal)); } } diff --git a/assets/css/src/nav.css b/assets/css/src/nav.css index 0adb0f3..c9e3aad 100644 --- a/assets/css/src/nav.css +++ b/assets/css/src/nav.css @@ -1,4 +1,7 @@ /* ================= PANELS ================= */ +#desktop-nav { + display: none; +} .panel { position: fixed; width: 100%; @@ -8,7 +11,6 @@ outline: 1px solid #fff; transition: all 0.5s var(--curve-sine); z-index: 2; - padding: 0 var(--unit--horizontal); padding-top: calc(var(--unit--vertical) * 5); box-sizing: border-box; @@ -16,6 +18,11 @@ flex-direction: column; } +.search, +.panel__items { + padding: 0 var(--unit--horizontal); +} + .panel--left { left: calc(-100vw - 1px); } @@ -36,6 +43,7 @@ background-color: #000; z-index: 1; top: 0; + box-sizing: border-box; } .search__input { all: unset; @@ -59,8 +67,8 @@ height: 1.2rem; padding: 0.5rem; bottom: 0; - right: calc(var(--unit--horizontal) / 6); - transform: translateX(0.5rem); + right: var(--unit--horizontal); + transform: translateX(0.5rem) translateY(-0.2rem); } button.search__icon { cursor: pointer; @@ -76,12 +84,11 @@ button.search__icon { .panel-close { justify-content: center; width: calc(100% - 2 * var(--unit--horizontal)); - bottom: 0; outline: none; border-top: 1px solid #fff; font-size: var(--font-size-m); background-color: #000; - padding: calc(var(--unit--vertical) / 2) 0; + padding: calc(var(--unit--vertical) / 2) var(--unit--horizontal); margin-bottom: env(safe-area-inset-bottom); } @@ -119,3 +126,38 @@ button.search__icon { .text { margin-bottom: var(--unit--vertical); } + +@media screen and (min-width: 640px) { + #desktop-nav { + display: block; + position: fixed; + box-sizing: border-box; + z-index: 3; + top: 0; + left: 0; + width: var(--padding-body); + height: 100vh; + padding: var(--unit--vertical) var(--unit--horizontal); + } + #desktop-nav .empty { + height: calc(3 * var(--unit--vertical)); + } + .panel { + z-index: 4; + width: var(--padding-body); + padding-top: var(--unit--vertical); + } + + .panel-close { + display: none; + } + + .panel--right { + right: auto; + left: calc(-100vw - 1px); + } + + .panel--right.open { + left: 0; + } +} diff --git a/assets/css/src/texts.css b/assets/css/src/texts.css index ef2274c..8b79b96 100644 --- a/assets/css/src/texts.css +++ b/assets/css/src/texts.css @@ -20,7 +20,6 @@ #logo * { font-size: 25vw; line-height: 4rem; - transform: translate(-2px, -13px); font-weight: var(--font-weight-extra-bold); } diff --git a/assets/css/src/variables.css b/assets/css/src/variables.css deleted file mode 100644 index b8230ec..0000000 --- a/assets/css/src/variables.css +++ /dev/null @@ -1,53 +0,0 @@ -:root { - --color-background: #000; - --color-primary: #ffffff; - --color-primary--transparent: rgba(255, 255, 255, 0.86); - --color-secondary: rgb(120, 171, 150, 0.86); - --color-secondary--light: rgb(119, 177, 157, 0.2); - --color-secondary--x-light: rgb(119, 177, 157, 0.1); - - --unit--horizontal: 5vw; - --unit--vertical: 1.7rem; - --unit--vertical-relative: calc( - var(--unit--vertical) * var(--window-height-factor) - ); - - --font-size-s: 0.8rem; - --font-size-sm: calc(var(--font-size-s) * 1); - --font-size-m: calc(var(--font-size-s) * 1.5); - --font-size-l: calc(var(--font-size-m) * 1.5); - --font-size-xl: calc(var(--font-size-l) * 1.5); - --font-size-xxl: calc(var(--font-size-xl) * 1.5); - - --font-weight-light: 200; - --font-weight-bold: 400; - --font-weight-extra-bold: 550; - - --opacity-light: 0.6; - - --curve-sine: cubic-bezier(0.445, 0.05, 0.55, 0.95); -} - -@media screen and (min-width: 640px) { - :root { - --color-background: #000; - --color-primary: #ffffff; - --color-primary--transparent: rgba(255, 255, 255, 0.86); - --color-secondary: rgb(120, 171, 150, 0.86); - --color-secondary--light: rgb(119, 177, 157, 0.25); - --color-secondary--x-light: rgb(119, 177, 157, 0.15); - - --unit--horizontal: 5vw; - --unit--vertical: 1.7rem; - - --font-size-s: 0.9rem; - --font-size-m: calc(var(--font-size-s) * 1.5); - --font-size-l: calc(var(--font-size-m) * 1.5); - --font-size-xl: calc(var(--font-size-l) * 1.5); - --font-size-xxl: calc(var(--font-size-xl) * 1.5); - - --font-weight-light: 200; - --font-weight-bold: 400; - --font-weight-extra-bold: 550; - } -} diff --git a/assets/css/style.css b/assets/css/style.css index a758cf0..afa4a01 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -47,7 +47,7 @@ --color-secondary--light: rgb(119, 177, 157, 0.25); --color-secondary--x-light: rgb(119, 177, 157, 0.15); - --unit--horizontal: 5vw; + --unit--horizontal: 2.5vw; --unit--vertical: 1.7rem; --font-size-s: 0.9rem; diff --git a/assets/js/script.js b/assets/js/script.js index 3485639..284ae0b 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -22,36 +22,6 @@ function throttle(callback, limit) { }; } -function toggleTab(data, tab) { - if (data.activeTab === tab) { - window.scrollTo({ - top: 0, - behavior: "smooth", - }); - setTimeout(() => { - data.isOpen = false; - data.activeTab = ""; - }, 500); - } else { - data.activeTab = tab; - data.isOpen = true; - scrollToElem(".active-tab"); - } -} - -function scrollToElem(selector) { - document.querySelector(".active-tab").scrollTop = 0; - setTimeout(() => { - const yOffset = -7 * verticalUnit; - const elem = document.querySelector(selector); - const top = elem.getBoundingClientRect().top; - window.scrollTo({ - top: top + window.scrollY + yOffset, - behavior: "smooth", - }); - }, 100); -} - function setWindowHeightFactor() { const windowHeight = window.innerHeight; const min = 650; @@ -111,7 +81,8 @@ function toggleLogoState() { } } -function togglePanel(side) { +function togglePanel(side, event) { + event.stopPropagation(); document.querySelector(`.panel--${side}`).classList.toggle("open"); const isOpen = document .querySelector(`.panel--${side}`) @@ -120,9 +91,11 @@ function togglePanel(side) { const scrollY = window.scrollY || window.pageYOffset; if (isOpen) { - document.querySelector("html").style.overflowY = "hidden"; - document.querySelector("#main-header").classList.remove("minimized"); - } else { + if (window.innerWidth < 640) { + document.querySelector("html").style.overflowY = "hidden"; + document.querySelector("#main-header").classList.remove("minimized"); + } + } else if (window.innerWidth < 640) { document.querySelector("html").style.overflowY = ""; if (scrollY > 10) { document.querySelector("#main-header").classList.add("minimized"); @@ -130,6 +103,12 @@ function togglePanel(side) { } } +function closePanels() { + document.querySelectorAll(".panel").forEach((panel) => { + panel.classList.remove("open"); + }); +} + function fixFootNotes() { const footnotes = document.querySelectorAll('a[href^="#sdfootnote"]'); @@ -163,4 +142,18 @@ document.addEventListener("DOMContentLoaded", () => { setTimeout(() => { enableToggleEntriesVisibility(); }, 100); + + window.addEventListener("click", () => { + closePanels(); + }); + window.addEventListener("keyup", (event) => { + if (event.key === "Escape") { + closePanels(); + } + }); + document.querySelectorAll(".panel").forEach((panel) => { + panel.addEventListener("click", (event) => { + event.stopPropagation(); + }); + }); }); diff --git a/site/config/config.php b/site/config/config.php index d5a8489..97254b1 100644 --- a/site/config/config.php +++ b/site/config/config.php @@ -1,12 +1,12 @@ true, - 'panel' => [ + 'panel' => array( 'menu' => require __DIR__ . '/menu.php', - ], - 'routes' => [ + ), + 'routes' => array( require __DIR__ . '/routes/virtual-author.php', require __DIR__ . '/routes/virtual-category.php', - ] -]; + ), +); diff --git a/site/snippets/cover.php b/site/snippets/cover.php index 7b4661c..792b7d5 100644 --- a/site/snippets/cover.php +++ b/site/snippets/cover.php @@ -16,11 +16,11 @@ $isOpen = isset($isOpen) ? $isOpen : false;
\ No newline at end of file diff --git a/site/snippets/header.php b/site/snippets/header.php index 648743b..e11d996 100644 --- a/site/snippets/header.php +++ b/site/snippets/header.php @@ -7,16 +7,19 @@ $entryTopPos = $entryTopPos ?? 20; <?= $site->title() ?><?= e($page->url() !== $site->url(), '-' . $page->title()) ?> + + +