卡片只要求少量的标记以及类,就能为你提供尽可能多的控件。这些类和标记很灵活,通常可以轻松地重新混合和扩展。举个例子,如果你的卡片没有图片之类的流内容,请尽情地在.card
元素上添加.card-block
类,来合并你的标记。
<div class="card"> <img class="card-img-top" data-src="holder.js/100px180/" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">cark的结构</h4> <p class="card-text"> 《div class=card》 <br> --| 《img class=card-img-top》<br> --| 《div class=card-block》<br> --| --| 《h4 class=card-title》<br> --| --| 《p class=card-text》<br> --| --| 《a class=btn btn-primary》 </p> <a href="#" class="btn btn-primary">按钮</a> </div> </div>
PS:现在内心感觉不适应,稍微有点排斥。不过相信一定能度过的。card的样式从看起来,感觉还是不错的。
卡片支持多种多样的内容,包括图片、文本、列组,链接,等等。混合并匹配多种内容类型以创建你想要的卡片。
<div class="card"> <img class="card-img-top" data-src="holder.js/100px180/?text=Image cap" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">h4 class="card-title"</h4> <p class="card-text">p class="card-text"</p> </div> <ul class="list-group list-group-flush"> <li class="list-group-item">ul class="list-group list-group-flush"</li> <li class="list-group-item">li class="list-group-item"</li> <li class="list-group-item">这里是列表</li> <li class="list-group-item">《lu》《li》</li> </ul> <div class="card-block"> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">《a》标签的链接</a> </div> </div>
只有图文的:
<div class="card"> <img class="card-img-top" data-src="holder.js/100px180/?text=Image cap" alt="Card image cap"> <div class="card-block"> <p class="card-text"> 《div class=card》 <br> --| 《img class=card-img-top》<br> --| 《div class=card-block》<br> --| --| 《p class=card-text》<br> </p> </div> </div>
无图的卡片:
<div class="card card-block"> <h4 class="card-title">无图的卡片结构</h4> <p class="card-text"> 《div class=card card-block》 <br> --| 《div class=card-title》<br> --| 《p class=card-text》<br> --| 《a class=card-link》<br> --| 《a class=card-link》<br> </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div>
PS: .card-block包含所有卡片内正文内容。所以这里把它提到最前面了。
图在卡片中间的:
<div class="card"> <div class="card-block"> <h4 class="card-title">Card title</h4> <h6 class="card-subtitle text-muted">Support card subtitle</h6> </div> <img data-src="holder.js/100px180/?text=Image" alt="Card image"> <div class="card-block"> <p class="card-text"> 《div class=card》 <br> --| 《div class=card-block》<br> --| --| 《h4 class=card-title》<br> --| --| 《h6 class=card-subtitle text-muted》<br> --| 《img class=card-img-top》<br> --| 《div class=card-block》<br> --| --| 《a class=card-link》<br> --| --| 《a class=card-link》 </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div>
卡片默认是块级的。所以它们将横向填满空间。要想强制限制它们的宽度,可以通过内联样式,或者预定义的网格类,或者使用网格mixins的自定义样式。
使用网格:
<div class="row"> <div class="col-sm-6"> <div class="card card-block"> <h3 class="card-title">Special title treatment</h3> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> <div class="col-sm-6"> <div class="card card-block"> <h3 class="card-title">Special title treatment</h3> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> </div>
使用自定义宽度:
<div class="card card-block" style="width: 20rem;"> <h3 class="card-title">Special title treatment</h3> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div>
这里要注意的是:在最外层 .card中加入宽度属性。style="width:20rem;"强制使用宽度。
使用文本对齐类,你可以快速改变任何卡片的文本的对齐方式——在它的内部全部或者局部区域
<div class="card card-block"> <h4 class="card-title">Special title treatment</h4> <p class="card-text">最外层 div class="card card-block"</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> <div class="card card-block text-xs-center"> <h4 class="card-title">Special title treatment</h4> <p class="card-text">最外层 div class="card card-block text-center"</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> <div class="card card-block text-xs-right"> <h4 class="card-title">Special title treatment</h4> <p class="card-text">最外层 div class="card card-block text-right"</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div>
可以视情况在一个卡片中添加卡片头或者卡片脚
<blockquote> 定义长的引用。
<div class="card"> <div class="card-header"> Quote </div> <div class="card-block"> <blockquote class="card-blockquote"> <p> 《div class=card》 <br> --| 《div class=card-header》<br> --| 《div class=card-block》<br> --| --| 《blockquote class=card-blockquote》<br> --| --| --|《p》<br> --| --| --|《footer》<br> --| 《div class="card-footer text-muted"》 </p> <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer> </blockquote> </div> <div class="card-footer text-muted"> 2 days ago </div> </div>
和卡片头卡片脚相似,卡片还包含了顶部和底部的图片盖子。
<div class="card"> <img class="card-img-top" data-src="holder.js/100px180/" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">Card title</h4> <p class="card-text"> 《div class=card》 <br> --| 《div class=card-img-top》<br> --| 《div class=card-block》<br> --| --| 《h4 class="card-title"》<br> --| --| 《p class="card-text"》<br> --| --| 《p class="card-text"》 </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div> <div class="card"> <div class="card-block"> <h4 class="card-title">Card title</h4> <p class="card-text"> 《div class=card》 <br> --| 《div class=card-block》<br> --| --| 《h4 class="card-title"》<br> --| --| 《p class="card-text"》<br> --| --| 《p class="card-text"》<br> --| 《div class=card-img-top》 </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> <img class="card-img-bottom" data-src="holder.js/100px180/" alt="Card image cap"> </div>
将一张图片变成一个背景的背景并垫在卡片的文本底下。
根据这张图片,你有可能需要用到.card-inverse
这个类(如下所示)。
<div class="card card-inverse"> <img class="card-img" data-src="holder.js/100px270?theme=sky" alt="Card image"> <div class="card-img-overlay"> <h4 class="card-title">图片垫底</h4> <p class="card-text"> 《div class=card card-inverse》 <br> --| 《img class=card-img》 <br> --| 《div class=card-img-overlay》<br> --| --| 《h4 class="card-title"》<br> --| --| 《p class="card-text"》<br> --| --| 《p class="card-text"》 </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div>
PS:这里要注意我把背景色改成了sky主题。因为自带的背景色,和白色的文字显示不明显。
卡片需要一个类以快速反转文字色调。默认的,卡片使用深色的文本色,以及浅色的背景色。而.card-inverse
让文字成白色,可以为它指定background-color
和border-color
。
<div class="card card-inverse" style="background-color: #333; border-color: #333;"> <div class="card-block"> <h3 class="card-title">反色调的文本 .card-inverse</h3> <p class="card-text"> 《div class=card card-inverse style="background-color: #333; border-color: #333;"》 <br> --| 《div class="card-block"》 <br> --| 《div class=card-img-overlay》<br> --| --| 《h3 class="card-title"》<br> --| --| 《p class="card-text"》<br> --| --| 《a class="btn btn-primary"》 </p> <a href="#" class="btn btn-primary">Button</a> </div> </div>
卡片包含了它们自己的变量类,以快速改变卡片的background-color
和border
。深色的卡片需要使用.card-inverse
类。
<div class="card card-inverse card-primary"> <div class="card-block"> <blockquote class="card-blockquote"> <p> 《div class="card card-inverse card-primary"》 <br> --| 《div class="card-block"》 <br> --| --| 《blockquote class="card-blockquote"》<br> --| --| 《p》<br> --| --| 《footer》 </p> <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer> </blockquote> </div> </div> <div class="card card-inverse card-success"> <div class="card-block"> <blockquote class="card-blockquote"> <p> 《div class="card card-inverse card-success"》 <br> --| 《div class="card-block"》 <br> --| --| 《blockquote class="card-blockquote"》<br> --| --| 《p》<br> --| --| 《footer》 </p> <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer> </blockquote> </div> </div> <div class="card card-inverse card-info"> <div class="card-block"> <blockquote class="card-blockquote"> <p> 《div class="card card-inverse card-info"》 <br> --| 《div class="card-block"》 <br> --| --| 《blockquote class="card-blockquote"》<br> --| --| 《p》<br> --| --| 《footer》 </p> <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer> </blockquote> </div> </div> <div class="card card-inverse card-warning"> <div class="card-block"> <blockquote class="card-blockquote"> <p> 《div class="card card-inverse card-warning"》 <br> --| 《div class="card-block"》 <br> --| --| 《blockquote class="card-blockquote"》<br> --| --| 《p》<br> --| --| 《footer》 </p> <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer> </blockquote> </div> </div> <div class="card card-inverse card-danger"> <div class="card-block"> <blockquote class="card-blockquote"> <p> 《div class="card card-inverse card-danger"》 <br> --| 《div class="card-block"》 <br> --| --| 《blockquote class="card-blockquote"》<br> --| --| 《p》<br> --| --| 《footer》 </p> <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer> </blockquote> </div> </div>
PS:这里注意的是:<div class="card card-inverse card-danger text-xs-center">
1、最外层的 .text-xs-center说明可以定位。因为显示变形,我删掉了。
2、最外层的 .card-danger 说明可以给标签上颜色。card-success等都可以使用。
使用卡片组渲染卡片,把卡片变成单一的、具有相同宽度和高度的、互相紧挨着的列元素。默认的,卡片组使用display: table
以及table-layout:fixed
以实现它们一致的尺寸。然而。如果启用了弹性盒模式,将改而使用display: flex
,并提供同样的效果。
<div class="card-group"> <div class="card"> <img class="card-img-top" data-src="holder.js/100px180?theme=sky" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">最外层有card-group包裹着这3个card</h4> <p class="card-text"> 《div class="card-group"》 <br> --| 《div class="card"》 <br> --| --| 《img class="card-img-top"》 <br> --| --| 《blockquote class="card-blockquote"》<br> --| --| --| 《h4 class="card-title"》<br> --| --| --| 《p class="card-text"》<br> --| --| --| 《p class="card-text"》 </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div> <div class="card"> <img class="card-img-top" data-src="holder.js/100px180?theme=vine" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">被包含的card</h4> <p class="card-text"> 《div class="card"》 <br> --| 《img class="card-img-top"》 <br> --| 《blockquote class="card-blockquote"》<br> --| --| 《h4 class="card-title"》<br> --| --| 《p class="card-text"》<br> --| --| 《p class="card-text"》 </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div> <div class="card"> <img class="card-img-top" data-src="holder.js/100px180?theme=lava" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">被包含的card</h4> <p class="card-text"> 《div class="card"》 <br> --| 《img class="card-img-top"》 <br> --| 《blockquote class="card-blockquote"》<br> --| --| 《h4 class="card-title"》<br> --| --| 《p class="card-text"》<br> --| --| 《p class="card-text"》 </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div> </div>
需要一些统一宽度和高度的卡片组,但是不要它们一个紧挨着另一个?使用卡片平排。默认地,卡片平排需要两个包裹元素:.card-deck-wrapper
以及.card-deck
。我们使用表格样式对.card-deck
设定尺寸和缝隙。该.card-deck-wrapper
用来负抵消.card-deck
的border-spacing
。
编辑建议:如果你启用了弹性盒模式,你可以移除.card-deck-wrapper
。
<div class="card-deck-wrapper"> <div class="card-deck"> <div class="card"> <img class="card-img-top" data-src="holder.js/100px200/" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">平排最外层</h4> <p class="card-text"> 《div class="card-deck-wrapper"》 <br> --| 《div class="card-deck"》 <br> --| --| 《div class="card"》<br> --| --| --| 《...》<br> --| --| 《div class="card"》<br> --| --| --| 《...》<br> --| --| 《div class="card"》<br> --| --| --| 《...》 </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div> <div class="card"> <img class="card-img-top" data-src="holder.js/100px200/" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">平排里面的每个 .card</h4> <p class="card-text"> 《div class="card"》 <br> --| 《img class="card-img-top"》 <br> --| 《div class="card-block"》<br> --| --| 《h4 class="card-title"》<br> --| --| 《p class="card-text"》<br> --| --| 《p class="card-text"》 </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div> <div class="card"> <img class="card-img-top" data-src="holder.js/100px200/" alt="Card image cap"> <div class="card-block"> <h4 class="card-title">平排里面的每个 .card</h4> <p class="card-text"> 《div class="card"》 <br> --| 《img class="card-img-top"》 <br> --| 《div class="card-block"》<br> --| --| 《h4 class="card-title"》<br> --| --| 《p class="card-text"》<br> --| --| 《p class="card-text"》<br><br><br> </p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div> </div> </div>
卡片可以被组织成Masonry——就像多列,只需要用CSS把它们包裹在.card-columns
中。
注意!这个不能在IE9及以下版本中使用,因为它们不支持CSS属性column
。
代码就给伪代码吧,太长太乱了。
<div class="card-columns"> <div class="card"> ... </div> <div class="card card-block"> ... </div> <div class="card card-inverse card-primary text-center"> ... </div> <div class="card"> ... </div> <div class="card card card-block text-center"> ... </div> </div>
默认的这个只有3列显示。
问题这么修改呢?
进入bootstrap.css中。
1、修改源码。
2、重新仿写一个.card-column 类