【问题标题】:How to place two columns in a row properly in this situation在这种情况下如何正确地将两列放在一行中
【发布时间】:2021-09-27 15:40:10
【问题描述】:

我正在使用 Bootstrap 我已经编写了这个代码:

<div class="container">
    <div class="row">
        <div class="col-xl-4 col-lg-12 col-md-12 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5">
            <div class="slider-slick-img container">
                <div class="slider-for">
                IMAGE GOES HERE
                </div>

                <div class="slider-nav mt-5">
                    <div class="item px-2">
                    THUBMNAIL GOES HERE
                    </div>
                </div>
            </div>
        </div>  
        <div class="col-xl-8 col-lg-12 col-md-12 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5">
            <div class="">
            CONTENT GOES HERE
            ...
            </div>
        </div>
    </div>
</div>  

这段代码的结果在这里:

如您所见,它将图片列和内容列(产品标题、产品描述等)分开。

但是它们都放在一个row 类中。

那么如何正确地将它们放在一行中,正如预期的结果所示?

预期结果:


更新 #1

如果我从 images 列和内容列的 &lt;div class="col-xl-4 col-lg-12 col-md-12 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5"&gt; 中删除 col-lg-12 col-md-12 col-sm-12,并将 col-6 而不是 col-12 添加到两个列类中,则会出现以下结果:

但是,如您所见,内容看起来更薄,与预期结果图像仍然存在差异。

那么如何解决这个问题呢?

【问题讨论】:

  • 尝试 col-6 而不是 col-12
  • @webber 我试过了,但仍然显示与以前相同的结果。并且col-6 还折叠了较小设备上的响应式设计。
  • col-lg-12 看起来不正确。尝试简化您的类名并仅从 1 个视口大小开始。然后从那里开始工作。
  • 看起来像它的工作。您正在测试哪种设备尺寸。我认为您正在测试 lg 或 md 设备。您为这些添加了 12 列。它将延伸到下一行。尝试在 xl 设备上进行测试,或者您可以尝试 col-lg-8/col-md-8 和 col-lg-4/col-md-4
  • 尝试以 Codepen 或其他方式提交您的代码,并按照您编写的方式完成 CSS 类和图像,以便其他人更轻松地进行故障排除

标签: html css twitter-bootstrap twitter-bootstrap-3 multiple-columns


【解决方案1】:

您正在重复这些课程,只是将这里的所有内容都复杂化了,您必须定义要中断的位置,它会在该屏幕尺寸下自动中断,您不需要显式添加另一个类,添加太多的类会使您和以后必须理解代码的任何人感到困惑。 https://getbootstrap.com/docs/4.0/layout/grid/

<header>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</header>
<div class="container">
  <div class="row">
  <div class="col-sm-6 ">
      <div class="">
        <h1>
          Cat
        </h1>
        <p>
          The cat is a domestic species of small carnivorous mammal. It is the only domesticated species in the family Felidae and is often referred to as the domestic cat to distinguish it from the wild members of the family.
        </p>
      </div>
    </div>
    <div class="col-sm-6 ">
      <div class="slider-slick-img container">
        <div class="slider-for">
          <img src="https://static.toiimg.com/photo/msid-67586673/67586673.jpg?3918697" width="100%" />
      
        </div>
        <div class="slider-nav mt-5">
          <div class="item px-2">
            <img src="https://static.toiimg.com/photo/msid-67586673/67586673.jpg?3918697" width="100px" />
                 </div>
        </div>
      </div>
    </div>
    
  </div>
</div>

【讨论】:

  • 如果我只添加col-sm-6,结果将就像 UPDATE #1 图像,尽管有预期结果图像,但它更薄。
  • 在这种情况下删除其他所有内容并仅使用col-lg-6col-xl-6
  • col-lg-6 将显示与 UPDATE #1 显示的相同结果,col-xl-6 显示问题的第一张图片,它实际上是两个单独的列!
  • 如果您想要更大的图像,请尝试将col-lg-4 用于一列和col-lg-8 用于图像列的组合
【解决方案2】:

在您的两个列中,您都添加了类col-12,这意味着默认情况下,这些列将占用所有行,直到您到达第一个断点,在这种情况下为col-sm。为了解决这个问题,您必须指定 col-6 而不是 col-12,如果您在小于 sm 的屏幕尺寸中检查它,您会注意到每列在网格布局中最多占用 6 个位置。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <div class="col-6">
                <div class="slider-slick-img container">
                    <div class="slider-for">
                    IMAGE GOES HERE
                    </div>
    
                    <div class="slider-nav mt-5">
                        <div class="item px-2">
                        THUBMNAIL GOES HERE
                        </div>
                    </div>
                </div>
            </div>  
            <div class="col-6">
                CONTENT GOES HERE
            </div>
        </div>
    </div>   
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>

【讨论】:

  • 不错,我发现,从图像列的col-xl-4 col-lg-12 col-md-12 col-sm-12 col-6 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5 中删除col-lg-12 col-md-12 col-sm-12 将解决它。 col-lg-12 col-md-12 col-sm-12 一定有问题。如何处理此问题并调整lgmdsm 设备的必要设置?
  • @loctoj 你提到的那些没有错。您只是说在由 12 列组成的引导网格中,您希望该列占用 12 列,即页面宽度的 100%,因此下一列必须转到下一行。跨度>
  • @loctoj 例如,只需给出第一列col-8 和第二列col-4。我觉得你可能需要检查这个getbootstrap.com/docs/5.0/layout/grid/#example
  • 我也测试过,但它会完全破坏布局:(
【解决方案3】:

首先放置带有内容的 div,然后放置带有图像的 div 似乎可以正确反映此布局。

要定义等宽的列,只需要在每个列上使用 .col 类即可,根据 official documentation (Bootstrap 5.0)


<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
    <div class="row">
            <div class="col">
                <div class="">
                CONTENT GOES HERE
                ...
              </div>
            </div>
            <div class="col">
                <div class="">
                IMAGE GOES HERE
                </div>

                <div class="">
                    <div class="">
                    THUBMNAIL GOES HERE
                    </div>
                </div>
            </div>
    </div>
</div> 

【讨论】:

  • 如果我只添加col,结果将就像 UPDATE #1 图像一样,尽管有预期结果图像,但它更薄。 ——
【解决方案4】:

删除应用slider-slick-imgcontainer 类。它不是必需的。并请分享您的代码链接,我们可以在其中检查实际内容(图像并添加到购物车框)。否则,有了这些文本,它在这里工作正常。

【讨论】:

    【解决方案5】:

    你不应该在 lg screen 上为两个 div 设置 12, 在xl,lg 上设置8,4md 上设置6,6 并将12,12 设置为sm

    <div class="container">
        <div class="row">
            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5">
                <div class="slider-slick-img container">
                    <div class="slider-for">
                    IMAGE GOES HERE
                    </div>
    
                    <div class="slider-nav mt-5">
                        <div class="item px-2">
                        THUBMNAIL GOES HERE
                        </div>
                    </div>
                </div>
            </div>  
            <div class="col-xl-8 col-lg-8 col-md-6 col-sm-12 col-12 mb-xl-0 mb-lg-5 mb-md-5 mb-sm-5 mb-5">
                <div class="">
                CONTENT GOES HERE
                ...
                </div>
            </div>
        </div>
    </div> 

    【讨论】:

      【解决方案6】:

      我通过选择使用网格系统的完全响应式 col 解决了您的问题,如我的代码所示。

      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
      
      <div class="container">
          <div class="row">
                  <div class="col">
                      <div class="">
                      CONTENT GOES HERE
                      ...
                    </div>
                  </div>
                  <div class="col">
                      <div class="">
                      IMAGE GOES HERE
                      </div>
      
                      <div class="">
                          <div class="px-2">
                          THUBMNAIL GOES HERE
                          </div>
                      </div>
                  </div>
          </div>
      </div> 

      【讨论】:

        【解决方案7】:

        您还应该包含元标记“viewport”,以便浏览器正确处理您的 html 代码。

        <meta name="viewport" content= "width=device-width, initial-scale=1.0", shrink-to-fit=no"> 
        

        您可以尝试将其放入您的工作部分。

        【讨论】:

          猜你喜欢
          • 2014-05-10
          • 1970-01-01
          • 1970-01-01
          • 2022-12-04
          • 1970-01-01
          • 2020-08-06
          • 2012-06-06
          • 2022-01-11
          • 1970-01-01
          相关资源
          最近更新 更多