gpt4 book ai didi

javascript - 适用于较小屏幕的汉堡菜单,包括 JavaScript/jQuery

转载 作者:行者123 更新时间:2023-12-03 02:25:43 24 4
gpt4 key购买 nike

我制作了响应式菜单。在桌面上,导航在标题中水平显示:主页、图库、关于等。对于较小的屏幕,我制作了汉堡包图标,单击后,导航应展开。使用 CSS,我在较小的屏幕上隐藏了导航,并对其展开时的外观进行了样式化 - 它将垂直显示。

使用 javascript,我创建了一个函数,当您单击汉堡包图标时展开导航,并在再次单击时折叠导航。

它有效。

问题是:如果我单击汉堡包图标显示导航,然后再次隐藏它,当我将浏览器窗口放大到桌面大小时,导航将不会再次在标题中水平显示,它仍然隐藏。

请帮忙!

$('#drawer').click(function() {
$('header nav').toggle(1);
if ($(this).text() == 'Hide') {
$(this).text('Show');
} else {
$(this).text('Hide');
}
});
  #drawer {
display: none;
}

header nav {
float: right;
}

nav li {
float: left;
}

@media screen and (max-width: 768px) {
#drawer {
display: inline-block;
float: right;
}
header nav {
display: none;
float: none;
padding-top: 120px;
/* Hamburger icon is in the header on the right side, and nav expands vertically in the center of the screen below the hamburger icon, that's why I put the padding 120px, to make nav below the icon*/
text-align: center;
}
nav li {
float: none;
}
nav li a {
display: inline-block;
margin-left: 0px;
margin-top: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img id="drawer" src="images/drawer.png" alt="Drawer">
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="portfolio.html">Portfolio</a></li>
<li><a href="tutorials.html">Tutorials</a></li>
</ul>
</nav>

最佳答案

你是我在这里帮助的第一个人,所以我希望我能说清楚这一点,并且这是有实际帮助的。

我相信您的问题在于使用toggle()。此函数将向您的导航元素添加内联样式,如果不使用 !important,则无法使用 CSS 覆盖这些样式。

我已经使用toggleClass()组合了一个解决方案,它不会添加任何内联样式,而是应用一个类来显示您的导航元素,同时仍然允许使用媒体查询的相反效果进行覆盖。我还想补充一点,我并不真正建议使用纯粹执行 display: block 的类,但它说明了这一点。

<!DOCTYPE html>
<html>
<head>
<script
src="http://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<style>
#drawer {
display: none;
}

header nav {
float: right;
}

nav li {
float: left;
}

@media screen and (max-width: 768px) {
#drawer {
display: inline-block;
float: right;
}

header nav {
display: none;
float: none;
padding-top: 120px; /* Hamburger icon is in the header on the right side, and nav expands vertically in the center of the screen below the hamburger icon, that's why I put the padding 120px, to make nav below the icon*/
text-align: center;
}

nav li {
float: none;
}

nav li a {
display: inline-block;
margin-left: 0px;
margin-top: 10px;
}
}

.display {
display: block;
}
</style>
</head>
<body>
<header>
<img id="drawer" src="images/drawer.png" alt="Drawer">
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="portfolio.html">Portfolio</a></li>
<li><a href="tutorials.html">Tutorials</a></li>
</ul>
</nav>
</header>
<script>
$('#drawer').click(function() {
$('header nav').toggleClass('display');

if( $(this).text() == 'Hide' ) {

$(this).text('Show');

} else {
$(this).text('Hide');

}
});
</script>
</body>
</html>

我希望这有用,并感谢您成为我的 stackoverflow 豚鼠。

关于javascript - 适用于较小屏幕的汉堡菜单,包括 JavaScript/jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48962405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com