目前我有这个菜单
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>
&#13;
所以这个菜单会处理移动设备或类似的东西。当我有一个大屏幕时,我希望菜单看起来像这样,例如
#header{
height: 21px;
background-color: #129934;
}
&#13;
<div id="header">
<button>Button 1</button>
<button>Button 2</button>
<button>Button 3</button>
</div>
&#13;
在降低屏幕尺寸时,是否可以将菜单切换为较小的菜单?
答案 0 :(得分:1)
更新您可能已经注意到,当您单击按钮隐藏导航按钮然后调整大小时,它们都会被隐藏。原因是jQuery slideup()
添加了内联式的说法display: none;
。现在你可以使用!important
删除它,但这就是事情开始变得混乱的地方。
所以这是另一个解决方案,它将是前一个解决方案的更好方法。 jsFiddle to resize
实际上它更简单。所有javascript / jQuery都会添加/隐藏(切换)类名hidden
。动画(这几天)都可以用CSS3完成。就像这样,无论视口大小是多少,你都可以完全控制外观。希望这有帮助,快乐编码。
$(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,您可以在其中调整视口大小,看看会发生什么:
这是您的第一个示例中的代码,只需稍加更改就可以将其用于移动设备或桌面:
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>
答案 1 :(得分:0)
如评论中所述,您可以使用media query更改按钮的对齐方式,如下所示:
@media (max-width: 960px) {
#navContainer {
display: flex;
}
#navContent {
display: flex;
}
实施例