活动链接不会在点击时切换。怎么解决?

时间:2014-05-26 05:57:27

标签: javascript jquery html css

我正在制作一个汉堡包式菜单图标,我希望在点击时将其设置为“x”,然后让用户再次单击它以使其返回。但是,如果单击并按住该图标,该图标将仅一直显示动画。

我用来尝试切换活动类的脚本不起作用。

我该如何解决这个问题?

HTML:

<a id="nav-toggle" href="#"><span></span></a>

CSS:

#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
  cursor: pointer;
  border-radius: 1px;
  height: 5px;
  width: 35px;
  background: black;
  position: absolute;
  display: block;
  content: '';
}
#nav-toggle span:before {
  top: -10px; 
}
#nav-toggle span:after {
  bottom: -10px;
}

#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
  transition: all 500ms ease-in-out;
}
#nav-toggle:active span {
  background-color: transparent;
}
#nav-toggle:active span:before, #nav-toggle:active span:after {
  top: 0;
}
#nav-toggle:active span:before {
  transform:rotate(45deg); -ms-transform:rotate(45deg); -webkit-transform:rotate(45deg);
}
#nav-toggle:active span:after {
  transform:rotate(-45deg); -ms-transform:rotate(-45deg); -webkit-transform:rotate(-45deg);
}

jQuery的:

$(document).ready(function(){
  $('#nav-toggle').click( function() {
    if($(this).hasClass('active')) {
      $(this).removeClass('active');
    } else {
      $(this).addClass('active');
    }//
  });
});

此处还有jsFiddle

2 个答案:

答案 0 :(得分:1)

替换

:active 

.active

在你的CSS中

Demo with your code

答案 1 :(得分:0)

你的代码很好。但是有一些观点。 1)你忘了在你的小提琴中加入jQuery Library。 2)您已使用:active伪元素作为样式,其中.active代表class名称

<强> HTML

<a id="nav-toggle" href="#"><span></span></a>

<强> CSS

#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
  cursor: pointer;
  border-radius: 1px;
  height: 5px;
  width: 35px;
  background: black;
  position: absolute;
  display: block;
  content: '';
}
#nav-toggle span:before {
  top: -10px; 
}
#nav-toggle span:after {
  bottom: -10px;
}

#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
  transition: all 500ms ease-in-out;
}
#nav-toggle.active span {
  background-color: transparent;
}
#nav-toggle.active span:before, #nav-toggle.active span:after {
  top: 0;
}
#nav-toggle.active span:before {
  transform:rotate(45deg); -ms-transform:rotate(45deg); -webkit-transform:rotate(45deg);
}
#nav-toggle.active span:after {
  transform:rotate(-45deg); -ms-transform:rotate(-45deg); -webkit-transform:rotate(-45deg);
}

<强>的jQuery

$(document).ready(function(){
$('#nav-toggle').click( function() {
  if($(this).hasClass('active')) {
    $(this).removeClass('active');
  } else {
    $(this).addClass('active');
  }//
});
});

这是您更新的jsfiddle http://jsfiddle.net/rf2qD/5/