后记

Bootstrap有些令人不适的地方。比如:

Hello

在button标签的情况下,需要在class内写一遍btn,有点重复。此时你需要知道:作为class的btn说的是外观这件事,前面标签的button说的是语义这回事。语义和外观的分离也能带来好处的。框架只是简单的修改class来控制外观,而不在乎标签到底是什么。这意味着,你可以把它用到很多标签上,从而控制它的外观。比如

<a class="btn btn-primary">
  button
</a>

<div class="btn btn-primary">
  button
</div>

<label class="btn btn-primary">
  button
</label>
<ul class="btn btn-primary">
  button
</ul>

<ul>
  <li class="btn btn-primary">button</li>
  <li class="btn btn-primary">button</li>
  <li class="btn btn-primary">button</li>
</ul>

只不过,从惯例上来说,我们把a标签、li标签显示成button的样子在不同的场景下会引发困惑,因此不会这样做而已。举出此案例的目的,在于加深class控制外观,标签设置语义的这样的分工的价值和合理性。

另外一个惯例是使用不同的背景色表达不同类型的信息,比如我们看到btn-前缀的一组class,btn-primary、btn-success、btn-info、 btn-warning 、btn-danger这样的惯例也适用于label 、progress-bar、table、list-group、alert等,我们可以看到label的可以class和button的class是对应的。

<span class="label label-default">Default</span>
<span class="label label-primary">Primary</span>
<span class="label label-success">Success</span>
<span class="label label-info">Info</span>
<span class="label label-warning">Warning</span>
<span class="label label-danger">Danger</span>

分别设置不同的背景色用来标识信息的类型差异,从而仅仅从信息的背景色上即可一目了然的理解到信息的差异性。

看到了这样的细节,其实是存在一点让人不舒适的地方的。比如

 <span class="label label-success">Default</span>

为什么不能写成:

 <span class="label success">Default</span>

这略微的不适需要适应下,毕竟bootstrap使用起来不过就是改改class就可以得到很棒的效果。

还有更加不爽的地方,比如使用button,考虑到Accessibility(无障碍访问)的需求,可能在bootstrap内看到这样的代码:

属性role的存在,是为了告诉Accessibility类应用(比如屏幕朗读程序,为盲人提供的访问网络的便利程序),这是一个按钮。在html5元素内,标签本身就是有语义的,因此role是不必添加的,至少是不推荐的,但是bootstrap的案例内很多都是有类似的属性和声明的,目的是为了兼容老版本的浏览器(用户代理),如果你的代码使用了html5标签,并且不准备支持老版本的浏览器,不妨不使用role标签。

Last updated