【问题标题】:Rotate Font-Awesome Icon 180deg Inside Dropdown Button在下拉按钮内旋转字体-真棒图标 180 度
【发布时间】:2017-05-19 20:21:37
【问题描述】:

我创建了一些自定义按钮样式,并使用引导程序下拉类将它们转换为下拉菜单。当我单击按钮时,我希望里面的字体真棒图标在下拉菜单打开时旋转 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 的方法。

【问题讨论】:

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


    【解决方案1】:

    其实用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>

    【讨论】:

    • 兄弟!你真是个天才!在运行 sn-p 之前阅读代码看起来完全行不通。我实际上并没有得到它,但无论如何。
    【解决方案2】:

    由于您使用的是引导程序,因此您可以捕获下拉菜单的 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-09
      • 2014-11-28
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多