materializeCSS可折叠活动更改图标。

时间:2015-12-26 14:58:24

标签: jquery css materialize

我正在寻找可折叠的一些帮助我试图在标题处于活动状态时更改标题但是似乎无法解决问题,如果我点击另一个标题而不关闭第一个标题显示正确的图标

这是一个包含我的问题示例的codepen。 http://codepen.io/FPC/pen/xZEWVY

这是我的代码:

<div class="container">
  <div class="row">
    <div class="col s6">
      <ul class="collapsible popout" data-collapsible="accordion">
        <li>
          <div class="collapsible-header">
            <i class="material-icons right more">expand_more</i>
            <i class="material-icons right less" style="display: none">expand_less</i>
            Article Title
          </div>
          <div class="collapsible-body">
            <p>
              Content Snipit        
            </p>
          </div>
        </li>
        <li>
          <div class="collapsible-header">
            <i class="material-icons right more">expand_more</i>
            <i class="material-icons right less" style="display: none">expand_less</i>
            Article Title
          </div>
          <div class="collapsible-body">
            <p>
              Content Snipit
            </p>
          </div>
        </li>
        <li>
          <div class="collapsible-header">
            <i class="material-icons right more">expand_more</i>
            <i class="material-icons right less" style="display: none">expand_less</i>
            Article Title
          </div>
          <div class="collapsible-body">
            <p>
              Content Snipit
            </p>
          </div>
        </li>
      </ul>
    </div>
  </div>
</div>

这是我正在使用的JS

    $(document).ready(function(){
  $( ".collapsible-header" ).click(function() {
      $(".more",this).toggle()
      $(".less", this).toggle()
  });
});

4 个答案:

答案 0 :(得分:23)

您不需要使用javascript来实现此目的

删除javascript并仅使用css

的HTML

<ul class="collapsible" data-collapsible="accordion">
  <li>
      <div class="collapsible-header">
       <i class="material-icons">expand_less</i>First</div>
   </li>
   <li>
      <div class="collapsible-header">
       <i class="material-icons">expand_less</i>Second</div>
   </li>
</ul>

的CSS

  .collapsible li.active i {
  -ms-transform: rotate(180deg); /* IE 9 */
  -webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
  transform: rotate(180deg);
}

答案 1 :(得分:8)

作为http://jsfiddle.net/wf9a5m75/8xvgdwzu/2/的补充,您可以使用collapsible-header类来避免更改可折叠类(手风琴内容)中的其他图标。适合我的CSS代码是:

CSS

.collapsible-header.active i {
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
transform: rotate(180deg);
}

答案 2 :(得分:1)

现有的答案都不适合我,它们一直在反转其他图标

我添加到 CSS

li.active .collapsible-header .material-icons.iconcollapse {
  -ms-transform: rotate(180deg); /* IE 9 */
  -webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
  transform: rotate(180deg);
}

折叠/展开

<div class="collapsible-header">
<i class="material-icons iconcollapse">filter_drama</i>

答案 3 :(得分:0)

上述两种解决方案仍然可以在可折叠标题中翻转其他图标。完美的解决方案是在图标中添加一个类。

<div class="collapsible-header">
<i class="material-icons vertical-align">filter_drama</i>
Header 1
<i class="material-icons right expand">expand_less</i>
</div>

请注意,创建了“expand”类。 CSS将类似于上面的两个,只是将创建“expand”

.collapsible-header.active i.expand {
    -ms-transform: rotate(180deg); /* IE 9 */
    -webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
    transform: rotate(180deg);
  }