[英]How can I rotate an element to 180deg the back to 0deg using the same button in javascript
[英]Rotate Font-Awesome Icon 180deg Inside Dropdown Button
我創建了一些自定義按鈕樣式,並使用bootstraps下拉菜單將它們轉換為下拉菜單。 當我單擊按鈕時,我希望在下拉菜單打開時,里面的字體超贊圖標旋轉180度,並在按鈕失去活動/焦點后以相反的方式旋轉180度,回到其原始位置。
我已經能夠正確執行的代碼將圖標旋轉180度,使其朝上。 但是我無法使其向下旋轉。 另外,我有這兩個css類。 我一直將它們注釋掉,因為激活它們只會增加怪異的淡入淡出效果。 代碼如下。
HTML:
<div class="dropdown">
<a id="dropdown1" class="hlo-btn-round-dropdown dropdown-toggle " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button" tabindex="1">Dropdown <i class="fa fa-chevron-down fa-color icon-rotates" aria-hidden="true"></i></a>
<ul class="dropdown-menu" aria-labelledby="dropdown1">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</div>
CSS:
.icon-rotates {
-moz-transition: all 1s linear;
-webkit-transition: all 1s linear;
transition: all 1s linear;
}
.icon-rotates.rotate {
-moz-transition: rotate(180deg);
-webkit-transition: rotate(180deg);
transition: rotate(180deg);
}
JS:我一直在講課,因為它們使一切變得怪異。
$('.hlo-btn-round-dropdown').click(function(){
if($(this).css("transform") == 'none') {
$(this).children().css('transform', 'rotate(180deg)');
} else {
$(this).children().css('transform', 'none');
}
});
預先感謝您的任何回答! jQuery似乎總是給我帶來問題,或者也許我組合了太多旋轉此idk的方法。
實際上,您可以使用bootstrap Class來實現。您不必編寫額外的jquery代碼。
您是否注意到下拉列表打開時有一個額外的類(打開)? 因此,當.dropdown具有.open類(例如.dropdown.open)時,則需要向.icon-rotates(例如.dropdown.open .icon-rotates)添加額外的規則。
.icon-rotates { -moz-transition: all 1s linear; -webkit-transition: all 1s linear; transition: all 1s linear; } .icon-rotates.rotate { -moz-transition: rotate(180deg); -webkit-transition: rotate(180deg); transition: rotate(180deg); } .dropdown.open .icon-rotates { -webkit-transform: rotate(180deg); transform: rotate(180deg); }
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <div class="dropdown"> <a id="dropdown1" class="hlo-btn-round-dropdown dropdown-toggle " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button" tabindex="1">Dropdown <i class="fa fa-chevron-down fa-color icon-rotates" aria-hidden="true"></i></a> <ul class="dropdown-menu" aria-labelledby="dropdown1"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </div>
由於您使用的是引導程序,因此可以捕獲下拉菜單的hiddden.bs.dropdown
事件,以了解下拉菜單關閉的時間,並將圖標旋轉回正常位置-
$(".dropdown").on("hidden.bs.dropdown", function(){
$(this).find('.hlo-btn-round-dropdown').children().css('transform', 'none');
});
這里是一個工作的jsfiddle看到這個動作- https://jsfiddle.net/schikara/qre4wpcb/1/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.