javascript - 将字体-Awesome 图标旋转 180 度在下拉按钮内

标签 javascript jquery css twitter-bootstrap-3 font-awesome

我创建了一些自定义按钮样式,并使用引导下拉菜单类将它们转换为下拉菜单。当我单击按钮时,我希望在下拉菜单打开时内部的 font-awesome 图标旋转 180 度,并在按钮失去事件/焦点后以相反的方式旋转 180 度,返回到其原始位置。

我能够将图标向右旋转 180 度,使其指向上方。但我无法让它向下旋转。另外,我有这 2 个 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>

关于javascript - 将字体-Awesome 图标旋转 180 度在下拉按钮内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44078428/

相关文章:

Javascript 创建了太多的输入元素

Javascript 使用正则表达式 trim 链接

javascript - jQuery UI 选择菜单错误

javascript - JQuery 冲突不起作用

jquery - Bootstrap 导航栏显示不正确

html - 列标题和行未使用 Bootstrap 对齐

javascript - Google Timeline Chart 转到重绘位置

javascript - jQuery - 修复动画

html - 不确定长度的文本和 HTML/CSS 中的行 "right"方式

HTML 语义 - <span> 元素和有效性