javascript - 媒体查询 - 当我调整窗口大小时,响应式侧边菜单出现并迅速消失
问题描述
我创建了一个响应式侧边菜单,当我调整浏览器窗口大小时会出现该菜单。我的“问题”如下:当我调整浏览器窗口的大小时,这个侧边菜单会迅速出现和消失,没有点击相应的按钮......在其他情况下,一切正常,只有这个问题困扰着我。
有谁可以告诉我这个问题来自哪里?
var btn = document.querySelector(".toggle-btn");
var nav = document.querySelector(".nav");
btn.addEventListener("click", function () {
btn.classList.toggle("nav-open");
nav.classList.toggle("nav-open");
});
@media screen and (max-width: 1300px) {
html,
body {
margin: 0px;
padding: 0px;
}
.toggle-btn {
height: 30px;
width: 30px;
position: relative;
float: right;
top: 10px;
right: 20px;
cursor: pointer;
z-index: 1000;
}
.toggle-btn span {
height: 3px;
background-color: #2c3e50;
width: 100%;
position: absolute;
top: 20px;
left: 0;
transition: .4s;
}
.toggle-btn span:before {
content: '';
height: 3px;
background-color: #2c3e50;
width: 100%;
position: absolute;
top: -10px;
left: 0;
transition: .4s;
}
.toggle-btn span:after {
content: '';
height: 3px;
background-color: #2c3e50;
width: 100%;
position: absolute;
top: 10px;
left: 0;
transition: .4s;
}
.menu {
height: 1000px;
background-color: #eeebec;
width: 250px;
position: absolute;
right: 0px;
}
.menu a {
color: text-align: center;
display: block;
padding-top: 30px;
}
.nav {
margin-right: -250px;
transition-duration: 0.4s;
}
.nav-open {
margin-right: 0px;
transition-duration: 0.4s;
}
.toggle-btn.nav-open span {
background: rgba(0, 0, 0, 0);
}
.toggle-btn.nav-open span:before {
top: 0;
transform: rotate(45deg);
}
.toggle-btn.nav-open span:after {
top: 0;
transform: rotate(-45deg);
}
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Toggle Button</title>
<link rel="stylesheet" href="btn.css">
</head>
<body>
<div class="toggle-btn">
<span></span>
</div>
<div class="menu nav">
Blah
Blah
Blah
</div>
<script src="btn.js"></script>
</body>
</html>
transform: rotate(45deg);
}
.toggle-btn.nav-open span:after {
top: 0;
transform: rotate(-45deg);
}
}
解决方案
The transition is causing a .4s delay.Remove the transition from the nav element and you wont get the delay
.nav { margin-right: -250px; transition-duration: 0.4s; //remove this }
推荐阅读
- c++ - 在字符串中搜索某些字母...为什么 for 循环不遍历字符串的所有字母?
- django - 以 django 作为后端和 React 作为前端导出多个 PDF 文件的最佳方法
- html - 当我悬停时,Wordpress 上的子菜单不显示
- ionic-framework - 离子服务上的节点版本问题
- windows - 带有 Powershell Send-MailMessage 的 Windows 批处理 - 一半的换行符未显示
- php - 从数组中获取重复的下一个值的计数并将其存储到其他数组
- csv - 如何在 Neo4j 中从外部网站导入 csv?
- amazon-web-services - 如何从 EventBridge 定位 http api 网关或 ALB
- ios - 目标 C 显示最近的问题未定义的符号:_OBJC_CLASS_$_FIRApp
- excel - 如何在excel vba中将范围分配给命名范围?