【发布时间】:2019-07-06 16:37:47
【问题描述】:
我有一个侧边栏,可以在桌面视图上使用 javscript 滑出 250 像素。当谈到移动视图时,我希望侧边栏占据 100% 的宽度。我正在尝试在 Javascript 中使用媒体查询,但无论我做了什么更改,它似乎都会覆盖我在桌面视图上的侧边栏的样式。
HTML
<nav class="navbar">
<div id="toggle-btn" class="sidemenu-btn">
<i class="fas fa-bars"></i>
</div>
<div id="toggle-nav" class="navbar-items animated fadeInLeft delay-1s">
<a href="#home">Home</a>
<a href="#about-me">About</a>
<a href="#my-skills">Skills</a>
<a href="#my-portfolio">Portfolio</a>
<a href="#contact-me">Contact</a>
</div>
</nav>
CSS
.navbar {
height: 100%;
width: 0;
position: fixed;
background: #141313;
}
.navbar .sidemenu-btn {
font-size: 2.5rem;
padding: 3rem 0;
text-align: center;
margin-left: 1rem;
cursor: pointer;
color: #141313;
}
.navbar .navbar-items {
display: flex;
flex-direction: column;
text-align: center;
display: none;
margin-left: 1rem;
}
.navbar .navbar-items a {
text-decoration: none;
color: white;
padding: 1.2rem 0;
font-weight: 400;
font-size: 1.2rem;
text-transform: uppercase;
}
.navbar .navbar-items a:hover {
text-decoration: line-through;
}
@media screen and (max-width: 768px) {
.navbar {
position: relative;
}
}
JS
const toggleBtn = document.querySelector("#toggle-btn");
const toggleNav = document.querySelector(".navbar");
const togglenavItems = document.querySelector('.navbar-items');
toggleBtn.addEventListener("click", sideMenu);
toggleBtn.addEventListener("click", mediaQuery);
function sideMenu() {
if (toggleNav.style.width === "250px") {
toggleNav.style.width = "0px";
} else {
toggleNav.style.width = "250px";
}
}
function mediaQuery() {
const x = window.matchMedia('(max-width: 768px)');
const y = document.querySelector('.navbar');
if (x.matches && y.style.width === "100%") {
y.style.width = "0px";
} else {
y.style.width = "100%";
}
}
【问题讨论】:
-
是否有某些原因您不能将侧边栏设置为 100%,然后使用最小宽度媒体查询,使其最大宽度为 250 像素?只是想了解您的限制,但这似乎是一个更容易且不那么混乱的解决方案。
-
你能举个例子吗?我只希望边栏在桌面上只有 250 像素,在移动设备上只有 100% 宽度
标签: javascript html css media-queries sidebar