All checks were successful
deploy to production / deploy (push) Successful in 1m22s
128 lines
3.0 KiB
Svelte
128 lines
3.0 KiB
Svelte
<script lang="ts">
|
|
import { onMount } from "svelte"
|
|
import DesktopHeader from "./desktop.svelte"
|
|
import MobileHeader from "./mobile.svelte"
|
|
|
|
let background: boolean
|
|
let isHomePage: boolean
|
|
let scrolled: boolean = false
|
|
|
|
// Initial background state
|
|
function updateBackground() {
|
|
background = !isHomePage || scrolled
|
|
}
|
|
|
|
// Update isHomePage based on current path
|
|
function checkHomePage() {
|
|
isHomePage = window.location.pathname === "/"
|
|
updateBackground()
|
|
}
|
|
|
|
// Scroll event listener to check if scrolled 100vh
|
|
function checkScroll() {
|
|
const scrollHeight = window.innerHeight // 100vh in pixels
|
|
scrolled = window.scrollY >= scrollHeight
|
|
checkHomePage()
|
|
}
|
|
|
|
onMount(() => {
|
|
// Initial check
|
|
checkHomePage()
|
|
checkScroll()
|
|
|
|
// Listen for changes
|
|
window.addEventListener("scroll", checkScroll)
|
|
window.addEventListener("popstate", checkHomePage)
|
|
|
|
return () => {
|
|
// Cleanup event listeners
|
|
window.removeEventListener("scroll", checkScroll)
|
|
window.removeEventListener("popstate", checkHomePage)
|
|
}
|
|
})
|
|
let show = false
|
|
</script>
|
|
|
|
<main class="headercontainer">
|
|
<nav class="trans" class:bg="{background || show}">
|
|
<div class="mobile-header">
|
|
<MobileHeader bind:show="{show}" />
|
|
</div>
|
|
<div class="desktop-header">
|
|
<DesktopHeader />
|
|
</div>
|
|
</nav>
|
|
</main>
|
|
<div class="placeholder"></div>
|
|
|
|
<style global lang="less">
|
|
@import "../../assets/css/main.less";
|
|
@import "../../assets/css/variables.less";
|
|
.trans {
|
|
background-color: transparent;
|
|
transition: background-color 0.5s ease-in-out;
|
|
}
|
|
.bg {
|
|
background-color: var(--background-color);
|
|
}
|
|
|
|
@desktop: ~"only screen and (min-width: 1440px)";
|
|
.HP {
|
|
h2 {
|
|
font-size: 2.1rem !important;
|
|
@media @tablet {
|
|
font-size: 3.2rem !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
.ignore {
|
|
display: none !important;
|
|
visibility: hidden;
|
|
}
|
|
nav {
|
|
position: relative;
|
|
height: 100%;
|
|
width: 100%;
|
|
}
|
|
.placeholder {
|
|
height: 105px;
|
|
}
|
|
.headercontainer {
|
|
display: flex;
|
|
position: fixed;
|
|
z-index: 5500;
|
|
top: 0px;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
color: var(--normal-font-color);
|
|
height: 105px;
|
|
}
|
|
@media @desktop {
|
|
.headercontainer,
|
|
.placeholder {
|
|
height: 120px;
|
|
}
|
|
nav {
|
|
position: initial;
|
|
}
|
|
}
|
|
|
|
@media @mobile {
|
|
.desktop-header {
|
|
display: none;
|
|
}
|
|
.mobile-header {
|
|
display: inherit;
|
|
}
|
|
}
|
|
@media @desktop {
|
|
.mobile-header {
|
|
display: none;
|
|
}
|
|
.desktop-header {
|
|
display: inherit;
|
|
}
|
|
}
|
|
</style>
|