【问题标题】:Bootstrap 3 accordion styling on open/closedBootstrap 3 手风琴样式打开/关闭
【发布时间】:2014-01-02 18:04:17
【问题描述】:

尝试风格化 bs3 手风琴...我在标题和正文中添加了图像。我设法在关闭时设置黑色标题文本,在悬停和/或打开时设置蓝色文本。

如何在悬停和/或打开时更改“面板标题”的背景颜色?我已经尝试了很多没有结果的事情。通过添加/删除样式,这将是一个仅 jquery 的解决方案吗?

<div class="panel panel-faq">
    <div class="panel-heading">
        <h4 class="panel-title">
            <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion1" href="#accordion1_2">
                1. Some title goes here
            </a>
        </h4>
    </div>
    <div id="accordion1_2" class="panel-collapse collapse">
        <div class="panel-body">
                sample entry text goes here
        </div>
    </div>
</div>


.panel-faq{
    border-color: #dddddd;
}
.panel-faq .panel-heading {
    color: #333333;
    background:#f5f5f5 url('/assets/img/faq-question.png') no-repeat 10px center;
    padding-left: 45px;
    border-color: #dddddd;
}

.panel-default > .panel-heading + .panel-collapse .panel-body {
  border-top-color: #dddddd;
}

.panel-default > .panel-footer + .panel-collapse .panel-body {
  border-bottom-color: #dddddd;
}

.panel-faq .panel-body {
    background: url('/assets/img/faq-answer.png') no-repeat 40px 20px;
    padding-left: 75px;
}

.panel-faq .accordion-toggle, .panel-faq a.accordion-toggle:hover{
    color:#428bca;
    text-decoration:none;
}

.panel-faq .accordion-toggle.collapsed {
    color:#333333;
}

【问题讨论】:

    标签: jquery css accordion twitter-bootstrap-3


    【解决方案1】:

    这是我想出的唯一 CSS 解决方案...

    jQuery 解决方案不是很好,因为如果用户点击太快,样式可能会被丢弃。

    当它没有折叠时,只需定位你的标题类:

    .panel-heading:not(.collapsed) { 
    /*Your styles*/
    }
    

    我拥有的 HTML:

    <div class="collapsed panel-header" data-toggle="collapse" data-parent="panelParent" data-target="targetPanel">Header</div>
    

    最后回答悬停的问题,很简单:

    .panel-heading:hover {
    /*Your styles*/
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      对于悬停效果:

      .panel-faq .panel-heading:hover {
      
         color: #333333;    
         background:#f5f5f5 url('/assets/img/faq-question.png') no-repeat 10px center;    
         padding-left: 45px;    
         border-color: #dddddd;
      
      }
      

      如果背景没有被覆盖,您也可以尝试:

      background:#f5f5f5 url('/assets/img/faq-question.png') no-repeat 10px center !important;
      

      【讨论】:

        【解决方案3】:

        要以 AngularJS 方式(无 JQuery)执行此操作,您可以在 accordion-group 上放置一个条件类。

        <div accordion-group is-open="first.open"
             ng-class="{'active': first.open}">
          <div accordion-heading>First Section</div>
          <div>First content</div>
        </div>
        
        
        .active[accordion-group] .panel-heading {
          background-color: black;
          color: white;
        }
        

        这样active 类在打开时应用于整个accordion-grouppanel-heading div(由 bootstrap-ui 生成)可以使用特定的 CSS 选择器设置样式。

        【讨论】:

          【解决方案4】:

          由于我无法在 css 中做任何事情,所以我继续使用一些 jquery。对于任何感兴趣的人,您可以向整个 div 添加/删除一个活动类,然后以这种方式应用样式。

              $('.panel-faq').on('show.bs.collapse', function () {
                   $(this).addClass('active');
              });
          
              $('.panel-faq').on('hide.bs.collapse', function () {
                   $(this).removeClass('active');
              });
          

          【讨论】:

          • 谢谢。我能补充的是,如果你想在开始时打开一个,你需要手动将collapse 类添加到该面板 div 标签的 HTML 中。
          • 谢谢 - 非常有用
          • 我有几个面板要管理,所以我稍微修改了代码并最终得到: $('.classofaccordion .panel').on('show.bs.collapse', function ( ) { $(this).addClass('active'); }); $('.classofaccordion .panel').on('hide.bs.collapse', function () { $(this).removeClass('active'); });
          猜你喜欢
          • 1970-01-01
          • 2016-09-07
          • 2017-01-21
          • 2019-07-23
          • 1970-01-01
          • 2015-07-23
          • 2012-07-28
          • 1970-01-01
          • 2017-10-26
          相关资源
          最近更新 更多