bed8675930
- Both pages: Google Fonts links + preconnects removed; ONE stylesheet (/assets/site.css?v=1); embedded <style> blocks deleted; body classes page-index/page-kapcsolat; canonical nav/footer (active marker per page; index's #szolgaltatasok href normalized to /#szolgaltatasok); all emoji -> sprite icons (feature tiles = .ico-tile 48px bg-2 squares; headings .ico-lg; inline .ico) or plain text. - kapcsolat: the contact form is functionally frozen — every field name/id, the submit JS, and the /api/contact endpoint byte-identical; only the visual layer changed (upload/paperclip + file-type icons as sprite refs in JS strings, the x button as ×, status-message emoji prefixes dropped). - site.css: CSS-generated marks (content '✓'/'✗'/'⚠'/'★ …') replaced by currentColor mask-based marks / plain text (emoji-free stylesheet; gate now scans it too); .ico-tile is svg-as-tile (immune to container display rules), .ico-lg added. - Gates: zero failures for the two converted pages; the remaining five convert in Part 3.
486 lines
24 KiB
HTML
486 lines
24 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="hu">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
||
<meta name="description" content="Professzionális otthoni szerver telepítés és üzemeltetés. Google Drive és iCloud alternatíva: saját szervered, saját adataid, teljes kontroll. 45+ nyílt forráskódú alkalmazás.">
|
||
<title>Felhom.eu — Saját felhőd, saját szabályaid | Otthoni szerver szolgáltatás</title>
|
||
|
||
<!-- SEO meta -->
|
||
<meta name="keywords" content="otthoni szerver, saját felhő, self-hosting, Google Drive alternatíva, iCloud alternatíva, adatvédelem, nyílt forráskódú, szerver telepítés, szerver üzemeltetés, Nextcloud, Immich, Magyarország">
|
||
<meta name="author" content="Felhom.eu">
|
||
<meta name="robots" content="index, follow">
|
||
<link rel="canonical" href="https://felhom.eu/">
|
||
|
||
<!-- Open Graph (Facebook, LinkedIn) -->
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:url" content="https://felhom.eu/">
|
||
<meta property="og:title" content="Felhom.eu — Saját felhőd, saját szabályaid">
|
||
<meta property="og:description" content="Professzionális otthoni szerver telepítés és üzemeltetés. Google Drive és iCloud alternatíva: saját szervered, saját adataid, teljes kontroll.">
|
||
<meta property="og:image" content="https://felhom.eu/assets/og-image.png">
|
||
<meta property="og:locale" content="hu_HU">
|
||
<meta property="og:site_name" content="Felhom.eu">
|
||
|
||
<!-- Twitter/X Card -->
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:title" content="Felhom.eu — Saját felhőd, saját szabályaid">
|
||
<meta name="twitter:description" content="Professzionális otthoni szerver telepítés és üzemeltetés. Saját szervered, saját adataid.">
|
||
<meta name="twitter:image" content="https://felhom.eu/assets/og-image.png">
|
||
|
||
<!-- Structured Data (JSON-LD) -->
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "LocalBusiness",
|
||
"name": "Felhom.eu",
|
||
"description": "Professzionális otthoni szerver telepítés és üzemeltetés Magyarországon.",
|
||
"url": "https://felhom.eu",
|
||
"logo": "https://felhom.eu/assets/logo.png",
|
||
"email": "info@felhom.eu",
|
||
"areaServed": {
|
||
"@type": "Country",
|
||
"name": "Magyarország"
|
||
},
|
||
"serviceType": ["Szerver telepítés", "Szerver üzemeltetés", "Self-hosting"],
|
||
"knowsLanguage": "hu",
|
||
"sameAs": []
|
||
}
|
||
</script>
|
||
<!-- shared assets: bump ?v= together on any site.css/icons.svg change -->
|
||
<link rel="stylesheet" href="/assets/site.css?v=1">
|
||
<link rel="icon" type="image/png" href="/assets/logo_favicon_2.svg">
|
||
<script defer src="https://stats.felhom.eu/script.js" data-website-id="d419db57-5e1c-48df-bdb3-c29f25fb1661"></script>
|
||
</head>
|
||
<body class="page-index">
|
||
<nav>
|
||
<div class="container">
|
||
<a href="/" class="logo">
|
||
<img src="/assets/logo.png" alt="Felhom.eu logo">
|
||
<span class="logo-text">felhom.eu</span>
|
||
</a>
|
||
<ul class="nav-links">
|
||
<li><a href="/#szolgaltatasok">Szolgáltatások</a></li>
|
||
<li><a href="/alkalmazasok">Alkalmazások</a></li>
|
||
<li><a href="/technologiak">Technológiák</a></li>
|
||
<li><a href="/biztonsagimentes">Mentések</a></li>
|
||
<li><a href="/gyik">GYIK</a></li>
|
||
<li><a href="/kapcsolat">Kapcsolat</a></li>
|
||
</ul>
|
||
<button class="hamburger" id="hamburger" aria-label="Menü megnyitása" aria-expanded="false">
|
||
<span class="hamburger-box">
|
||
<span class="hamburger-line"></span>
|
||
<span class="hamburger-line"></span>
|
||
<span class="hamburger-line"></span>
|
||
</span>
|
||
</button>
|
||
</div>
|
||
</nav>
|
||
<div class="mobile-overlay" id="mobileOverlay"></div>
|
||
|
||
<section class="hero">
|
||
<div class="container">
|
||
<div class="hero-content">
|
||
<div class="hero-text">
|
||
<h1>Saját felhőd,<br><span>saját szabályaid</span></h1>
|
||
<p>Professzionális otthoni szerver telepítés és üzemeltetés. Te irányítasz, mi segítünk.</p>
|
||
<a href="/kapcsolat" class="cta-button">Érdekel →</a>
|
||
</div>
|
||
<div class="hero-visual">
|
||
<img src="/assets/logo.png" alt="Felhom.eu - Otthoni szerver szolgáltatás">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="content-section alt-bg">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Miért ne a <span>felhőszolgáltatók?</span></h2>
|
||
<p>A nagy techcégek kényelmes megoldásokat kínálnak, de van néhány hátrány...</p>
|
||
</div>
|
||
<div class="problem-grid">
|
||
<div class="problem-card">
|
||
<div class="problem-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-coins"/></svg></div>
|
||
<h3>Folyamatos költségek</h3>
|
||
<p>Havonta fizetsz a tárhelyért, a prémium funkciókért, és az árak csak nőnek idővel.</p>
|
||
</div>
|
||
<div class="problem-card">
|
||
<div class="problem-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-eye"/></svg></div>
|
||
<h3>Adataid másé</h3>
|
||
<p>A fotóid, dokumentumaid, személyes adataid idegen szervereken vannak, idegen kezekben.</p>
|
||
</div>
|
||
<div class="problem-card">
|
||
<div class="problem-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-lock"/></svg></div>
|
||
<h3>Korlátozott kontroll</h3>
|
||
<p>Nem te döntöd el, milyen szolgáltatásokat használsz, és mikor szűnnek meg.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="content-section" id="miert">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Miért válaszd a <span>saját szervered?</span></h2>
|
||
<p>Az előnyök, amik miatt megéri</p>
|
||
</div>
|
||
<div class="why-grid">
|
||
<div class="why-card">
|
||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-shield-check"/></svg> Teljes adatvédelem</h3>
|
||
<p>Az adataid a te otthonodban maradnak. Senki más nem fér hozzájuk - sem a Google, sem a Microsoft, sem senki más.</p>
|
||
</div>
|
||
<div class="why-card">
|
||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-coins"/></svg> Egyszeri befektetés</h3>
|
||
<p>Nincs havi előfizetés, nincs rejtett költség. A szerver a tiéd, örökre. Csak az áramért fizetsz.</p>
|
||
</div>
|
||
<div class="why-card">
|
||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-zap"/></svg> Korlátlan kapacitás</h3>
|
||
<p>Nincs 15GB-os limit. Bővítheted ahogy nőnek az igényeid - TB-okkal, ha kell.</p>
|
||
</div>
|
||
<div class="why-card">
|
||
<h3><svg class="ico-lg" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-sliders-horizontal"/></svg> Teljes kontroll</h3>
|
||
<p>Te döntöd el, milyen szolgáltatásokat futtatsz. Te vagy a főnök, nem a szolgáltató.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="content-section alt-bg" id="hogyan-mukodik">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Hogyan <span>működik?</span></h2>
|
||
<p>5 egyszerű lépés az indulástól a működő rendszerig</p>
|
||
</div>
|
||
<div class="process-steps">
|
||
<div class="process-step">
|
||
<div class="step-number">1</div>
|
||
<span class="process-connector">→</span>
|
||
<h3>Egyeztetés</h3>
|
||
<p>Megbeszéljük az igényeidet: milyen alkalmazásokra van szükséged, és mekkora tárhelyet szeretnél.</p>
|
||
</div>
|
||
<div class="process-step">
|
||
<div class="step-number">2</div>
|
||
<span class="process-connector">→</span>
|
||
<h3>Hardver kiválasztás</h3>
|
||
<p>Segítünk megtalálni a legjobb ár-érték arányú gépet, ami az igényeidnek megfelel.</p>
|
||
</div>
|
||
<div class="process-step">
|
||
<div class="step-number">3</div>
|
||
<span class="process-connector">→</span>
|
||
<h3>Telepítés</h3>
|
||
<p>Feltelepítjük és bekonfiguráljuk az alkalmazásokat, a mentéseket, és a monitoringot.</p>
|
||
</div>
|
||
<div class="process-step">
|
||
<div class="step-number">4</div>
|
||
<span class="process-connector">→</span>
|
||
<h3>Átadás</h3>
|
||
<p>Bemutatjuk a rendszert, segítünk áthozni a meglévő adataidat, és válaszolunk minden kérdésedre.</p>
|
||
</div>
|
||
<div class="process-step">
|
||
<div class="step-number">5</div>
|
||
<h3>Üzemeltetés</h3>
|
||
<p>Figyeljük a rendszert, frissítünk, mentéseket ellenőrzünk. Te csak használod.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="content-section" id="szolgaltatasok">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Mit kapsz <span>tőlünk?</span></h2>
|
||
<p>Kulcsrakész megoldások, professzionális kivitelezéssel</p>
|
||
</div>
|
||
<div class="service-list">
|
||
<div class="service-item">
|
||
<span class="service-number">01</span>
|
||
<div class="service-content">
|
||
<h3>Szerver beszerzés és beüzemelés</h3>
|
||
<p>Segítünk kiválasztani az igényeidnek megfelelő hardvert, és mindent beállítunk.</p>
|
||
</div>
|
||
<span class="service-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-monitor"/></svg></span>
|
||
</div>
|
||
<div class="service-item">
|
||
<span class="service-number">02</span>
|
||
<div class="service-content">
|
||
<h3>Alkalmazás telepítés</h3>
|
||
<p>Nextcloud, Plex, Jellyfin, Home Assistant, és még sok más - amit csak szeretnél.</p>
|
||
</div>
|
||
<span class="service-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-package"/></svg></span>
|
||
</div>
|
||
<div class="service-item">
|
||
<span class="service-number">03</span>
|
||
<div class="service-content">
|
||
<h3>Biztonságos távoli elérés</h3>
|
||
<p>Bárhonnan elérheted a szervereidet, biztonságosan, titkosított kapcsolaton keresztül.</p>
|
||
</div>
|
||
<span class="service-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-globe"/></svg></span>
|
||
</div>
|
||
<div class="service-item">
|
||
<span class="service-number">04</span>
|
||
<div class="service-content">
|
||
<h3>Automatikus mentések</h3>
|
||
<p>Soha többé nem veszíted el az adataidat - rendszeres, automatikus mentések.</p>
|
||
</div>
|
||
<span class="service-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-hard-drive"/></svg></span>
|
||
</div>
|
||
<div class="service-item">
|
||
<span class="service-number">05</span>
|
||
<div class="service-content">
|
||
<h3>Támogatás és karbantartás</h3>
|
||
<p>Ha bármi gond van, itt vagyunk. Rendszeres frissítések, proaktív monitoring.</p>
|
||
</div>
|
||
<span class="service-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-wrench"/></svg></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="content-section alt-bg" id="alkalmazasok">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Telepíthető <span>Alkalmazások</span></h2>
|
||
<p>Nyílt forráskódú szoftverek, amiket a saját szervereden futtathatsz</p>
|
||
</div>
|
||
|
||
<div class="apps-showcase">
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-folder"/></svg></span>
|
||
<h3>Fájlkezelés</h3>
|
||
<p>Nextcloud, FileBrowser, Gokapi, Zipline</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-camera"/></svg></span>
|
||
<h3>Fotók & Média</h3>
|
||
<p>Immich, Jellyfin, Plex, Audiobookshelf</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-clapperboard"/></svg></span>
|
||
<h3>Média Automatizáció</h3>
|
||
<p>Sonarr, Radarr, Seerr</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-file-text"/></svg></span>
|
||
<h3>Dokumentumok</h3>
|
||
<p>Paperless-ngx, BookStack, Outline</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-lock"/></svg></span>
|
||
<h3>Biztonság</h3>
|
||
<p>Vaultwarden, PrivateBin</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-home"/></svg></span>
|
||
<h3>Otthon & Életmód</h3>
|
||
<p>Tandoor, Plant-it, wger, Actual Budget</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-map"/></svg></span>
|
||
<h3>Utazás & Szabadidő</h3>
|
||
<p>AdventureLog, Wanderer, Cal.com</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-chart-column"/></svg></span>
|
||
<h3>Dashboard</h3>
|
||
<p>Homepage, Glance, Uptime Kuma</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-gamepad-2"/></svg></span>
|
||
<h3>Játékok</h3>
|
||
<p>RoMM, Crafty Controller</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-code"/></svg></span>
|
||
<h3>Fejlesztőknek</h3>
|
||
<p>Gitea, Code-Server, OpenGist</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="apps-cta">
|
||
<p class="apps-count">
|
||
<strong>45+</strong> alkalmazás — mind <strong>100% nyílt forráskódú</strong>
|
||
</p>
|
||
<a href="/alkalmazasok" class="cta-button-secondary">
|
||
Összes alkalmazás megtekintése →
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="content-section" id="technologiak">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Professzionális <span>Technológiák</span></h2>
|
||
<p>Ipari szintű megoldások, otthoni környezetben</p>
|
||
</div>
|
||
|
||
<div class="apps-showcase">
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-container"/></svg></span>
|
||
<h3>Konténerek</h3>
|
||
<p>Docker alapú, izolált alkalmazás futtatás</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-target"/></svg></span>
|
||
<h3>Felhő Felügyelő</h3>
|
||
<p>Magyar nyelvű kezelőfelület</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-layers"/></svg></span>
|
||
<h3>Proxmox</h3>
|
||
<p>Stabil virtualizációs alap</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-boxes"/></svg></span>
|
||
<h3>Kubernetes</h3>
|
||
<p>Üzleti szintű rendelkezésre állás</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-globe"/></svg></span>
|
||
<h3>Hálózat</h3>
|
||
<p>SSL, tűzfal, VPN védelem</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-hard-drive"/></svg></span>
|
||
<h3>Tárolás</h3>
|
||
<p>SSD + HDD, RAID védelem</p>
|
||
</div>
|
||
<div class="app-category-preview">
|
||
<span class="cat-icon"><svg class="ico-tile" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-monitor"/></svg></span>
|
||
<h3>Hardver</h3>
|
||
<p>Mini PC-től rack szerverig</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="apps-cta">
|
||
<p class="apps-count">
|
||
Az igényeidhez igazítjuk — a <strong style="color: var(--text-1);">legegyszerűbbtől</strong> a <strong>legkomolyabbig</strong>
|
||
</p>
|
||
<a href="/technologiak" class="cta-button-secondary">
|
||
Technológiákról bővebben →
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="content-section alt-bg" id="mentesek">
|
||
<div class="container">
|
||
<div class="backup-content">
|
||
<div class="backup-text">
|
||
<h2>Adataid <span>biztonságban</span></h2>
|
||
<p>A nagy felhőszolgáltatók milliókat költenek arra, hogy az adataid ne vesszenek el. De tudtad, hogy ugyanezt az otthoni szerveredről is elérheted?</p>
|
||
<p>A 3-2-1 mentési szabályt követve professzionális szintű adatbiztonságot építünk fel – semmi sem vész el, még katasztrófa esetén sem.</p>
|
||
<a href="/biztonsagimentes" class="cta-button-secondary">
|
||
Mentési stratégia részletei →
|
||
</a>
|
||
</div>
|
||
<div class="backup-visual">
|
||
<div class="backup-rule-mini">
|
||
<span class="number">3</span>
|
||
<div class="rule-text">
|
||
<h4>Három másolat</h4>
|
||
<p>Eredeti + két biztonsági mentés</p>
|
||
</div>
|
||
</div>
|
||
<div class="backup-rule-mini">
|
||
<span class="number">2</span>
|
||
<div class="rule-text">
|
||
<h4>Két tárolótípus</h4>
|
||
<p>Különböző eszközökön tárolva</p>
|
||
</div>
|
||
</div>
|
||
<div class="backup-rule-mini">
|
||
<span class="number">1</span>
|
||
<div class="rule-text">
|
||
<h4>Egy távoli helyen</h4>
|
||
<p>Offsite backup a biztonság érdekében</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="contact" id="kapcsolat">
|
||
<div class="container">
|
||
<div class="contact-box">
|
||
<h2>Érdekel? <span>Beszéljünk!</span></h2>
|
||
<div class="contact-methods">
|
||
<a href="/kapcsolat" class="contact-link"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-message-square"/></svg> Kapcsolatfelvételi űrlap</a>
|
||
<a href="mailto:info@felhom.eu" class="contact-link"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-mail"/></svg> info@felhom.eu</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<footer>
|
||
<div class="container">
|
||
<p>© 2026 felhom.eu — Saját felhőd, saját szabályaid</p>
|
||
</div>
|
||
</footer>
|
||
<script>
|
||
(function() {
|
||
const hamburger = document.getElementById('hamburger');
|
||
const navLinks = document.querySelector('.nav-links');
|
||
const overlay = document.getElementById('mobileOverlay');
|
||
const body = document.body;
|
||
|
||
if (!hamburger || !navLinks || !overlay) {
|
||
console.warn('[mobile-menu] Missing elements:', {
|
||
hamburger: !!hamburger,
|
||
navLinks: !!navLinks,
|
||
overlay: !!overlay
|
||
});
|
||
return;
|
||
}
|
||
|
||
function openMenu() {
|
||
hamburger.classList.add('is-active');
|
||
navLinks.classList.add('is-open');
|
||
overlay.classList.add('is-visible');
|
||
body.classList.add('menu-open');
|
||
hamburger.setAttribute('aria-expanded', 'true');
|
||
hamburger.setAttribute('aria-label', 'Menü bezárása');
|
||
}
|
||
|
||
function closeMenu() {
|
||
hamburger.classList.remove('is-active');
|
||
navLinks.classList.remove('is-open');
|
||
overlay.classList.remove('is-visible');
|
||
body.classList.remove('menu-open');
|
||
hamburger.setAttribute('aria-expanded', 'false');
|
||
hamburger.setAttribute('aria-label', 'Menü megnyitása');
|
||
}
|
||
|
||
hamburger.addEventListener('click', function() {
|
||
if (navLinks.classList.contains('is-open')) {
|
||
closeMenu();
|
||
} else {
|
||
openMenu();
|
||
}
|
||
});
|
||
|
||
// Close on overlay click
|
||
overlay.addEventListener('click', closeMenu);
|
||
|
||
// Close on nav link click
|
||
navLinks.querySelectorAll('a').forEach(function(link) {
|
||
link.addEventListener('click', closeMenu);
|
||
});
|
||
|
||
// Close on Escape key
|
||
document.addEventListener('keydown', function(e) {
|
||
if (e.key === 'Escape' && navLinks.classList.contains('is-open')) {
|
||
closeMenu();
|
||
}
|
||
});
|
||
|
||
// Close on resize if open (e.g., rotating device)
|
||
window.addEventListener('resize', function() {
|
||
if (window.innerWidth > 900 && navLinks.classList.contains('is-open')) {
|
||
closeMenu();
|
||
}
|
||
});
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html> |