У меня есть простая навигация для разрешения менее 757 пикселей. Я использовал бутстрап и чистый JavaScript. если я изменяю размер своего настольного браузера, он работает, но в мобильном браузере он не работает, даже на скрипке он работает, но в реальном мобильном браузере он не работает (я загрузил проект на сервер)
теперь он не работает на рабочем столе, либо я не могу удалить класс d-none для ссылок
HTML-код
<html>
<head>
<link rel = "stylesheet" href = "https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity = "sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin = "anonymous">
<link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity = "sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin = "anonymous">
</head>
<body>
<header>
<div class = "clearfix mx-3 my-2 d-md-none">
<label class = "float-left">
<i class = "fas fa-bars fa-2x p-1" role = "button" id = "sign-one" onclick = "show()"></i>
<i class = "fas fa-times fa-2x d-none p-1" role = "button" id = "sign-two" onclick = "hide()"></i>
</label>
</div>
<div id = "my-menu">
<ul class = "list-unstyled d-none" id = "links">
<p><a href = "/units" class = "text-white">واحدها</a><p>
<p> <a href = "/fruits" class = "text-white">محصولات</a></p>
<p> <a href = "/pages/درباره-ما"
class = "text-white">درباره ما</a></p>
<p> <a href = "/all" class = "text-white">اخبار</a></p>
<p> <a href = "/contact" class = "text-white">ارتباط با ما</a></p>
</ul>
</div>
</header>
</body>
</html>
css
#my-menu{
position: relative;
}
#links{
position: absolute;
padding: 30px 25px;
border-radius: 7px;
background-color: #3CB371;
text-align: center;
color: white;
transition:all .5s ease;
z-index: 10;
}
JavaScript
function show() {
document.getElementById("links").classList.toggle('d-none');
document.getElementById('sign-one').classList.toggle('d-none');
document.getElementById('sign-two').classList.toggle('d-none');
}
function hide() {
document.getElementById("links").classList.toggle('d-none');
document.getElementById('sign-one').classList.toggle('d-none');
document.getElementById('sign-two').classList.toggle('d-none');
}
вот ссылка jsfiddle
заранее спасибо
последний комментарий этой ссылки помог мне https://stackoverflow.com/questions/52751435/jquery-show-wont-turn-bootstrap-d-none-class-visible
Удалить d-md-none
из <div class = "clearfix mx-3 my-2 d-md-none">
спасибо @John, но я не хочу, чтобы полосы (значок fontawesome) отображались в разрешении md, только в разрешении xs и sm
Я немного изменил ваш код. рабочая демонстрация jsfiddle
HTML
<html>
<head>
<link rel = "stylesheet" href = "https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity = "sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin = "anonymous" />
<link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity = "sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin = "anonymous" />
</head>
<body>
<header>
<div class = "clearfix mx-3 my-2">
<label class = "float-left d-none">
<i class = "fas fa-bars fa-2x p-1" role = "button" id = "sign-one" onclick = "toggle()"></i>
<i class = "fas fa-times fa-2x d-none p-1" role = "button" id = "sign-two" onclick = "toggle()"></i>
</label>
</div>
<div id = "my-menu">
<ul class = "list-unstyled" id = "links">
<li>
<a href = "/units" class = "text-white">واحدها</a>
<p></p>
<p><a href = "/fruits" class = "text-white">محصولات</a></p>
<p><a href = "/pages/درباره-ما" class = "text-white">درباره ما</a></p>
<p><a href = "/all" class = "text-white">اخبار</a></p>
<p><a href = "/contact" class = "text-white">ارتباط با ما</a></p>
</li>
</ul>
</div>
</header>
</body>
</html>
js
const navIcon = document.querySelector('.float-left')
const menu = document.querySelector('#my-menu')
const signOne = document.getElementById('sign-one');
const signTwo = document.getElementById('sign-two');
function toggle() {
signOne.classList.toggle('d-none');
signTwo.classList.toggle('d-none');
menu.classList.toggle('d-none')
}
function responsive(e) {
if (window.innerWidth < 757) {
navIcon.classList.remove('d-none')
menu.classList.add('d-none')
// If sign-two not hidden then menu shown on less then 757px screen
if (!signTwo.classList.contains('d-none')) {
menu.classList.remove('d-none')
}
} else {
navIcon.classList.add('d-none')
menu.classList.remove('d-none')
}
}
window.addEventListener('resize', responsive);
window.addEventListener('load', responsive);
спасибо @rahad, этот код добавляет дополнительное белое видимое пространство при обычной навигации, когда разрешение выше 757.
Затем вы должны удалить `mx-3 my-2` из div-оболочки значков, то есть: clearfix div. Затем добавьте эти классы во внутренний тег label.
спасибо @Rahad, я принимаю ваш ответ, в любом случае классы свертывания начальной загрузки более эффективны, чем использование d-none и javascript, чтобы получить то, что я намеревался, спасибо за то, что вы поделились своими знаниями
Не могли бы вы уточнить ваше требование? Вы хотите, чтобы раскрывающаяся навигация отображалась по умолчанию на рабочем столе и скрывалась при разрешении менее 757 пикселей?