Merge branch 'dev' into artikel/matrei

This commit is contained in:
ebby 2026-08-23 06:29:18 +02:00
commit e7e718d79f
11 changed files with 119 additions and 25 deletions

View file

@ -40,4 +40,6 @@ All commands are run from the root of the project, from a terminal:
## Bilder für Webuseage convertieren ## Bilder für Webuseage convertieren
`magick convert input_file -resize 50% output_file`
`magick mogrify -format webp -quality 80 *.jpg` `magick mogrify -format webp -quality 80 *.jpg`

BIN
blog/public/BWM_512.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
blog/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,23 @@
const backdrop = document.querySelector("#image-backdrop");
const preview = document.querySelector("#image-preview");
if (backdrop instanceof HTMLElement && preview instanceof HTMLImageElement) {
document.addEventListener("click", (event) => {
if (!(event.target instanceof Element)) return;
if (!backdrop.hidden && backdrop.contains(event.target)) {
backdrop.hidden = true;
document.body.style.overflow = "";
return;
}
const image = event.target.closest("article img");
if (!(image instanceof HTMLImageElement)) return;
preview.src = image.currentSrc || image.src;
preview.alt = image.alt;
backdrop.hidden = false;
document.body.style.overflow = "hidden";
});
}

View file

@ -1,16 +1,18 @@
---
import Logo from "./Logo.astro";
---
<header> <header>
<span>Blauwasser Mausis</span> <Logo />
<span class="vertical-line"></span>
<nav> <nav>
<div class="nav-left"> <div class="nav-left">
<span id="side-nav-header">Blauwasser Mausis</span> <Logo />
<a class="nav-link" href="/">Startseite</a> <a href="/">Startseite</a>
<!-- <a class="nav-link" href="/about">Über uns</a> -->
</div> </div>
<div class="nav-right"> <div class="nav-right">
<a class="nav-link" href="/impressum" style="#789">Impressum</a> <a href="/impressum" style="#789">Impressum</a>
<a class="nav-link" href="/privacy-policy" style="#789">Datenschutz</a> <a href="/privacy-policy" style="#789">Datenschutz</a>
</div> </div>
</nav> </nav>
@ -41,11 +43,10 @@
nav { nav {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: flex-end;
flex: 1; flex: 1;
} }
.nav-left,
.nav-right { .nav-right {
display: flex; display: flex;
align-items: center; align-items: center;
@ -60,11 +61,15 @@
#menu-toggle, #menu-toggle,
.menu-icon, .menu-icon,
.menu-backdrop, .menu-backdrop,
#side-nav-header { .nav-left {
display: none; display: none;
} }
@media only screen and (max-width: 800px) { @media only screen and (max-width: 800px) {
* {
font-size: 1.2rem;
}
.menu-icon { .menu-icon {
display: block; display: block;
position: relative; position: relative;
@ -79,9 +84,8 @@
pointer-events: none; pointer-events: none;
} }
#side-nav-header { .mobile-nav {
display: block; display: block;
padding-bottom: 32px;
} }
nav { nav {
@ -89,29 +93,35 @@
top: 0; top: 0;
left: 0; left: 0;
width: 66vw; width: 66vw;
min-width: 320px;
height: 100vh; height: 100vh;
padding: 42px 24px 24px; padding: 32px 0 0 32px;
background: #ddd; background: var(--primary-color);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: flex-start;
justify-content: flex-start; justify-content: flex-start;
gap: 30px;
transform: translateX(-100%); transform: translateX(-100%);
transition: transform 0.3s ease; transition: transform 0.3s ease;
z-index: 3; z-index: 10;
a {
color: whitesmoke;
}
} }
.nav-left, .nav-left,
.nav-right { .nav-right {
display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: flex-start;
} }
.nav-right > a { .nav-left {
font-size: 1rem; gap: 32px;
margin-bottom: 64px;
} }
nav:has(~ #menu-toggle:checked) { nav:has(~ #menu-toggle:checked) {
@ -132,7 +142,7 @@
transition: transition:
opacity 0.3s ease, opacity 0.3s ease,
visibility 0.3s ease; visibility 0.3s ease;
z-index: 2; z-index: 9;
} }
#menu-toggle:checked ~ .menu-backdrop { #menu-toggle:checked ~ .menu-backdrop {

View file

@ -0,0 +1,20 @@
<a id="logo-container" class="no-link-link" href="/">
<img id="logo-img" src="/BWM_512.webp" />
<span id="logo-text">Blauwasser Mausis</span>
</a>
<style>
#logo-container {
display: flex;
align-items: center;
gap: 16px;
}
#logo-img {
height: 64px;
}
#logo-text {
font-weight: bold;
}
</style>

View file

@ -37,8 +37,14 @@ const localeDate = formatLocalizedDateString(frontmatter.date);
dienen allein dem Zweck der Information. dienen allein dem Zweck der Information.
</p> </p>
</article> </article>
<div id="image-backdrop" hidden>
<img id="image-preview" class="rounded" src="" alt="" />
</div>
</Main> </Main>
<script is:inline src="/scripts/image-modal.js"></script>
<style> <style>
article { article {
max-width: 900px; max-width: 900px;
@ -48,10 +54,11 @@ const localeDate = formatLocalizedDateString(frontmatter.date);
.markdown-content { .markdown-content {
font-size: 1.5rem; font-size: 1.5rem;
line-height: 1.6; line-height: 1.6;
}
.markdown-content img {
width: 100%; img {
cursor: zoom-in;
}
} }
#titleImg { #titleImg {
@ -72,6 +79,32 @@ const localeDate = formatLocalizedDateString(frontmatter.date);
font-size: smaller; font-size: smaller;
} }
#image-backdrop {
position: fixed;
inset: 0;
z-index: 1000;
display: grid;
place-items: center;
padding: 24px;
background: rgba(0, 0, 0, 0.8);
cursor: pointer;
}
#image-backdrop[hidden] {
display: none;
}
#image-preview {
max-width: 90vw;
max-height: 90vh;
width: auto;
height: auto;
object-fit: contain;
cursor: pointer;
}
@media only screen and (max-width: 800px) { @media only screen and (max-width: 800px) {
.markdown-content { .markdown-content {
font-size: 1.25rem; font-size: 1.25rem;

View file

@ -6,7 +6,7 @@ import "../styles/global.css";
<html lang="de"> <html lang="de">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<link rel="icon" type="image/png" href="/favicon.png" /> <link rel="icon" type="image/x-icon" href="/favicon.ico" />
<link <link
rel="alternate" rel="alternate"
type="application/rss+xml" type="application/rss+xml"

View file

@ -35,10 +35,12 @@ Einschlafen klappt dann aber doch irgendwie. Wenn man hier eins lernt, dann auch
<div style="display: flex; flex-direction: row; gap: 2%;"> <div style="display: flex; flex-direction: row; gap: 2%;">
<img src="/blog_img/ostseeurlaub/molly_1.webp" <img src="/blog_img/ostseeurlaub/molly_1.webp"
alt="Chiara und Tim stehen vor der Dampflok Molly." alt="Chiara und Tim stehen vor der Dampflok Molly."
class="rounded"
style="max-width: 49%; height: auto;" style="max-width: 49%; height: auto;"
loading="lazy" /> loading="lazy" />
<img src="/blog_img/ostseeurlaub/molly_2.webp" <img src="/blog_img/ostseeurlaub/molly_2.webp"
alt="Chiara und Tim stehen neben der Dampflok Molly." alt="Chiara und Tim stehen neben der Dampflok Molly."
class="rounded"
style="max-width: 49%; height: auto;" style="max-width: 49%; height: auto;"
loading="lazy" /> loading="lazy" />
</div> </div>
@ -61,7 +63,8 @@ Hier kommen wir schon zu einem meiner Highlights der Woche: Chiara, die das erst
<img src="/blog_img/ostseeurlaub/karls.webp" <img src="/blog_img/ostseeurlaub/karls.webp"
alt="Chiara und Tim stehen vor dem Eingangsschild zum Karls Erlebnisdorf in Rövershagen." alt="Chiara und Tim stehen vor dem Eingangsschild zum Karls Erlebnisdorf in Rövershagen."
style="max-width: 100%; height: auto;" style="max-width: 100%; height: auto;"
loading="lazy" /> loading="lazy"
class="rounded"/>
Nächster Halt ist <a href="https://karls.de/" target="_blank">**Karls Erlebnis-Dorf**</a> in Rövershagen. Eine meiner jüngeren Kindheitserinnerungen. Nächster Halt ist <a href="https://karls.de/" target="_blank">**Karls Erlebnis-Dorf**</a> in Rövershagen. Eine meiner jüngeren Kindheitserinnerungen.
Hier muss ich immer an Tom denken, einen lieben Kollegen. Er hat in seiner Jugend im Karls Erlebnis-Dorf bei Berlin in der Pfannkuchen-Schmiede gearbeitet. Liebe Grüße!<br> Hier muss ich immer an Tom denken, einen lieben Kollegen. Er hat in seiner Jugend im Karls Erlebnis-Dorf bei Berlin in der Pfannkuchen-Schmiede gearbeitet. Liebe Grüße!<br>
@ -73,6 +76,7 @@ Mit dem Tagesticket können wir jegliche Attraktion fahren. Das machen wir auch!
<img src="/blog_img/ostseeurlaub/karls_mais.webp" <img src="/blog_img/ostseeurlaub/karls_mais.webp"
alt="Chiara sizt in einem riesigen Maisbad." alt="Chiara sizt in einem riesigen Maisbad."
class="rounded"
style="max-width: 100%; height: auto;" style="max-width: 100%; height: auto;"
loading="lazy" /> loading="lazy" />
Chiara wird im Mais verbuddelt. Chiara wird im Mais verbuddelt.
@ -82,10 +86,12 @@ Besonders freue ich mich auf die Eiswelt. In einer großen Halle stellen Bildhau
<div style="display: flex; flex-direction: row; gap: 2%;"> <div style="display: flex; flex-direction: row; gap: 2%;">
<img src="/blog_img/ostseeurlaub/karls_eis_thron.webp" <img src="/blog_img/ostseeurlaub/karls_eis_thron.webp"
alt="Chiara und Tim auf einem Thron aus Eis." alt="Chiara und Tim auf einem Thron aus Eis."
class="rounded"
style="max-width: 49%; height: auto;" style="max-width: 49%; height: auto;"
loading="lazy" /> loading="lazy" />
<img src="/blog_img/ostseeurlaub/karls_eis_aida.webp" <img src="/blog_img/ostseeurlaub/karls_eis_aida.webp"
alt="Chiara und Tim stehen auf einem kleinen AIDA Bug aus Eis und spielen diese eine Szene aus Titanic nach." alt="Chiara und Tim stehen auf einem kleinen AIDA Bug aus Eis und spielen diese eine Szene aus Titanic nach."
class="rounded"
style="max-width: 49%; height: auto;" style="max-width: 49%; height: auto;"
loading="lazy" /> loading="lazy" />
</div> </div>
@ -117,6 +123,7 @@ Spoilern werde ich natürlich nicht. Nur soviel: **So'n großer Feuerball, Junge
<img src="/blog_img/ostseeurlaub/stoertebeker.webp" <img src="/blog_img/ostseeurlaub/stoertebeker.webp"
alt="Chiara sizt in einem riesigen Maisbad." alt="Chiara sizt in einem riesigen Maisbad."
style="max-width: 100%; height: auto;" style="max-width: 100%; height: auto;"
class="rounded"
loading="lazy" /> loading="lazy" />
Nach der Vorstellung auf dem Weg zum Auto. Nach der Vorstellung auf dem Weg zum Auto.
</br> </br>

View file

@ -23,7 +23,6 @@ body {
} }
.nav-link { .nav-link {
font-size: 1.2rem;
text-decoration: none; text-decoration: none;
color: black; color: black;
} }