bootstrap - panel + collapse + accordion + well

952 查看

有时候,你想要把内容放到一个看起来还漂亮的盒子里面,那么就可以考虑panel。panel就是一个可以选择不同的边线样式、还可以有header和footer的盒子。这样一个有头有脚的组件,代码看起来是这样的:

<div class="panel panel-default">
    <div class="panel-heading"> panel header</div>
    <div class="panel-body">plain text</div> 
    <div class="panel-footer ">panel footer</div>
</div>

界面外观是这样的:https://jsfiddle.net/1000copy...

在class内的panel指明这个标签块内是一个panel(听起来有点别扭:)。另外一个值panel-default指明panel的一种样式。虽然panel-default暗示这是一个default(默认)的类型值,但是不写和写了的效果是不同的。你不妨试试,了解它们两者的视觉差异。

第二行的panel-heading指明这是panel的header。这个header是可选的,不写就没有header。类似的panel-footer也是一样的。

当你看到panel-default,可能会想起btn-default、btn-primary、btn-info等等?是的,对于panel而言也有类似的panel-primary、panel-info等等。

<div class="panel   panel-danger">
    <div class="panel-heading"> panel header</div>
    <div class="panel-body">plain text</div> 
    <div class="panel-footer ">panel footer</div>
</div>

这就是为什么bootstrap声称自己是具备设计一致性的原因了吧。这样的一致性,确实可以减轻学习的负担,让开发者更加容易举一反三。

可以使用panel做一个模态对话框

要是在footer上放置按钮,并靠右排放:

<div class="panel panel-default">
<div class="panel-heading">
      header
    </div>
    <div class="panel-body">plain text</div> 
    <div class="panel-footer clearfix">
        <div class="pull-right">
            <a href="#" class="btn btn-primary">Learn More</a>
            <a href="#" class="btn btn-default">Go Back</a>
        </div>
    </div>
</div>

看起来的外观是:https://jsfiddle.net/1000copy...

手风琴菜单

可以把多个panel组合起来,并且通过bootstrap本身的collapse插件构建一个很有吸引力的,类似桌面软件Microsoft Outlook的菜单。习惯上它被称为accordion

collapse(折叠)

bootstrap提供一个插件,可以让开发者不写一行JavaScript代码而可以展开和折叠内容:

<input type="button" class="btn" data-toggle="collapse" data-target="#toggleDemo" value="Toggle Button">
<div id="toggleDemo" class="collapse in"><p>content</p></div>

点击按钮Toggle Button,可以对div#toggleDemo做展开和折叠操作。还记得data-前缀的属性吗?它们由bootstrap的JavaScript代码引用,分别声明如下:

data-toggle的做一个切换操作,操作为"collapse"。除了collapse,还可以做popover、modal、dropdown、tab等切换
data-target声明操作的对象是"#toggleDemo"

你可以在被折叠的目标上加入class的值in,标识默认为打开的。如果不加,那么默认为关闭的(被折叠的)。

可折叠的panel

利用折叠插件,就可以把一个有header的panel变成可折叠的panel:

     <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-target="#c1">h1</a>
            </h4>
        </div>
        <div id="c1" class="in">
            <div class="panel-body">
                <p>content1</p>
            </div>
        </div>
    </div>

点击header内的链接多次,可以看到折叠和展开的切换效果。

一个accordion菜单,就是多个可折叠panel组合得到的效果。如下代码展示了两个panel的情况:

<div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-target="#c1">h1</a>
            </h4>
        </div>
        <div id="c1" class="panel-collapse collapse in">
            <div class="panel-body">
                <p>content1</p>
            </div>
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-target="#c2">h1</a>
            </h4>
        </div>
        <div id="c2" class="panel-collapse collapse in">
            <div class="panel-body">
                <p>content1</p>
            </div>
        </div>
    </div>
</div>

尽管有点粗陋,但是它是可以工作的。

well

还有一个叫做well的组件。它也可以像panel一样放置内容,它看起来是内凹的。需要一个看起来和其他内容不太相同的,类似插页和插图的盒子,可以使用它。和panel比起来简单而粗陋的,它没有header,footer,也不能设置-info、-warning等颜色差别,但是可以调节大小。

<div class="well well-lg">
  large well!
</div>
<div class="well well-sm ">
  small well!
</div>

它简单到无话可说。