【问题标题】:Active link won't toggle on click. How to solve?活动链接不会在点击时切换。怎么解决?
【发布时间】:2014-05-26 14:08:14
【问题描述】:

我正在制作一个汉堡风格的菜单图标,我想在点击时将其动画化为“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

【问题讨论】:

  • 如果您使用 javascript 添加类,它应该显示#nav-toggle.active:active 是一个伪选择器。
  • 这里可以正常工作jsfiddle.net/viphalongpro/rf2qD/4:active 是一个状态选择器,而不是一个类。

标签: javascript jquery html css


【解决方案1】:

替换

:active 

.active

在你的 CSS 中

Demo with your code

【讨论】:

    【解决方案2】:

    您的代码很好。不过也有几点。 1)您忘记在小提琴中包含 jQuery 库。 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2022-12-31
      • 2014-06-16
      • 1970-01-01
      相关资源
      最近更新 更多