При нажатии на значок гамбургера на мобильных устройствах панель навигации не отображается
Итак, я делаю веб-приложение на django, и я разработал шаблон для отображения навигационной панели, когда пользователь нажимает на значок гамбургера, но в настоящее время при нажатии на значок ничего не отображается.
HTML :
<nav>
<ul class="show">
<li><a href="#whatwedo">What We Do?</a></li>
<li><a href="#pricing">Pricing</a></li>
<li><a href="#about-page">About Us</a></li>
<li><a href="#contact" class="contact-btn">Contact Us</a></li>
</ul>
</nav>
<div class="hamburger-menu">
<div class="bar"></div>
<div class="bar"></div>
<div class="bar"></div>
</div>
CSS :
@media only screen and (max-width: 768px) {
nav {
display: none;
/* Hide the nav by default on mobile */
}
.hamburger-menu {
position: absolute;
top: 0;
right: 0;
display: block;
cursor: pointer;
padding: 10px;
z-index: 1001;
/* Ensure the hamburger icon is above other elements */
}
.bar {
width: 25px;
height: 3px;
background-color: #ffffff;
margin: 5px 0;
}
/* Show the nav links when hamburger icon is clicked */
nav ul {
margin: 0;
padding: 0;
list-style: none;
transition: transform 0.3s ease;
/* Add transition property */
transform: translateY(-100%);
position: fixed;
top: 0;
right: 0;
background-color: #ffffff;
border: 1px solid #ccc;
padding: 10px;
z-index: 1000;
}
nav ul.show {
transform: translateY(0);
/* Slide down to show menu */
}
}
/* Media query for larger screens (computers) */
@media only screen and (min-width: 769px) {
.hamburger-menu {
display: none;
/* Hide hamburger icon on larger screens */
}
nav {
display: block;
/* Show the nav on larger screens */
}
}
JavaScript :
<script>
document.addEventListener("DOMContentLoaded", function () {
console.log('DOMContentLoaded event fired');
var hamburgerMenu = document.querySelector('.hamburger-menu');
var navMenu = document.querySelector('.container nav ul');
console.log('Hamburger menu:', hamburgerMenu);
console.log('Nav menu:', navMenu);
// Check if elements are found
if (hamburgerMenu && navMenu) {
console.log('Event listener added to hamburger menu');
hamburgerMenu.addEventListener('click', function () {
console.log('Hamburger menu clicked');
navigation menu
navMenu.classList.toggle('show');
console.log('Nav menu visibility toggled');
});
} else {
console.error('Unable to find hamburger menu or nav menu');
}
});
</script>
Я поставил несколько консольных операторов, чтобы посмотреть, есть ли проблема с javascript, и я не думаю, что она есть, так как выходы были, что я ожидал : Вывод на экран консоли
Также я попытался заглянуть в свои html и css, чтобы посмотреть, нет ли там какой-нибудь проблемы, которую я упустил из виду, но не могу ее найти.
Используйте как показано ниже.
nav ul.show {
display: block !important;
transform: translateY(0);
/* Slide down to show menu */
}
Класс show
переключается на элементе ul
внутри вашего элемента nav
. Однако для элемента nav
установлено значение display: none
, и ваш JS-код никогда не изменит его. Вы должны изменить свойство display для nav
также, иначе он не будет виден на экранах определенных размеров.