<!DOCTYPE html>
Browse files<html lang="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Alexander Adolfsson Coaching</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
html { scroll-behavior: smooth; }
body { margin:0; font-family:sans-serif; background:#f9f9f9; color:#111; }
/* HEADER */
header {
position:sticky;
top:0;
z-index:50;
display:flex;
justify-content:space-between;
align-items:center;
background:white;
padding:1rem 2rem;
box-shadow:0 2px 8px rgba(0,0,0,0.1);
}
header nav a {
margin:0 1rem;
text-decoration:none;
font-weight:bold;
color:#111;
}
header nav a:hover { color:#10b981; }
/* HERO VIDEO */
.hero-video {
position: relative;
width: 100%;
height: 100vh;
overflow: hidden;
}
.hero-video video {
position:absolute;
top:50%;
left:50%;
width:auto;
height:100%;
min-width:100%;
min-height:100%;
transform: translate(-50%, -50%);
object-fit:cover;
z-index:0;
}
.hero-overlay {
position:absolute;
top:0; left:0;
width:100%; height:100%;
background: rgba(0,0,0,0.35);
z-index:1;
}
.hero-content {
position:absolute;
top:50%;
left:50%;
transform: translate(-50%, -50%);
z-index:2;
text-align:center;
color:white;
}
.hero-content h1 { font-size:3rem; margin-bottom:1rem; text-shadow:2px2px8px rgba(0,0,0,0.7);}
.hero-content a {
display:inline-block;
background:#10b981;
color:black;
font-weight:bold;
padding:1rem 2rem;
border-radius:9999px;
font-size:1.5rem;
transition: all 0.3s;
}
.hero-content a:hover { background:#059669; transform:scale(1.05); }
/* OM MIG */
.about {
max-width:900px;
margin:3rem auto;
text-align:center;
padding:0 1rem;
}
.about img { max-width:300px; width:100%; border-radius:12px; margin-top:2rem; }
/* TJÄNSTER */
.services {
background:#f0f0f0;
padding:3rem 1rem;
text-align:center;
}
.services-grid {
display:grid;
grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
gap:2rem;
margin-top:2rem;
}
.service-card {
background:white;
padding:1.5rem;
border-radius:12px;
box-shadow:0 2px 8px rgba(0,0,0,0.1);
}
.service-card h3 { margin-bottom:1rem; font-size:1.25rem; }
.service-card p { font-size:1rem; margin-bottom:1rem; }
.service-card a {
display:inline-block;
background:#10b981;
color:black;
font-weight:bold;
padding:0.75rem 1.5rem;
border-radius:9999px;
transition: all 0.3s;
}
.service-card a:hover { background:#059669; transform:scale(1.05); }
/* PRISER */
.pricing { padding:3rem 1rem; text-align:center; }
.pricing-grid {
display:grid;
grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
gap:2rem;
margin-top:2rem;
}
.price-card {
background:white;
padding:2rem;
border-radius:12px;
box-shadow:0 2px 8px rgba(0,0,0,0.1);
text-align:left;
}
.price-card h3 { font-size:1.5rem; margin-bottom:0.5rem; }
.price-card .price { font-size:1.25rem; font-weight:bold; margin-bottom:1rem; }
.price-card ul { margin-bottom:1rem; list-style:none; padding-left:0; }
.price-card ul li::before { content:"✔ "; color:#10b981; }
.price-card a {
display:inline-block;
background:#10b981;
color:black;
font-weight:bold;
padding:0.75rem 1.5rem;
border-radius:9999px;
transition: all 0.3s;
text-align:center;
}
.price-card a:hover { background:#059669; transform:scale(1.05); }
/* FOOTER */
footer {
background:#111;
color:white;
text-align:center;
padding:2rem 1rem;
}
.social-links a {
margin:0 0.5rem;
font-size:2rem;
display:inline-block;
transition: all 0.3s;
}
.social-links a:hover { transform:scale(1.2); color:#10b981; }
@media (max-width:768px){
.hero-content h1 { font-size:2rem; }
.hero-content a { font-size:1rem; padding:0.75rem 1.5rem; }
}
</style>
</head>
<body>
<header>
<div><strong>Alexander Adolfsson Coaching</strong></div>
<nav>
<a href="#home">Hem</a>
<a href="#about">Om mig</a>
<a href="#services">Tjänster</a>
<a href="#pricing">Priser</a>
<a href="https://calendly.com/alexander-pt-adolfsson/new-meeting" target="_blank">Boka gratis konsultation</a>
</nav>
</header>
<!-- HERO VIDEO -->
<section id="home" class="hero-video">
<video autoplay muted loop playsinline>
<source src="https://res.cloudinary.com/dttivz1il/video/upload/v1770166272/00733_njitjk.ts" type="video/mp4">
Din webbläsare stöder inte videon.
</video>
<div class="hero-overlay"></div>
<div class="hero-content">
<h1>Boka din PT-session idag!</h1>
<a href="https://calendly.com/alexander-pt-adolfsson/new-meeting" target="_blank">Boka nu</a>
</div>
</section>
<!-- OM MIG -->
<section id="about" class="about">
<h2>Om mig</h2>
<p>Träning är inte bara något jag gör – det är en livsstil. Jag har byggt upp min kunskap genom år av egen erfarenhet i gymmet, där jag testat, lärt mig och finslipat vad som verkligen fungerar.</p>
<p>Min passion är att inspirera andra till att må bättre, bli starkare och känna sig mer självsäkra – både fysiskt och mentalt. Mitt mål är att hjälpa dig göra just det.</p>
<p>Oavsett om du vill bygga muskler, gå ner i vikt eller ta din träning till nästa nivå – finns jag här för att guida dig.</p>
<img src="https://res.cloudinary.com/dttivz1il/image/upload/v1770071792/116793853_1720734278103001_2838411385229802706_n_1_amarng.jpg" alt="Alexander Adolfsson PT">
<div style="margin-top:1rem;">
<a href="https://calendly.com/alexander-pt-adolfsson/new-meeting" target="_blank" class="hero-content a">Börja din resa idag</a>
</div>
</section>
<!-- TJÄNSTER -->
<section id="services" class="services">
<h2>Tjänster</h2>
<div class="services-grid">
<div class="service-card">
<h3>Personlig träning</h3>
<p>Individuellt anpassad träning – nybörjare eller erfaren.</p>
<a href="https://calendly.com/alexander-pt-adolfsson/new-meeting" target="_blank">Börja nu →</a>
</div>
<div class="service-card">
<h3>Kostrådgivning</h3>
<p>Struktur, tydlighet och resultat – utan extrema dieter.</p>
<a href="https://calendly.com/alexander-pt-adolfsson/new-meeting" target="_blank">Börja nu →</a>
</div>
<div class="service-card">
<h3>Online coaching</h3>
<p>Komplett upplägg med träning, kost och uppföljning.</p>
<a href="https://calendly.com/alexander-pt-adolfsson/new-meeting" target="_blank">Börja nu →</a>
</div>
</div>
</section>
<!-- PRISER -->
<section id="pricing" class="pricing">
<h2>Prispaket</h2>
<div class="pricing-grid">
<div class="price-card">
<h3>Online Coaching Bas</h3>
<p class="price">1 495 kr / mån</p>
<ul>
<li>Struktur & planering</li>
<li>Träningsprogram</li>
<li>Veckovis uppföljning</li>
</ul>
<a href="https://buy.stripe.com/3cI5kF0fk5ew9Ry7Bx7EQ03" target="_blank">Betala / Boka</a>
</div>
<div class="price-card">
<h3>Online Coaching Standard</h3>
<p class="price">2 495 kr / mån</p>
<ul>
<li>Träningsprogram</li>
<li>Personligt kostupplägg</li>
<li>Direktkontakt & justeringar</li>
<li>Veckovis uppföljning</li>
</ul>
<a href="https://buy.stripe.com/3cI5kF0fk5ew9Ry7Bx7EQ03" target="_blank">Betala / Boka</a>
</div>
<div class="price-card">
<h3>Online Coaching Premium</h3>
<p class="price">3 495 kr / mån</p>
<ul>
<li>Allt i Standard</li>
<li>Tätare uppföljning</li>
<li>Prioriterad support</li>
<li>Regelbundna videosamtal</li>
</ul>
<a href="https://buy.stripe.com/3cI5kF0fk5ew9Ry7Bx7EQ03" target="_blank">Betala / Boka</a>
</div>
</div>
</section>
<!-- FOOTER -->
<footer>
<p>Borås, Sverige | alexander.pt.adolfsson@gmail.com | 073-640 50 08</p>
<div class="social-links">
<a href="https://www.instagram.com/ptalexadolfsson/" target="_blank">📸</a>
<a href="https://www.tiktok.com/@ptalexanderadolfsson?lang=sv-SE" target="_blank">🎵</a>
<a href="https://www.facebook.com/profile.php?id=61583938018630" target="_blank">📘</a>
<a href="https://www.youtube.com/@alexanderadolfsson9295" target="_blank">▶️</a>
</div>
<p>© 2026 Alexander Adolfsson Coaching. Alla rättigheter reserverade.</p>
</footer>
</body>
</html>
- components/header.js +73 -1
- index.html +2 -0
- script.js +9 -14
- style.css +1 -26
|
@@ -1 +1,73 @@
|
|
| 1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class CustomHeader extends HTMLElement {
|
| 2 |
+
connectedCallback() {
|
| 3 |
+
this.attachShadow({ mode: 'open' });
|
| 4 |
+
this.shadowRoot.innerHTML = `
|
| 5 |
+
<style>
|
| 6 |
+
:host {
|
| 7 |
+
display: block;
|
| 8 |
+
position: sticky;
|
| 9 |
+
top: 0;
|
| 10 |
+
z-index: 50;
|
| 11 |
+
background: white;
|
| 12 |
+
padding: 1rem 2rem;
|
| 13 |
+
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
| 14 |
+
}
|
| 15 |
+
.container {
|
| 16 |
+
display: flex;
|
| 17 |
+
justify-content: space-between;
|
| 18 |
+
align-items: center;
|
| 19 |
+
max-width: 1200px;
|
| 20 |
+
margin: 0 auto;
|
| 21 |
+
}
|
| 22 |
+
.logo {
|
| 23 |
+
font-weight: bold;
|
| 24 |
+
color: #111;
|
| 25 |
+
}
|
| 26 |
+
nav {
|
| 27 |
+
display: flex;
|
| 28 |
+
gap: 1rem;
|
| 29 |
+
}
|
| 30 |
+
nav a {
|
| 31 |
+
text-decoration: none;
|
| 32 |
+
font-weight: bold;
|
| 33 |
+
color: #111;
|
| 34 |
+
transition: color 0.3s;
|
| 35 |
+
}
|
| 36 |
+
nav a:hover {
|
| 37 |
+
color: #10b981;
|
| 38 |
+
}
|
| 39 |
+
.cta-btn {
|
| 40 |
+
background: #10b981;
|
| 41 |
+
color: black;
|
| 42 |
+
font-weight: bold;
|
| 43 |
+
padding: 0.5rem 1rem;
|
| 44 |
+
border-radius: 9999px;
|
| 45 |
+
transition: all 0.3s;
|
| 46 |
+
}
|
| 47 |
+
.cta-btn:hover {
|
| 48 |
+
background: #059669;
|
| 49 |
+
transform: scale(1.05);
|
| 50 |
+
}
|
| 51 |
+
@media (max-width: 768px) {
|
| 52 |
+
:host {
|
| 53 |
+
padding: 1rem;
|
| 54 |
+
}
|
| 55 |
+
nav {
|
| 56 |
+
display: none;
|
| 57 |
+
}
|
| 58 |
+
}
|
| 59 |
+
</style>
|
| 60 |
+
<div class="container">
|
| 61 |
+
<div class="logo">Alexander Adolfsson Coaching</div>
|
| 62 |
+
<nav>
|
| 63 |
+
<a href="#home">Hem</a>
|
| 64 |
+
<a href="#about">Om mig</a>
|
| 65 |
+
<a href="#services">Tjänster</a>
|
| 66 |
+
<a href="#pricing">Priser</a>
|
| 67 |
+
<a href="https://calendly.com/alexander-pt-adolfsson/new-meeting" target="_blank" class="cta-btn">Boka gratis konsultation</a>
|
| 68 |
+
</nav>
|
| 69 |
+
</div>
|
| 70 |
+
`;
|
| 71 |
+
}
|
| 72 |
+
}
|
| 73 |
+
customElements.define('custom-header', CustomHeader);
|
|
@@ -208,6 +208,8 @@ Osäker? <a href="https://calendly.com/alexander-pt-adolfsson/new-meeting" targe
|
|
| 208 |
<script src="components/footer.js"></script>
|
| 209 |
<script src="script.js"></script>
|
| 210 |
<script src="components/navbar.js"></script>
|
|
|
|
|
|
|
| 211 |
</body>
|
| 212 |
</html>
|
| 213 |
https://res.cloudinary.com/dttivz1il/image/upload/v1770071721/11062b_f11d2809bac34baaadb2950e9d15f8a3_mv2_o2ltbl.avif$0
|
|
|
|
| 208 |
<script src="components/footer.js"></script>
|
| 209 |
<script src="script.js"></script>
|
| 210 |
<script src="components/navbar.js"></script>
|
| 211 |
+
<script src="components/header.js"></script>
|
| 212 |
+
<script src="components/footer.js"></script>
|
| 213 |
</body>
|
| 214 |
</html>
|
| 215 |
https://res.cloudinary.com/dttivz1il/image/upload/v1770071721/11062b_f11d2809bac34baaadb2950e9d15f8a3_mv2_o2ltbl.avif$0
|
|
@@ -1,16 +1,17 @@
|
|
| 1 |
|
| 2 |
// Smooth scroll for anchor links
|
| 3 |
-
document.
|
| 4 |
-
|
| 5 |
e.preventDefault();
|
| 6 |
-
document.querySelector(
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
|
|
|
| 10 |
});
|
|
|
|
| 11 |
// Add fade-in animation to sections when they come into view
|
| 12 |
const sections = document.querySelectorAll('section');
|
| 13 |
-
|
| 14 |
const observer = new IntersectionObserver((entries) => {
|
| 15 |
entries.forEach(entry => {
|
| 16 |
if (entry.isIntersecting) {
|
|
@@ -19,10 +20,4 @@ const observer = new IntersectionObserver((entries) => {
|
|
| 19 |
});
|
| 20 |
}, { threshold: 0.1 });
|
| 21 |
|
| 22 |
-
sections.forEach(section =>
|
| 23 |
-
observer.observe(section);
|
| 24 |
-
});
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
|
|
|
| 1 |
|
| 2 |
// Smooth scroll for anchor links
|
| 3 |
+
document.addEventListener('click', function(e) {
|
| 4 |
+
if (e.target.matches('a[href^="#"]')) {
|
| 5 |
e.preventDefault();
|
| 6 |
+
const target = document.querySelector(e.target.getAttribute('href'));
|
| 7 |
+
if (target) {
|
| 8 |
+
target.scrollIntoView({ behavior: 'smooth' });
|
| 9 |
+
}
|
| 10 |
+
}
|
| 11 |
});
|
| 12 |
+
|
| 13 |
// Add fade-in animation to sections when they come into view
|
| 14 |
const sections = document.querySelectorAll('section');
|
|
|
|
| 15 |
const observer = new IntersectionObserver((entries) => {
|
| 16 |
entries.forEach(entry => {
|
| 17 |
if (entry.isIntersecting) {
|
|
|
|
| 20 |
});
|
| 21 |
}, { threshold: 0.1 });
|
| 22 |
|
| 23 |
+
sections.forEach(section => observer.observe(section));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,30 +1,5 @@
|
|
| 1 |
|
| 2 |
-
/*
|
| 3 |
-
header {
|
| 4 |
-
background: #111827;
|
| 5 |
-
padding: 1rem 1.5rem;
|
| 6 |
-
position: sticky;
|
| 7 |
-
top: 0;
|
| 8 |
-
z-index: 50;
|
| 9 |
-
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
| 10 |
-
}
|
| 11 |
-
|
| 12 |
-
header nav {
|
| 13 |
-
display: flex;
|
| 14 |
-
gap: 1.5rem;
|
| 15 |
-
}
|
| 16 |
-
|
| 17 |
-
header nav a {
|
| 18 |
-
color: white;
|
| 19 |
-
text-decoration: none;
|
| 20 |
-
font-weight: 500;
|
| 21 |
-
transition: color 0.3s ease;
|
| 22 |
-
}
|
| 23 |
-
|
| 24 |
-
header nav a:hover {
|
| 25 |
-
color: #34d399;
|
| 26 |
-
}
|
| 27 |
-
|
| 28 |
/* Hero Section */
|
| 29 |
#home {
|
| 30 |
height: 100vh;
|
|
|
|
| 1 |
|
| 2 |
+
/* Header styles moved to web component */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
/* Hero Section */
|
| 4 |
#home {
|
| 5 |
height: 100vh;
|