如何在没有所有重复代码的情况下使用 bootstrap 的响应式设计?

How can I use bootstrap's responsive design without all the repeating code?

也许我只是没有看到可以轻松纠正这个问题的东西;然而,我发现当我使用 bootstrap 的响应式设计时,我有时会倾向于重复代码。下面显示了我正在谈论的示例。如何在不重复代码的情况下编写此示例并保持响应式设计?

    <div class="col-xs-12 col-sm-9 col-md-6">
        <div class="row">
            <div class="col-sm-3 text-left hidden-xs hidden-sm visible-md visible-lg">
                <%= image_tag(@club.logo_image) %>  
            </div>
            <div class="col-sm-3 text-left hidden-xs visible-sm hidden-md hidden-lg">
                <%= image_tag(@club.logo_image) %>  
            </div>
            <div class="col-sm-3 text-center visible-xs hidden-sm hidden-md hidden-lg">
                <%= image_tag(@club.logo_image) %>  
            </div>
            <div class="col-sm-9 text-left hidden-xs hidden-sm visible-md visible-lg">
                <h2><%= @club.name %></h2>
                <h4><%= @club.stadium_name %> - <%= @club.division_and_conference %></h4>
            </div>
            <div class="col-sm-9 text-left hidden-xs visible-sm hidden-md hidden-lg">
                <h2><%= @club.name %></h2>
                <h4><%= @club.stadium_name %> - <%= @club.division_and_conference %></h4>
            </div>
            <div class="col-sm-9 text-center visible-xs hidden-sm hidden-md hidden-lg">
                <h2><%= @club.name %></h2>
                <h4><%= @club.stadium_name %></h4>
                <h4><%= @club.division_and_conference %></h4>
            </div>
        </div>
    </div>

通过使用 SCSS,您可以创建一个 class 并扩展其他 class。

<div class="resp-col-sm-3">
    <%= image_tag(@club.logo_image) %>  
</div>

class 看起来像:

.resp-col-sm-3 {
  @extend .col-sm-3;
  @extend .text-left; 
  @extend .hidden-xs;
  @extend .hidden-sm;
  @extend .visible-md;
  @extend .visible-lg;
}

另一种方法是将响应行为分解为不同的 less 文件,并根据不同的媒体查询定义 class 属性。

<div class="col-sm-3 logo-image">
    <%= image_tag(@club.logo_image) %>  
</div>

然后根据http://www.tutorialspoint.com/bootstrap/bootstrap_responsive_utilities.htm

"text-left visible-lg" 的 div 将变为

@media screen and (min-width: 922px) {
    .logo-image{
        ...css property values
    }
}

"text-center visible-xs" 的 div 将变为

@media screen and (max-width: 768px) {
    .logo-image{
        ...css property values
    }
}


这只是我个人喜欢根据不同的媒体查询组织 css 样式,而不是利用 bootstrap 框架。