AMPERION_Webpage/layouts/index.html

268 lines
9 KiB
HTML
Raw Normal View History

2025-06-06 18:12:46 +02:00
{{ define "main" }}
2025-07-24 00:06:23 +02:00
<header id="mainHeader">
2025-06-06 18:12:46 +02:00
{{ with .Params.banner }}
2025-07-30 00:35:15 +02:00
{{ if .enable }}
<!-- HERO / SLIDER -->
2025-07-31 01:33:44 +02:00
<section id="hero" class="slider {{ if .bg_overlay }}overly{{ end }} gif-background"
style="min-height: 100vh; display: flex; align-items: center; justify-content: center; position: relative;">
2025-07-30 00:35:15 +02:00
<div class="my-container" style="position: relative; z-index: 2;">
<!-- *Logo-Zeile mit zwei Frames* -->
<div class="logo-container">
<div class="frame1">
<img src="{{ .logo_image1 | relURL }}" alt="Logo Frame 1" class="banner-logo">
</div>
<div class="frame2">
<img src="{{ .logo_image2 | relURL }}" alt="Logo Frame 2" class="banner-logo">
</div>
</div>
2025-06-06 18:12:46 +02:00
2025-07-30 00:35:15 +02:00
<!-- *Haupttitel + Button* -->
<div class="hero-section" style="margin-top: 10rem;">
2025-07-30 00:35:15 +02:00
{{ with .title }}
<h1 class="hero-title fade-in-title">{{ . | markdownify }}</h1>
2025-07-30 00:35:15 +02:00
{{ end }}
{{ with .button }}
{{ if .enable }}
<div class="scrolldown" onclick="document.getElementById('service').scrollIntoView({ behavior: 'smooth' });"
style="--color: rgb(0, 0, 0); cursor: pointer;">
<div class="chevrons">
<div class='chevrondown'></div>
<div class='chevrondown'></div>
2025-06-06 18:12:46 +02:00
</div>
</div>
2025-07-30 00:35:15 +02:00
{{ end }}
{{ end }}
</div>
</div>
</section>
{{ end }}
2025-06-06 18:12:46 +02:00
{{ end }}
</header>
2025-07-30 00:35:15 +02:00
<!-- Scroll/Hide Header -->
2025-06-06 18:12:46 +02:00
<script>
2025-07-31 01:33:44 +02:00
document.addEventListener('DOMContentLoaded', function () {
const hero = document.getElementById('hero');
const targetSection = document.getElementById('leistungen');
const scrolldown = document.querySelector('.scrolldown');
const header = document.getElementById('mainHeader');
let lastScroll = window.scrollY;
let autoScrollDone = false;
let isAutoScrolling = false;
2025-07-31 01:33:44 +02:00
const offset = 120;
function scrollToTarget() {
if (!targetSection || isAutoScrolling) return;
isAutoScrolling = true;
2025-07-31 01:33:44 +02:00
const y = targetSection.getBoundingClientRect().top + window.pageYOffset - offset;
2025-07-31 01:33:44 +02:00
window.scrollTo({ top: y, behavior: 'smooth' });
// Warte bis Scroll-Animation fertig ist
setTimeout(() => {
isAutoScrolling = false;
autoScrollDone = true;
}, 1000);
2025-07-31 01:33:44 +02:00
}
// Klick auf Chevron → scrollen
scrolldown?.addEventListener('click', (e) => {
e.preventDefault();
e.stopPropagation();
2025-07-31 01:33:44 +02:00
scrollToTarget();
});
2025-07-24 00:06:23 +02:00
2025-07-31 01:33:44 +02:00
// Scrollrad nach unten → am Ende von Hero → scrollen
let wheelTimeout;
2025-07-31 01:33:44 +02:00
window.addEventListener('wheel', function (e) {
// Verhindere Auto-Scroll während manueller Scroll oder wenn bereits ausgeführt
if (autoScrollDone || isAutoScrolling || e.deltaY <= 0 || !hero || !targetSection) return;
// Debounce wheel events
clearTimeout(wheelTimeout);
wheelTimeout = setTimeout(() => {
const heroBottom = hero.getBoundingClientRect().bottom;
const threshold = 50;
// Nur wenn wir wirklich am Ende der Hero-Section sind
if (heroBottom <= window.innerHeight + threshold && heroBottom > 0) {
scrollToTarget();
}
}, 50);
2025-07-31 01:33:44 +02:00
}, { passive: true });
// Scroll-Verhalten (Chevron + Header + Reset)
let scrollTimeout;
2025-07-31 01:33:44 +02:00
window.addEventListener('scroll', function () {
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(() => {
// Chevron ausblenden
if (window.scrollY > 100) {
scrolldown?.classList.add('hide');
} else {
scrolldown?.classList.remove('hide');
}
// Header verstecken beim Runterscrollen
const currentScroll = window.scrollY;
if (!isAutoScrolling) {
header.style.top = (currentScroll > lastScroll && currentScroll > 100) ? '-100vh' : '0';
if (currentScroll === 0) header.style.top = '0';
lastScroll = currentScroll;
}
// Reset der Auto-Scroll-Sperre nur wenn wir wieder komplett im Hero sind
const heroTop = hero.getBoundingClientRect().top;
const heroBottom = hero.getBoundingClientRect().bottom;
// Nur resetten wenn Hero-Section vollständig sichtbar ist
if (heroTop >= -10 && heroBottom > window.innerHeight * 0.8) {
autoScrollDone = false;
}
}, 10);
});
// Reset beim Seitenwechsel oder Refresh
window.addEventListener('beforeunload', () => {
window.scrollTo(0, 0);
2025-07-24 00:06:23 +02:00
});
2025-07-31 01:33:44 +02:00
});
2025-07-24 00:06:23 +02:00
</script>
2025-07-31 01:33:44 +02:00
<!-- Leistungen -->
<section id="leistungen" class="section">
{{ partial "section-grid.html" (dict "page" "/service" "type" "zoom") }}
2025-07-30 00:35:15 +02:00
</section>
2025-07-23 16:46:21 +02:00
2025-07-31 01:33:44 +02:00
<!-- Fokusthemen -->
<section id="fokusthemen" class="section">
{{ partial "section-grid.html" (dict "page" "/focustopic" "type" "zoom") }}
2025-06-06 18:12:46 +02:00
</section>
2025-07-23 16:46:21 +02:00
2025-07-31 01:33:44 +02:00
<!-- DARUM AMPERION kompakt & detailliert -->
<section class="whyamperion section" style="background-color:#f3f3f3; margin-top: 28rem; padding: 3rem 0;">
2025-07-31 13:48:18 +02:00
<div class="container my-container">
2025-07-23 16:46:21 +02:00
2025-07-31 01:33:44 +02:00
<!-- Titelblock -->
2025-07-30 00:35:15 +02:00
<div class="row">
2025-07-31 01:33:44 +02:00
<div class="text-center">
2025-07-30 00:35:15 +02:00
<h1>Darum AMPERION</h1>
2025-07-31 01:33:44 +02:00
<h2><em>Kompetenz, auf die Sie bauen können von der Idee bis zur Inbetriebnahme.</em></h2>
2025-07-30 00:35:15 +02:00
</div>
2025-07-23 16:46:21 +02:00
</div>
2025-06-06 18:12:46 +02:00
2025-07-30 00:35:15 +02:00
<!-- Karten -->
2025-07-31 01:33:44 +02:00
<div class="why-grid mt-5">
<article class="service-card text-center">
<img src="icons/file-badge.svg" alt="Technische Planungskompetenz Icon" class="service-icon mb-3">
<h3 class="service-card-title">Technische Planungskompetenz</h3>
<p class="service-card-description">
<strong>Langjährige Erfahrung mit komplexer Energieplanung </strong> normgerecht, effizient &amp; zukunftssicher.
</p>
</article>
<article class="service-card text-center">
<img src="icons/plug-zap.svg" alt="Intelligente Energiesysteme Icon" class="service-icon mb-3">
<h3 class="service-card-title">Intelligente Energiesysteme</h3>
<p class="service-card-description">
<strong>Von PV bis Speicher und Lastmanagement </strong> für maximale Eigenversorgung und Netzverträglichkeit.
</p>
</article>
<article class="service-card text-center">
<img src="icons/headset.svg" alt="Persönliche Betreuung Icon" class="service-icon mb-3">
<h3 class="service-card-title">Persönliche Betreuung</h3>
<p class="service-card-description">
<strong>Kurze Wege, schnelle Antworten </strong> direkte Ansprechpartner, auch nach Projektabschluss.
</p>
</article>
<article class="service-card text-center">
<img src="icons/hard-hat.svg" alt="Reibungslose Projektabwicklung Icon" class="service-icon mb-3">
<h3 class="service-card-title">Reibungslose Projektabwicklung</h3>
<p class="service-card-description">
<strong>Wir übernehmen die technische Koordination </strong> von Einreichung bis Ausschreibung.
</p>
</article>
<article class="service-card text-center">
<img src="icons/network.svg" alt="Vernetzte Energiezukunft Icon" class="service-icon mb-3">
<h3 class="service-card-title">Vernetzte Energiezukunft</h3>
<p class="service-card-description">
<strong>Wir denken Energie ganzheitlich </strong> modular, digital und wachstumsfähig geplant.
</p>
</article>
<article class="service-card text-center">
<img src="icons/circuit-board.svg" alt="Präzise Systemplanung Icon" class="service-icon mb-3">
<h3 class="service-card-title">Präzise Systemplanung</h3>
<p class="service-card-description">
<strong>Alle Komponenten exakt abgestimmt </strong> wirtschaftlich und regelkonform.
</p>
</article>
</div>
2025-07-23 16:46:21 +02:00
2025-07-30 00:35:15 +02:00
</div>
</section>
2025-07-23 16:46:21 +02:00
2025-07-31 01:33:44 +02:00
<!-- ÜBER AMPERION -->
2025-06-06 18:12:46 +02:00
{{ with .Params.about }}
{{ if .enable }}
<section id="about" class="about section" style="margin-top: 20rem; margin-bottom: 20rem; padding: 3rem 0;">
2025-07-31 13:48:18 +02:00
<div class="container">
2025-06-06 18:12:46 +02:00
<div class="row">
<div class="col-12 text-center">
2025-07-31 01:33:44 +02:00
<h1>Über AMPERION</h1>
{{ with .description }}<h2>{{ . | markdownify }}</h2>{{ end }}
2025-06-06 18:12:46 +02:00
</div>
</div>
2025-07-31 01:33:44 +02:00
<div class="row mt-4">
2025-06-06 18:12:46 +02:00
<div class="col-md-9 col-sm-12">
2025-07-24 00:06:23 +02:00
<div class="text-left">
2025-07-30 00:35:15 +02:00
{{ with .content }}{{ . | markdownify }}{{ end }}
</div>
2025-07-31 01:33:44 +02:00
<div class="hover-link mt-3">
2025-07-30 00:35:15 +02:00
{{ with .link_text }}<a href="{{ "/about/" | relURL }}">{{ . }}</a>{{ end }}
2025-06-06 18:12:46 +02:00
</div>
</div>
<div class="col-md-3 col-sm-12">
2025-07-31 01:33:44 +02:00
<div class="block text-center">
<img src="{{ .image | relURL }}" class="custom-image" alt="Über AMPERION Bild">
2025-06-06 18:12:46 +02:00
</div>
</div>
</div>
</div>
</section>
{{ end }}
{{ end }}
2025-07-31 01:33:44 +02:00
2025-07-30 00:35:15 +02:00
<!-- CALL TO ACTION -->
2025-06-06 18:12:46 +02:00
{{ if .Params.cta.enable }}
{{ partial "cta.html" . }}
{{ end }}
2025-07-30 00:35:15 +02:00
<!-- FACTS -->
2025-06-06 18:12:46 +02:00
{{ with .Params.facts }}
{{ if .enable }}
<section class="facts">
<div class="container">
<div class="row">
{{ range .fact_item }}
<div class="col-md-6">
<div class="fact-item text-center">
<img src="{{ .image | relURL }}" alt="{{ .name }}" class="fact-image">
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
{{ end }}
{{ end }}