html - 如何在维护语义 HTML 标记的同时使用 Bootstrap?

标签 html css twitter-bootstrap semantic-markup separation-of-concerns

Bootstrap提供了 text-left ( Alignment classes ), text-lowercase ( Transformation classes ) 等类,这与定义内联样式相同(不是技术上的,但从逻辑上讲)。

在替代方法中,例如 bem ,它强制类应该反射(reflect)“物理” block 和元素,以及它们的修饰符(或元素的状态,例如 activecurrent),并且任何样式都应该纯粹在 CSS 中应用。

Bootstrap 方法似乎没有很好地分离结构和表示之间的关注点,并且违背了这一点 W3C Tip for Webmasters .

这个问题得到了很多人的响应:

  1. Niko Sams - Why I don't like Twitter Bootstrap
  2. Paradax - Bootstrap The good, the bad and the ugly
  3. bvision - Please stop embedding Bootstrap classes in your HTML!

如何在保持 HTML 标记语义的同时使用 Bootstrap?

最佳答案

Bootstrap 提供 mixins你可以使用。因此,与其在 HTML 中添加像 col-xs-12 这样的类,不如在元素的选择器 block 中使用 @include make-xs-column(12) .要添加一行,可以使用 @mixin make-row

引用 Alexey Morashko 的回答,而不是这个无语义的标记:

<div class="items-list row">
    <div class="item col-xs-12 col-sm-6 col-md-4">
        <div class="item-name">Product first</div>
        <div class="item-description">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>
    </div>
    <div class="item col-xs-12 col-sm-6 col-md-4">
        <div class="item-name">Product second</div>
        <div class="item-description">Ratione, ullam, reprehenderit aliquid saepe ab harum.</div>
    </div>
    <div class="item col-xs-12 col-sm-6 col-md-4">
        <div class="item-name">Product third</div>
        <div class="item-description"> totam repudiandae velit eum accusantium veritatis.</div>
    </div>
</div>

您可以改用:

HTML

<div class="items-list">
    <div class="item">
        <div class="item-name">Product first</div>
        <div class="item-description">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>
    </div>
    <div class="item">
        <div class="item-name">Product second</div>
        <div class="item-description">Ratione, ullam, reprehenderit aliquid saepe ab harum.</div>
    </div>
    <div class="item">
        <div class="item-name">Product third</div>
        <div class="item-description"> totam repudiandae velit eum accusantium veritatis.</div>
    </div>
</div>

CSS

.items-list {
    @include make-row();     
    .item 
        @include make-xs-column(12);
        @include make-sm-column(6);
        @include make-md-column(4);
    }
}

您可以在 Sitepoint 文章 - 5 Useful Sass Mixins in Bootstrap 中找到更多 Bootstrap mixins 示例.

关于html - 如何在维护语义 HTML 标记的同时使用 Bootstrap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28824725/

相关文章:

jquery - 使用jquery垂直居中div

ruby-on-rails-3 - 如何水平对齐从 rails 循环生成的 Div

html - Bootstrap 使一列等于两列的高度

html - 容器 Bootstrap 中的垂直和水平对齐图像和文本

javascript - Bootstrap Accordion 不会关闭所有列表项

javascript - 我如何使用 JQuery 切换功能来切换一组矩形的可见性?

html - CSS - 动态添加时图像看起来不同

html - 如何为图像添加悬停效果?

css - HTML 视频,CSS 位置固定,背景附件在 Chrome 上固定

html - 除了 htp.print 和 dbms_output on toad for oracle PL/SQL,我还可以使用什么?