S-V-Navigation
Vincent Laux 2026-09-29 15:40:29 +02:00
parent 0828e3de7c
commit 45f5b8e9b6
3 changed files with 63 additions and 33 deletions

View File

@ -78,12 +78,13 @@
background: var(--background-panel); background: var(--background-panel);
border: 1px solid rgba(248, 250, 252, 0.08); border: 1px solid rgba(248, 250, 252, 0.08);
border-radius: 14px; border-radius: 14px;
padding: 2rem 1.75rem; padding: 0; /* Entfernt, damit das Bild oben bündig anliegt */
overflow: hidden;
position: relative; position: relative;
} }
.pakete .paket-karte--empfohlen { .pakete .paket-karte--empfohlen {
border-color: var(--accent); border-color: 1px solid rgba(248, 250, 252, 0.08);
box-shadow: 0 0 0 1px var(--accent-soft); box-shadow: 0 0 0 1px var(--accent-soft);
} }
@ -97,13 +98,42 @@
background: var(--accent-soft); background: var(--accent-soft);
color: var(--accent); color: var(--accent);
border: 1px solid var(--accent); border: 1px solid var(--accent);
font-size: 0.75rem; font-size: 0.7rem;
font-weight: 600; font-weight: 600;
letter-spacing: 0.06em; letter-spacing: 0.06em;
text-transform: uppercase; text-transform: uppercase;
padding: 0.35rem 0.9rem; padding: 0.25rem 0.65rem;
border-radius: 999px; border-radius: 999px;
margin: 0 0 1rem; margin: 0; /* Kein Abstand nach unten, da er jetzt im Header neben der Überschrift steht */
line-height: 1;
}
.pakete .paket-karte__image-wrapper {
width: 100%;
height: 180px;
overflow: hidden;
position: relative;
}
.pakete .paket-karte__image {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.pakete .paket-karte__body {
padding: 1.75rem;
display: flex;
flex-direction: column;
flex-grow: 1;
}
.pakete .paket-karte__header {
display: flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 0.5rem;
flex-wrap: wrap;
} }
.pakete .paket-karte__name { .pakete .paket-karte__name {
@ -171,8 +201,8 @@
font-weight: 600; font-weight: 600;
font-size: 0.95rem; font-size: 0.95rem;
color: var(--text-primary); color: var(--text-primary);
background: var(--accent); background: var(--background);
border: none; border: 1px solid rgba(248, 250, 252, 0.08);
border-radius: 8px; border-radius: 8px;
padding: 0.85rem 1rem; padding: 0.85rem 1rem;
cursor: pointer; cursor: pointer;

View File

@ -27,11 +27,11 @@ document.addEventListener("DOMContentLoaded", async () => {
grid.innerHTML = ""; grid.innerHTML = "";
// Mappe Bild-Platzhalter zu den Paketen // Platzhalter-Pfade für die drei generierten Bilder
const bilderMap = { const bilderMap = {
"Starter": "images/paket-starter.jpg", "STARTER": "images/paket-starter.jpg",
"STANDART": "images/paket-standard.jpg", "STANDART": "images/paket-standard.jpg",
"Rundum Sorglos Paket": "images/paket-premium.jpg" "PREMIUM": "images/paket-premium.jpg"
}; };
daten.pakete.forEach(paket => { daten.pakete.forEach(paket => {
@ -42,23 +42,23 @@ document.addEventListener("DOMContentLoaded", async () => {
karte.classList.add("paket-karte--empfohlen"); karte.classList.add("paket-karte--empfohlen");
} }
// --- 1. Bildbereich (Platzhalter) --- // 1. Bild oben (Platzhalter)
const imgContainer = document.createElement("div"); const imgWrapper = document.createElement("div");
imgContainer.classList.add("paket-karte__image-wrapper"); imgWrapper.classList.add("paket-karte__image-wrapper");
const img = document.createElement("img"); const img = document.createElement("img");
img.src = bilderMap[paket.name] || "images/paket-placeholder.jpg"; img.src = bilderMap[paket.name] || "images/paket-placeholder.jpg";
img.alt = `Vorschau ${paket.name}`; img.alt = `Vorschau ${paket.name}`;
img.classList.add("paket-karte__image"); img.classList.add("paket-karte__image");
imgContainer.appendChild(img); imgWrapper.appendChild(img);
karte.appendChild(imgContainer);
// --- Content-Container für sauberes Layout --- karte.appendChild(imgWrapper);
const content = document.createElement("div");
content.classList.add("paket-karte__content");
// --- 2. Header: Paketname + Badge nebeneinander --- // Content-Container für die Texte & Abstände
const body = document.createElement("div");
body.classList.add("paket-karte__body");
// 2. Header: Paketname + Badge nebeneinander
const header = document.createElement("div"); const header = document.createElement("div");
header.classList.add("paket-karte__header"); header.classList.add("paket-karte__header");
@ -74,9 +74,9 @@ document.addEventListener("DOMContentLoaded", async () => {
header.appendChild(badge); header.appendChild(badge);
} }
content.appendChild(header); body.appendChild(header);
// --- 3. Preis --- // 3. Preis
const preis = document.createElement("p"); const preis = document.createElement("p");
preis.classList.add("paket-karte__preis"); preis.classList.add("paket-karte__preis");
@ -90,15 +90,15 @@ document.addEventListener("DOMContentLoaded", async () => {
preis.appendChild(betrag); preis.appendChild(betrag);
preis.appendChild(zeitraum); preis.appendChild(zeitraum);
content.appendChild(preis); body.appendChild(preis);
// --- 4. Beschreibung --- // 4. Beschreibung
const beschreibung = document.createElement("p"); const beschreibung = document.createElement("p");
beschreibung.classList.add("paket-karte__beschreibung"); beschreibung.classList.add("paket-karte__beschreibung");
beschreibung.textContent = paket.beschreibung; beschreibung.textContent = paket.beschreibung;
content.appendChild(beschreibung); body.appendChild(beschreibung);
// --- 5. Leistungsliste --- // 5. Leistungen
const liste = document.createElement("ul"); const liste = document.createElement("ul");
liste.classList.add("paket-karte__leistungen"); liste.classList.add("paket-karte__leistungen");
@ -108,9 +108,9 @@ document.addEventListener("DOMContentLoaded", async () => {
liste.appendChild(punkt); liste.appendChild(punkt);
}); });
content.appendChild(liste); body.appendChild(liste);
// --- 6. Button --- // 6. Button
const button = document.createElement("button"); const button = document.createElement("button");
button.classList.add("paket-karte__cta"); button.classList.add("paket-karte__cta");
button.type = "button"; button.type = "button";
@ -130,8 +130,8 @@ document.addEventListener("DOMContentLoaded", async () => {
})); }));
}); });
content.appendChild(button); body.appendChild(button);
karte.appendChild(content); karte.appendChild(body);
grid.appendChild(karte); grid.appendChild(karte);
}); });

View File

@ -5,7 +5,7 @@
}, },
"pakete": [ "pakete": [
{ {
"name": "Starter", "name": "STARTER",
"preis": 79, "preis": 79,
"zeitraum": "Monat", "zeitraum": "Monat",
"beschreibung": "Für den Einstieg in eine bewusste Ernährung neben dem Training.", "beschreibung": "Für den Einstieg in eine bewusste Ernährung neben dem Training.",
@ -36,7 +36,7 @@
"dataPaket": "Ausdauer" "dataPaket": "Ausdauer"
}, },
{ {
"name": "Rundum Sorglos Paket", "name": "PREMIUM",
"preis": 249, "preis": 249,
"zeitraum": "Monat", "zeitraum": "Monat",
"beschreibung": "Volle Betreuung für ambitionierte Athletinnen und Athleten.", "beschreibung": "Volle Betreuung für ambitionierte Athletinnen und Athleten.",