如何使用 Bootstrap 跨设备保留网格布局?

How to preserve grid layout across devices using Bootstrap?

我正在使用 Bootstrap v.3 构建一个网站,它需要在不同设备上保持一致。我希望在所有设备上保持相同的布局。我使用以下代码并排显示两个 youtube 视频。

<div class="row">
        <div class="col-md-7 col-lg-7 col-sm-7 col-xs-7" id="introduction">
            <p>The project uses Machine Learning to identify the waste items. A brief introduction about the Machine Learning technology is provided in the video below.
            </p>
            <iframe width="500" height="205" src="https://www.youtube.com/embed/yofjFQddwHE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe> 
        </div>
        <div class="col-md-5 col-lg-5 col-sm-5 col-xs-5">

            <iframe src="https://www.youtube.com/embed/7YgnJELpMyE?ecver=2" width="450" height="305" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
        </div>
    </div>

该站点在桌面上看起来像这样 -

但是,在移动设备上 phone,它看起来像这样。

如您所见,尽管 col-md-* col-sm-*col-xs-* 值相同,但布局发生了变化。请帮忙。

TwBs v4 用户注意事项:将 col-xs-* 替换为 col-*


原始答案 (TwBs v3):您的 col-* 类 适用得很好。

而Bootstrap是移动优先,这意味着col-xs-7不需要col-sm-7col-md-7或更高版本。

您可以通过选择元素并观察它们的 bounding-rect-box(大多数 dev-tools 突出显示)来检查它。但是,这不会阻止 <iframe> 元素(具有硬编码的 widthheight 属性)溢出其父元素的宽度。如果你想覆盖它,你需要将它们的 width 设置为 100%:

iframe {
  display: block;
  width: 100%;
}

看到它工作:

iframe {
  display: block;
  width: 100%;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <div class="row">
    <div class="col-xs-7" id="introduction">
      <p>The project uses Machine Learning to identify the waste items. A brief introduction about the Machine Learning technology is provided in the video below.
      </p>
      <iframe width="500" height="205" src="https://www.youtube.com/embed/yofjFQddwHE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
    </div>
    <div class="col-xs-5">
      <iframe src="https://www.youtube.com/embed/7YgnJELpMyE?ecver=2" width="450" height="305" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
    </div>
  </div>
</div>

如果你应用它但它不起作用,这意味着不同的 CSS 规则被你项目中更强大的选择器应用到这些属性上,留给你两个选择:

  • 查找并禁用这些规则(您可以检查元素以查找当前应用于它的所有规则)
  • 在您的 CSS 中使用更强(更具体)的选择器(您可以找到大量解释 CSS 特异性原则的在线资源 - 请记住,您的选择器越强大,您就越难它供您自己稍后修改。理想情况下,应该始终使用应用所需规则的最不具体的选择器,从而确保它们易于应用任何未来的模组)。

注意:很有可能,iframe 选择器对于您的项目来说不够强大。您可以使用 #id.class 或者,如果您不想通过添加任何额外的 类 或 id 来更改标记,则可以使用否定来夸大其特异性:

iframe:not(#_):not(#_)` { /* css rules here */ }