Responsive Navbar
HTML
<?php
?>
<html>
<head>
<title>Aufgabe 3</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"
rel="stylesheet">
<link rel="stylesheet" type="text/css" href="navbar.css" />
</head>
<body>
<header>
<nav>
<img src="../images/logo-small.svg" alt="Logo" id="icon-logo" class="corner-item-left" />
<ul>
<li class="nav-item"><a class="nav-link" href="#Willkommen">Willkommen</a></li>
<li class="nav-item"><a class="nav-link" href="#Wohnen">Wohnen</a></li>
<li class="nav-item"><a class="nav-link" href="#Kleinwalsertal">Kleinwalsertal</a></li>
<li class="nav-item"><a class="nav-link" href="#Kontakt">Kontakt</a></li>
</ul>
<ul>
<li class="icon-item"><button class="icon-button" id="icon-phone"><img src="../images/icon-phone.svg" alt="Telefon"/></button></li>
<li class="icon-item"><button class="icon-button" id="icon-contact"><img src="../images/icon-contact.svg" alt="Kontakt"/></button></li>
<li class="icon-item"><button class="icon-button corner-item-right" id="icon-booking"><img src="../images/icon-booking.svg" alt="Buchen"/></button></li>
</ul>
<button class="burger-menu-button" id="burger-menu">☰</button>
</nav>
</header>
</body>
</html>
CSS
body {
background: #7A593E;
}
header {
display: flex;
justify-content: center;
align-items: center;
}
.corner-item-left {
margin-left: 20px;
}
.corner-item-right {
margin-right: 20px;
}
/* Navbar */
nav {
background: #FFFFFF 0 0 no-repeat padding-box;
display: flex;
align-items: center;
justify-content: space-between;
width: 1760px;
height: 80px;
}
nav ul {
display: flex;
list-style: none;
padding: 0;
margin: 0;
}
nav ul li {
margin-left: 20px;
}
nav img {
height: 60px;
}
/* Mitte */
.nav-item {
margin-left: 50px;
font: normal normal normal 20px/80px Montserrat;
}
.nav-item a {
text-decoration: none;
color: #AF8C6E;
}
.nav-link {
position: relative;
}
.nav-link::after {
content: '';
height: 4px;
width: 100%;
background: #C59E7C;
display: block;
position: absolute;
left: 0;
bottom: -4px;
opacity: 0;
transition: all 0.2s;
pointer-events: none;
}
.nav-link:hover::after {
opacity: 1;
}
/* Buttons rechts */
.icon-item {
margin-left: 10px;
}
.icon-button {
background-color: #C59E7C;
border: none;
border-radius: 30px;
padding: 15px;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
}
.icon-button img {
width: 24px;
height: 24px;
}
.burger-menu-button {
color: #C59E7C;
background: none;
border: none;
padding: 15px;
font-size: 24px;
cursor: pointer;
display: none;
}
#icon-booking {
background-color: #BEA56C !important;
}
.nav-visible {
display: flex !important;
}
/* Responsive */
@media screen and (max-width: 912px) {
nav ul {
display: none;
flex-direction: column;
align-items: center;
width: 100%;
}
nav ul li {
margin: 10px 0;
}
.burger-menu-button {
display: inline-block;
}
}
JavaScript
const burgerMenu = document.getElementById("burger-menu");
const logo = document.getElementById("icon-logo");
const navUl = document.querySelector("nav ul");
function toggleMenu() {
toggleLogo();
toggleBurgerMenuIcon();
toggleNavVisibility();
}
function toggleLogo() {
if (logo.src.includes("logo-small.svg")) {
logo.src = "../images/logo-filled.svg";
} else {
logo.src = "../images/logo-small.svg";
}
}
function toggleBurgerMenuIcon() {
if (burgerMenu.innerHTML === "☰") {
burgerMenu.innerHTML = "✖";
} else {
burgerMenu.innerHTML = "☰";
}
}
function toggleNavVisibility() {
navUl.classList.toggle("nav-visible");
}
burgerMenu.addEventListener("click", toggleMenu);