2016-04-07 18 views
1

Bu işlev neden düzgün çalışmıyor? Her şey olması gerektiği gibi çalışır, ancak toggleClass 3.5ms'lik bir rotada geçiş yapar. Doğru şekilde değişir, ancak hiçbir animasyon gerçekleşmez.jquery toggleSınıfı 3.5 yıl boyunca değişebilir

Aşağıdaki kod, daha karmaşık bir gezinmenin kaba bir örneğidir, ancak fikir aynıdır.

$('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>

teşekkür ederim.

cevap

1

Sen css transition özelliğini kullanarak bunu yapabilirsiniz.

transition :border-radius 350ms; 

Tam kodu:

$('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

Bu benim için daha iyi bir çözüm ve güzel çalışıyor. Teşekkür ederim. – Sergio

+1

Evet, css geçişlerini kullanabiliyorsanız bunu yapın! :) – Taplar

1

jquery ui kullanıyor musunuz? ToggleClass'ın yalnızca jquery ui sürümü bir süre alır.

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

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

+0

değilim hayır ... Bunun farkında değildi. Snippet'e ekleyeyim ve sorunun giderilip giderilmediğine bir bakalım. Teşekkür ederim. – Sergio

+0

jQuery UI ürününü ekledim ve bunu düzeltdim. Teşekkürler Taplar – Sergio

+0

@Sergio Jquery UI'yi kullanmak sorununuzu düzeltebilir. Ancak animasyonun performansı işarete kadar çıkmayacak. Ancak CSS geçişleri GPU'yu kullanır ve size şık bir animasyon verir. –

İlgili konular