jQuery 菜单中的效果

jQuery effects in menu

我正在尝试做一个菜单,当你点击其中一个标签时,它会产生一些效果并且 css 会发生变化,但是当我点击另一个标签时,我点击的标签不会返回到第一个状态,因此它保留更改。

这是我的菜单:

<ul id="navbar" class="col-md-24">
  <li><a href="#" class="menu">Home</a></li>
  <li><a href="#" class="menu">About</a></li>
  <li><a href="#" class="menu">Services</a></li>
  <li><a href="#" class="menu">Contact</a></li>
</ul>

这是我的 jQuery:

$('.text').hover(function(){
  $(this).find('.text').slideUp();
});
$('.menu').click(function() {
  $('.menu').not(this).slideDown();
    $(this).animate({
      width: "300px",
      height: "100px",
      'line-height':'60px',
      fontSize: "2em" 
    }).css({
      'border':'none',
      'background':'#fff',
      'padding': '20px 20px',
      'color':'#1b1b1b',
      'border-radius': '5px',
      'text-decoration':'none',
      'overflow': 'hidden'
    });       
  });

那么,当我点击另一个菜单标签时,我之前点击的菜单标签又回到点击前的状态,我该怎么做呢?有人告诉我我应该使用 "active" class 来点击那个,但我不知道如何添加它才能使它起作用。

谢谢

当看到你的 fiddle 时,很难猜到你真正在寻找什么,但我认为它可能是这样的:

您的 HTML 保持原样:

<ul id="navbar" class="col-md-24">
    <li><a href="#" class="menu">Home</a>
    </li>
    <li><a href="#" class="menu">About</a>
    </li>
    <li><a href="#" class="menu">Services</a>
    </li>
    <li><a href="#" class="menu">Contact</a>
    </li>
</ul>

我将神秘的 active-class 添加到您的 CSS 中,放入您想要设置动画的所有值并进行了一些调整。看代码中的注释:

body {
    background-color:#1b1b2b;
}
#navbar {
    text-align: center;
    margin-bottom:80px;
}
ul#navbar {
    width:100%;
    display: block;
}
#navbar li {
    display:inline-block;
    margin: 0 auto;
    vertical-align: top; /* makes the .menus stay at the top */
}
.menu {
    display: inline-block; /* important to animate the width */
    color:white;
    width: 100px; /* put in values so we can animate them */
    background:black;
    padding:10px 20px;
    font-size:16px;
    line-height: 1em; /* put in values so we can animate them */
    height: 1em; /* put in values so we can animate them */
    text-decoration:none;
    letter-spacing:3px;
    text-transform:uppercase;
    border-radius:5px;
    -webkit-transition: all 0.5s;
    -moz-transition: all 0.5s;
    transition: all 0.5s; /* here is the magic: CSS will do the animation*/
    /* when class .active is applied or removed */ 
}
.menu:hover {
    border:none;
    background:#fff;
    padding:20px;
    color:#1b1b1b;
    text-decoration:none;
}
.active { /* the CSS when the .menu is clicked on */
    border: 0 none;
    background:#fff;
    color: #1b1b1b;
    overflow: hidden;
    width: 300px;
    height: 100px;
    line-height: 80px;
    font-size: 2em;
    border-radius:15px;
    padding:20px;
}

现在 JavaScript 可以简单很多:

 $('.menu').click(function () {
     if ($(this).hasClass('active')) {
         $(this).removeClass('active');
         return;
     } else {
         $('.menu').removeClass('active');
             $(this).addClass('active');
     }
 });

现在只有 class .active 应用于 .menu 链接并从中删除。 CSS 会完成剩下的工作。

See the FIDDLE.