SanYeCao-blog/src/components/Header.astro

95 lines
2 KiB
Text
Raw Normal View History

2026-03-24 18:01:45 +00:00
---
import Navigation from "./Navigation.astro";
import ThemeIcon from "./ThemeIcon.astro";
2026-03-24 22:28:23 +00:00
import { getLangFromUrl, getTranslations } from "@/i18n";
const lang = getLangFromUrl(Astro.url);
const t = getTranslations(lang);
2026-03-24 18:01:45 +00:00
---
2026-03-24 22:28:23 +00:00
<header class="site-header">
<div class="theme-icon-wrap">
<ThemeIcon />
</div>
<nav class="header-nav">
<div class="banner">
<a
href={`/${lang}/`}
data-astro-reload
class="banner-link"
aria-label="banner"
>
<span class="banner-logo"></span>
</a>
</div>
2026-03-24 18:01:45 +00:00
<Navigation />
</nav>
</header>
<style>
.banner-link {
display: inline-block;
}
.banner-logo {
display: block;
height: 55px; /* 按你的 banner 比例改 */
background-color: #1f2328;
-webkit-mask: url("/images/banner-black.svg") no-repeat left / contain;
mask: url("/images/banner-black.svg") no-repeat left / contain;
}
:global(html.dark .banner-logo) {
background-color: #e6e6e6;
}
.header-nav .banner a {
2026-03-25 15:34:38 +00:00
color: inherit;
text-decoration: none;
2026-03-25 18:51:38 +00:00
display: block;
2026-03-25 15:34:38 +00:00
}
2026-03-24 22:28:23 +00:00
.site-header {
position: relative;
padding-top: 0.5rem;
}
.theme-icon-wrap {
position: absolute;
top: 0;
right: 0;
2026-03-25 18:51:38 +00:00
z-index: 2;
2026-03-24 22:28:23 +00:00
}
.header-nav {
2026-03-24 18:01:45 +00:00
display: flex;
2026-03-24 22:28:23 +00:00
flex-direction: column;
gap: 1rem;
}
.header-nav .banner {
2026-03-24 22:28:23 +00:00
margin: 0;
font-style: italic;
2026-03-25 18:51:38 +00:00
line-height: 1.1;
/* 给右上角 ThemeIcon 留空间 */
max-width: calc(100% - 7rem);
2026-03-25 18:51:38 +00:00
/* 桌面正常,手机自动缩小 */
font-size: clamp(1.6rem, 6vw, 2.5rem);
}
@media (max-width: 768px) {
.site-header {
padding-top: 0.25rem;
}
.header-nav h1 {
max-width: calc(100% - 3.5rem);
font-size: clamp(1.25rem, 7vw, 2rem);
}
2026-03-24 18:01:45 +00:00
}
</style>