- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 HTML、CSS 和 JS 制作了一个汉堡菜单,它工作得非常好,但我想最小化我的 JS 逻辑。
我在 YouTube 上做了一些研究,但每个人的逻辑几乎相同。
看看我的 JS 逻辑,我可以最小化我的 JS 逻辑吗?
如果您有更好的简短的 JS 逻辑,请回答我。
HTML :
<div class="menu-btn">
<div class="hamburger"></div>
</div>
<div class="menu-list">
<ul class="menu-items">
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#skills">Skills</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
JS逻辑:
const hamburgerMenu = document.querySelector(".menu-btn");
const hamburger = document.querySelector(".hamburger");
const menuList = document.querySelector(".menu-list");
const homePage = document.getElementById("#home");
hamburgerMenu.onclick = () => {
hamburger.classList.toggle("active");
menuList.classList.toggle("active");
hamburgerMenu.classList.toggle("active");
};
menuList.onclick = function (e) {
if (e.target.classList !== "menu-btn") {
hamburger.classList.remove("active");
menuList.classList.remove("active");
hamburgerMenu.classList.remove("active");
}
};
最佳答案
仅使用 HTML 和 CSS 就可以更容易地做到这一点。
这是展示概念的最低版本:
.menu-items {
display: none;
}
.menu:hover>.menu-items {
display: flex;
}
<div class="menu">
<div class="hamburger">@</div>
<nav class="menu-items">
<a href="#home">Home</a>
<a href="#about">About</a>
<a href="#skills">Skills</a>
<a href="#contact">Contact</a>
</nav>
</div>
transform: scale
进行过渡的样式示例和
opacity
, 以表明您可以随心所欲。
.menu {
width: max-content;
height: 30px;
}
.hamburger {
width: 20px;
height: 20px;
cursor: pointer;
transform: scale(.8);
transform-origin: left;
}
.hamburger-line {
height: 4px;
width: 30px;
margin-bottom: 3px;
background: #59b;
border-radius: 2px;
}
.menu-items {
display: flex;
flex-direction: column;
border: 1px solid #59b;
border-radius: 3px;
transform: scale(1, 0);
transform-origin: top left;
transition: .2s;
opacity: 0;
}
.menu-items a {
color: #222;
font-size: 14px;
font-family: sans-serif;
padding: 10px;
transition: .5s;
text-decoration: none;
}
.menu-items a:hover {
background: rgba(60, 110, 200, 0.2);
}
.menu:hover>.menu-items {
transform: scale(1);
opacity: 1;
}
<div class="menu">
<div class="hamburger">
<div class="hamburger-line"></div>
<div class="hamburger-line"></div>
<div class="hamburger-line"></div>
</div>
<nav class="menu-items">
<a href="#home">Home</a>
<a href="#about">About</a>
<a href="#skills">Skills</a>
<a href="#contact">Contact</a>
</nav>
</div>
关于javascript - 如何最小化汉堡菜单的 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68599948/
抖音开学季完成任务免费领甜筒、汉堡、随机红包等 打开抖音APP 首页搜索【开学季】下拉页面点击活动进去 完成简单任务即可免费领麦当劳甜筒、吉士汉堡、随机红包等! 活动地址:抖音搜索【开学季
我有一个用于桌面 View 的导航栏和用于移动设备的汉堡菜单,我有一个关于汉堡菜单的问题;汉堡菜单的栏覆盖了部分背景图像,我希望背景图像始终位于汉堡菜单之后。这是我的代码
我想改变抽屉导航的汉堡/箭头图标的颜色。我知道我可以在样式中更改它,但我想在 java 中动态更改它。有人知道怎么做吗? 最佳答案 使用 appcompat-v7:23.0.1 下一个代码对我有用:
我正在使用带有 DrawerLayout 的工具栏。我的工具栏有 2 个 View (按钮),一个在中间,一个靠近右边距。当我使用 getSupportActionBar().setDisplayHo
我正在练习如何制作一个响应式汉堡菜单,但我在两个功能上遇到了麻烦,我想让它发挥作用。 我在汉堡菜单中使用了一个很棒的字体图标,它不想在屏幕大于 480 像素时消失。我得到那个工作的唯一方法是在图标类上
我有一个“移动汉堡包”引导菜单(引导3)。我想关闭使用代码打开的汉堡菜单。 最佳答案 Bytec0de是正确的:$('elem').collapse('hide'); 关于javascript - b
我确定有人问过这个问题,但我似乎找不到不使用 SASS 的示例。我只有一个正在使用的常规 CSS 文件。我希望汉堡菜单更改为较大尺寸的水平菜单。(@media only screen and (min
很长一段时间以来,我一直在我的网站上使用汉堡菜单,这是一个具有绝对定位的全屏导航覆盖层,其中导航打开是(css)高度= 100%并且关闭=“0%”。它基于本教程:https://www.w3schoo
我是一名优秀的程序员,十分优秀!