gpt4 book ai didi

javascript - 更改屏幕大小时更改功能区菜单

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:00 24 4
gpt4 key购买 nike

目前我有这个菜单

var navBtnActive = true; // menu opened?

$(document).ready(function () {
$('body').click(function (e) {
if ($(e.target).attr('id') !== 'navContainer') { // close menu when clicking outside
$("#navContent").slideUp();
navBtnActive = false;
}
});

$("#navBtn").click(function (e) { // toggle the menu when clicking an item
e.stopPropagation();

navBtnActive = !navBtnActive;
$("#navContent").slideToggle();
});
});
#header{
height: 21px;
background-color: #129934;
}

#navContainer {
position: relative;
display: inline-block;
}

.toggleBtn{
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="header">
<div id="navContainer">
<button id="navBtn">Menu</button>
<div id="navContent">
<button class="toggleBtn">Button 1</button>
<button class="toggleBtn">Button 2</button>
<button class="toggleBtn">Button 3</button>
</div>
</div>
</div>

所以这个菜单可以处理移动设备或类似设备。例如,当有大屏幕时,我希望菜单看起来像这样

#header{
height: 21px;
background-color: #129934;
}
<div id="header">
<button>Button 1</button>
<button>Button 2</button>
<button>Button 3</button>
</div>

是否可以在降低屏幕尺寸时将菜单切换到较小的菜单?

最佳答案

更新 您可能已经注意到,当您单击按钮以隐藏导航按钮然后调整大小时,它们都被隐藏了。原因是 jQuery slideup() 添加了一个内联样式语句 display: none;。现在您可以使用 !important 删除它,但这就是事情开始变得困惑的地方。

所以这是另一种解决方案,它比前一种方法更好。 jsFiddle to resize

其实更简单。 javascript/jQuery 所做的只是添加/隐藏(切换)类名 hidden。动画(现在)都可以用 CSS3 来完成。就像这样,无论视口(viewport)大小如何,您始终可以完全控制外观。希望这对您有所帮助,编码愉快。

$(document).ready(function () {
$("#navBtn").click(function (event) {
event.preventDefault();
event.stopPropagation();

$("#navContent").toggleClass('hidden');
});
});
#header{
height: 21px;
background-color: #129934;
}

#navBtn {
display: none;
}

#navContent button {
display: inline-block;
}

#navContainer {
position: relative;
display: inline-block;
}

@media screen and (max-width: 540px){
#navBtn {
display: block;
}

#navContent {
height: auto;
transform: scaleY(0);
transform-origin: top;
transition: transform 0.3s ease-in-out;
}

#navContent.hidden {
transform: scaleY(1);
}

#navContent button {
display: block;
}
}
<div id="header">
<div id="navContainer">
<button id="navBtn">Menu</button>
<div id="navContent">
<button class="toggleBtn">Button 1</button>
<button class="toggleBtn">Button 2</button>
<button class="toggleBtn">Button 3</button>
</div>
</div>
</div>

上一个(第一个)解决方案:查看this fiddle您可以在其中调整视口(viewport)大小并查看会发生什么:

这是您第一个示例中的代码,只需稍作改动即可用于移动设备或桌面设备:

var navBtnActive = true; // menu opened?

$(document).ready(function () {
$('body').click(function (e) {
if ($(e.target).attr('id') !== 'navContainer') { // close menu when clicking outside
$("#navContent").slideUp();
navBtnActive = false;
}
});

$("#navBtn").click(function (e) { // toggle the menu when clicking an item
e.stopPropagation();

navBtnActive = !navBtnActive;
$("#navContent").slideToggle();
});
});
#header{
height: 21px;
background-color: #129934;
}

#navBtn {
display: none;
}

#navContent button {
display: inline-block;
}

#navContainer {
position: relative;
display: inline-block;
}

@media screen and (max-width: 540px){
#navBtn {
display: block;
}
#navContent button {
display: block;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="header">
<div id="navContainer">
<button id="navBtn">Menu</button>
<div id="navContent">
<button class="toggleBtn">Button 1</button>
<button class="toggleBtn">Button 2</button>
<button class="toggleBtn">Button 3</button>
</div>
</div>
</div>

关于javascript - 更改屏幕大小时更改功能区菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45980806/

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