更改字体真棒箭头子菜单

Change font-awesome arrow submenu

我想在打开的子菜单上将超棒的字体更改为 fa-angle-down 并在折叠的子菜单上放回 fa-angle-left

HTML 和 CSS:

.sidenav li .arrow:before {
    font-size: 1.4em;
    padding-left: 10px;
    padding-right: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<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"/>

<li data-toggle="collapse" data-target="#SubMenuTools" class="collapsed">
    <a href="#/"><i class="fa fa-tasks fa-fw"></i> External Tools <span class="arrow pull-right fa fa-angle-left"></span></a>
</li>
<ul class="sub-menu collapse" id="SubMenuTools">
    <li><a href="">First tool</a></li>
    <li><a href="">Second Tool</a></li>
</ul>

怎么办?应该在 CSS 还是在 jQuery?

您可以将 transformtransition 搭配使用。这样会比用JS简单的把.fa-angle-left换成.fa-angle-down.

效果更好
.sidenav li .arrow {
  transition: transform .25s;
}

.sidenav li.collapsed .arrow {
  transform: rotate(90deg);
}

看看这支笔:http://codepen.io/ptrkcsk/pen/PbGbXW

与 jQuery:

$('a').on('click', function() {
  var expanded = $('#SubMenuTools').hasClass("in");
  if (expanded == true) {
    $('#arrow').removeClass("fa-angle-down");
    $('#arrow').addClass("fa-angle-left");   
  }
  else {
    $('#arrow').removeClass("fa-angle-left");
    $('#arrow').addClass("fa-angle-down");   
  }
});
.sidenav li .arrow:before {
  font-size: 1.4em;
  padding-left: 10px;
  padding-right: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<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"/>

<li data-toggle="collapse" data-target="#SubMenuTools" class="collapsed">
  <a href="#/">
    <i class="fa fa-tasks fa-fw"></i> 
    <span>External Tools</span> 
    <i class="fa fa-angle-left" id='arrow'></i>
  </a>
</li>
<ul class="sub-menu collapse" id="SubMenuTools">
  <li><a href="">First tool</a>
  </li>
  <li><a href="">Second Tool</a>
  </li>
</ul>

您可以使用以下 JQuery 示例。

$(document).ready(function() {
  var expand = false;
  $("#mainMenu").click(function() {
    expand = !expand;
    if (expand) {
      $(this).children("span").removeClass().addClass("fa fa-angle-down");
    } else {
      $(this).children("span").removeClass().addClass(" fa fa-angle-left");
    }
  });
});

DEMO HERE