2016-04-07 7 views
1

この機能が正しく機能しないのはなぜですか?トグルクラスが3.5msの間にトグルすることを除いて、すべてが正常に動作します。正しく切り替えられますが、アニメーションは発生しません。jquery toggleClassを3.5msに渡って

このコードは、より複雑なナビゲーションの概略図ですが、そのアイデアは同じです。

$('ul#menu-main-menu li:nth-child(2) a').click(function() { 
 
     $('ul#menu-main-menu').toggleClass('nav-border', 350); 
 
    });
ul#menu-main-menu { 
 
    padding: 20px; 
 
    border-radius: 20px; 
 
    border: 1px solid #ddd; 
 
} 
 

 
li { 
 
    display: inline-block; 
 
    margin: 0 10px 0 0; 
 
    cursor: pointer; 
 
} 
 

 
.nav-border { 
 
    border-radius: 20px 20px 0 0 !important; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.0-rc.1/jquery-ui.min.js"></script> 
 
<ul id='menu-main-menu'> 
 
    <li> 
 
    <a> First</a> 
 
    </li> 
 
    <li> 
 
    <a> Second</a> 
 
    </li> 
 
    <li> 
 
    <a> Third</a> 
 
    </li> 
 
</ul>

すべてのいただきありがとうございます。

答えて

1

あなたはcss transitionプロパティを使用してそれを行うことができます。

transition :border-radius 350ms; 

全コード:

$('ul#menu-main-menu li:nth-child(2) a').click(function() { 
 
     $('ul#menu-main-menu').toggleClass('nav-border', 350); 
 
    });
ul#menu-main-menu { 
 
    padding: 20px; 
 
    border-radius: 20px; 
 
    border: 1px solid #ddd; 
 
    transition :border-radius 350ms; 
 
} 
 

 
li { 
 
    display: inline-block; 
 
    margin: 0 10px 0 0; 
 
    cursor: pointer; 
 
} 
 

 
.nav-border { 
 
    border-radius: 20px 20px 0 0 !important; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id='menu-main-menu'> 
 
    <li> 
 
    <a> First</a> 
 
    </li> 
 
    <li> 
 
    <a> Second</a> 
 
    </li> 
 
    <li> 
 
    <a> Third</a> 
 
    </li> 
 
</ul>

+1

これは私にとっては優れたソリューションであり、美しく機能します。ありがとうございました。 – Sergio

+1

ええ、あなたはcssのトランジションを使用することができます! :) – Taplar

1

jqueryを使用していますか? toggleClassのjquery UIバージョンのみが継続時間をとります。

http://api.jquery.com/toggleClass/

http://api.jqueryui.com/toggleClass/

+0

全く私は...私はそれに気づいていなかったではありませんよん。スニペットに追加して問題が解決するかどうかを確認してください。ありがとうございました。 – Sergio

+0

jQuery UIを追加し、それを修正しました。 Thanks Taplar – Sergio

+0

@Sergio Jquery UIを使用すると問題が解決する場合があります。しかし、アニメーションのパフォーマンスは最大になりません。しかし、CSSのトランジションはGPUを使用して、洗練されたアニメーションを提供します。 –

関連する問題