为什么按钮在第一次单击时没有响应,以及为什么菜单在缩减到桌面时消失
Why doesn't the button respond in the first click, and Why the menu disappear when it scale back to desktop
我的移动导航遇到了一些问题。
首先,下拉菜单不会响应第一次点击,但它会在第二次点击和之后的每次点击时开始响应。
其次,当我将浏览器缩放回桌面版本时,导航将消失。
以下是我的代码在 Codepen 中的设置方式:http://bit.ly/1Bxskho
.HTML
<nav id="main-nav">
<a id="mobile-btn">Mobile Menus</a>
<ul>
<li><a href="index.html" target="_self" class="visited">Home</a></li>
<li><a href="architectures.html" target="_self">Architectures</a></li>
<li><a href="nature_phenomenons.html" target="_self">Nature's Phenomenons</a></li>
</ul>
</nav>
.CSS
#main-nav{
float: right;
}
#mobile-btn{
display: none;
text-indent: 0;
margin: 20px;
background: url(../images/sprite.png) no-repeat -25px 0;
}
#main-nav ul{
margin: 25px 0 0 0;
}
#main-nav ul li{
display: inline-block;
padding-left: 20px;
}
#main-nav ul li a{
display: block;
color: #29abe1;
font-family: 'Muli', san-serif;
font-weight: 300;
font-size: 1.1em;
}
#main-nav ul li a:hover, #main-nav ul li a.visited{
color: #21b573;
}
@media screen and (max-width: 780px) {
/* #main-nav & #mobile-btn */
#mobile-btn{
display: block;
background: url(../images/sprite@2x.png) no-repeat -25px 0;
background-size: 200px 200px;
width: 30px;
height: 20px;
}
#main-nav:hover #mobile-btn, #mobile-btn:hover{
cursor: pointer;
}
#main-nav ul, #main-nav ul li, #main-nav ul li a{
width: 100%;
}
#main-nav ul{
background-color: #fff;
position: absolute;
top: 60px;
left: 0;
margin: 0;
display: none;
-webkit-box-shadow: 0 2px 3px #21b573;
-moz-box-shadow: 0 2px 3px #21b573;
-ms-box-shadow: 0 2px 3px #21b573;
-o-box-shadow: 0 2px 3px #21b573;
box-shadow: 0 2px 3px #21b573;
}
#main-nav ul li{
padding: 0;
border-top: 1px solid #21b573;
}
#main-nav ul li a{
text-align: center;
padding: 20px 0;
}
}
爪哇语
$('#mobile-btn').toggle(function(e){
e.preventDefault();
$(this).click(function(){
$('#main-nav ul').stop().slideDown();
$('#main-nav').css({"background-color": "#21b573"});
$('#mobile-btn').css({"background-position": "-65px 0"});
})
}, function(){
$(this).click(function(){
$('#main-nav ul').stop().slideUp();
$('#main-nav').css({"background-color": "#fff"});
$('#mobile-btn').css({"background-position": "-25px 0"});
})
});
试试这个代码笔
您使用的toggle
函数从 1.8 中弃用并从 1.9 中删除(还有另一种同名但功能不同的方法)
$(document).ready(function() {
var open = false;
function sliding(){
if(open){
$('#main-nav ul').stop().slideDown();
$('#main-nav').css({"background-color": "#21b573"});
$('#mobile-btn').css({"background-position": "-65px 0"});
}
else{
$('#main-nav ul').stop().slideUp();
$('#main-nav').css({"background-color": "#fff"});
$('#mobile-btn').css({"background-position": "-25px 0"});
}
open = !open;
}
$('#mobile-btn').click(function(){
sliding();
})
}); //end ready
创建元素时,该元素将应用CSS属性。这些属性可以通过:
- 从父级继承
- 命名类的应用
- 元素的样式属性的显式设置
当您查询元素的 style 属性时,您得到的是通过以前的样式应用程序显式设置的,与通过其他机制对元素生效的 CSS 属性无关。
更改 CSS 时,您正在访问其样式属性。 第一次点击初始化style
,第二次点击改变它。
要解决此问题,请将要更改为的属性放在另一个类规则中,然后使用 jQuery 的 toggleClass()
方法来添加和删除该类。
相关文章:
- 为什么引导程序下拉菜单只有在包含bootstrap-responsive.css时才起作用
- 为什么我的引导程序的下拉菜单不起作用
- 为什么我的修复菜单在滚动时无法顺利运行
- 为什么我的响应CSS菜单会迫使页面内容向上跳转
- 为什么我的下拉菜单在本地服务器上可以工作,但当我推到heroku时却不能
- 可访问性:为什么 Jquery 菜单明确将菜单项 tabindex 设置为 -1
- 为什么我的菜单没有't下拉列表
- 为什么谷歌图表没有右键单击菜单
- 为什么jquery是悬停的,在下拉菜单上滑动功能闪烁
- 悬停菜单关闭孩子时,当我尝试将鼠标移动到它时.为什么?[JsFiddle]
- 为什么我的 html 下拉菜单和按钮不可点击
- 为什么下拉菜单不起作用
- 为什么我的下拉菜单代码不起作用
- 为什么我将鼠标悬停在项目上时无法更改下拉菜单颜色
- 为什么导航菜单上的当前页面不会保持不变
- 为什么文本粘在CSS无序列表菜单中的图像下方
- 为什么菜单背景颜色没有改变
- 为什么菜单背景颜色不能改变
- 为什么按钮在第一次单击时没有响应,以及为什么菜单在缩减到桌面时消失
- 为什么菜单JavaScript效果不起作用