【问题标题】:My bootstrap 4 col-sm-6 rows are not stacking on mobile devices我的 bootstrap 4 col-sm-6 行没有在移动设备上堆叠
【发布时间】:2018-07-19 17:56:19
【问题描述】:

我正在使用 Bootstrap 4,但无法让我的列在移动视图中堆叠在一起。我每行有两个 col-sm-6。我确信这是一个简单的修复,但我似乎无法弄清楚。任何帮助将不胜感激,谢谢!

这是网站的链接https://alex-carver.github.io/Ananomouse/

/*--Overview Header one--*/
h3.overview-header{
	margin-bottom: 5px;
    font-weight: 500;
    font-family: 'OSP-DIN' , sans-serif;
   	font-style: bold;
   	font-size: 60px;
   	letter-spacing: 2px;
   	margin-top: 10px;
   	color: #E7643B ;
}
/*--Overview Header Two--*/
h3.overview-header2{
	margin-bottom: 5px;
    font-weight: 500;
    font-family: 'OSP-DIN' , sans-serif;
   	font-style: bold;
   	font-size: 60px;
   	letter-spacing: 2px;
   	margin-top: 10px;
   	color: #777;
}

/*--Overview Header Three--*/
h3.overview-header3{
	margin-bottom: 5px;
    font-weight: 500;
    font-family: 'OSP-DIN' , sans-serif;
   	font-style: bold;
   	font-size: 60px;
   	letter-spacing: 2px;
   	margin-top: 10px;
   	color: #812E14;
}



/*--Overview Sub Headers--*/
h4{
	font-family: 'Bebas Neue' , sans-serif;
	font-size: 40px;
	color: #9B3718;
	font-weight: 600;
    font-style: normal;
    letter-spacing: 1px;
    margin-bottom:0;
    margin-top: 30px;
}

/*--Overview Paragraphs--*/
p.lead2{
	font-size: 25px;
	color: #333;
	font-weight: bold;
	letter-spacing: 1px;
	font-style: normal;
	font-family: 'Bebas Neue' , sans-serif;
	padding-top: 20px;	
}


/*--Footer Paragraphs--*/
p.lead3{
	font-size: 20px;
	color: #333;
	font-weight: 300;
	letter-spacing: 1px;
	font-style: normal;
	font-family: 'Bebas Neue' , sans-serif;
}


/*--Overview One---*/
section#overview1{
  background: -webkit-linear-gradient(left,#E7643B  50%, #fff 50%);
  background: -o-linear-gradient(left, #E7643B 50%, #fff  50%);
  background: linear-gradient(to right, #E7643B  50%, #fff 50%);
  width: 100%;
  height: 700px;
}

/*--Overview Two---*/
section#overview2{
  background: -webkit-linear-gradient(left, #fff 50%, #777 50%);
  background: -o-linear-gradient(left, #fff 50%, #777 50%);
  background: linear-gradient(to right, #fff 50%, #777 50%);
  width: 100%;
  border-bottom: 2px solid #eee;
  height: 700px;
}

/*--Overview Three---*/
section#overview3{
  background: -webkit-linear-gradient(left, #812E14 50%, #fff 50%)!important;
  background: -o-linear-gradient(left,  #812E14 50%, #fff 50%)!important;
  background: linear-gradient(to right,  #812E14 50%, #fff 50%)!important;
  width: 100%;
  height: 700px;
}

.overview-wrapper{
    -ms-flex-preferred-size: 0;
    flex-basis: 0;
    -webkit-box-flex: 1;
    -ms-flex-positive: 1;
    flex-grow: 1;
    max-width: 100%;
    height: 650px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Overview Section One -->
<section id="overview1">
  <div class="container-fluid">
    <div class="row justify-content-left">
      <div class=" col-sm-6 overview-wrapper">
        <div class="overview-content">
          <img class="computer1" src="./img/computer1.png" alt="laptop image">
        </div>
      </div>
      <div class=" col-sm-6 overview-wrapper">
         <div class="overview-content2">
            <h3 class="overview-header">Overview Header One</h3><!--Header-->
                <h4>Sub Header</h4><!--sub header-->
              <!-- sub text -->
              <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
              <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>         
        </div>
      </div>
    </div>
  </div><!-- container -->
</section>

<!-- Overview Section 2 -->
<section id="overview2">
  <div class="container-fluid">
    <div class="row justify-content-center">
      <div class="col-sm-6 text-left overview-wrapper">
         <div class="overview-content2">
            <h3 class="overview-header2">Overview Header Two</h3><!--Header-->
                <h4>Sub Header</h4><!--sub header-->
                   <!-- sub text -->
              <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
        </div>      </div>
      <div class="col-sm-6 text-center overview-wrapper">
         <div class="overview-content">
          <img class="computer1" src="./img/computer2.png" alt="laptop image">
        </div>
      </div>
    </div>
  </div> <!-- container -->
</section>

<!-- Overview Section 3 -->
<section id="overview3">
  <div class="container-fluid">
    <div class="row justify-content-left">
      <div class="col-sm-6 overview-wrapper">
        <div class="overview-content">
          <img class="computer1" src="./img/computer3.png" alt="laptop image">
        </div>
      </div>
      <div class="col-sm-6 overview-wrapper">
         <div class="overview-content2">
            <h3 class="overview-header3">Overview Header Three</h3><!--Header-->
                <h4>Sub Header</h4><!--sub header-->
                  <!-- sub text -->
              <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
        </div>
      </div>
    </div>
  </div><!-- container -->
</section>

【问题讨论】:

    标签: html css bootstrap-4 responsive


    【解决方案1】:

    您可能错过了非常重要的 meta 响应式内容:

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

    除了col-sm-6(平板电脑或更大尺寸),为了在移动设备上看起来更漂亮,您可能需要col-6

    最后,我认为overview 元素不需要固定高度。

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <title></title>
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
        <style>
            /*--Overview Header one--*/
            h3.overview-header {
                margin-bottom: 5px;
                font-weight: 500;
                font-family: 'OSP-DIN', sans-serif;
                font-style: bold;
                font-size: 60px;
                letter-spacing: 2px;
                margin-top: 10px;
                color: #E7643B;
            }
            /*--Overview Header Two--*/
            h3.overview-header2 {
                margin-bottom: 5px;
                font-weight: 500;
                font-family: 'OSP-DIN', sans-serif;
                font-style: bold;
                font-size: 60px;
                letter-spacing: 2px;
                margin-top: 10px;
                color: #777;
            }
    
            /*--Overview Header Three--*/
            h3.overview-header3 {
                margin-bottom: 5px;
                font-weight: 500;
                font-family: 'OSP-DIN', sans-serif;
                font-style: bold;
                font-size: 60px;
                letter-spacing: 2px;
                margin-top: 10px;
                color: #812E14;
            }
    
    
    
            /*--Overview Sub Headers--*/
            h4 {
                font-family: 'Bebas Neue', sans-serif;
                font-size: 40px;
                color: #9B3718;
                font-weight: 600;
                font-style: normal;
                letter-spacing: 1px;
                margin-bottom: 0;
                margin-top: 30px;
            }
    
            /*--Overview Paragraphs--*/
            p.lead2 {
                font-size: 25px;
                color: #333;
                font-weight: bold;
                letter-spacing: 1px;
                font-style: normal;
                font-family: 'Bebas Neue', sans-serif;
                padding-top: 20px;
            }
    
    
            /*--Footer Paragraphs--*/
            p.lead3 {
                font-size: 20px;
                color: #333;
                font-weight: 300;
                letter-spacing: 1px;
                font-style: normal;
                font-family: 'Bebas Neue', sans-serif;
            }
    
    
            /*--Overview One---*/
            section#overview1 {
                background: -webkit-linear-gradient(left,#E7643B 50%, #fff 50%);
                background: -o-linear-gradient(left, #E7643B 50%, #fff 50%);
                background: linear-gradient(to right, #E7643B 50%, #fff 50%);
                width: 100%;
                /*height: 700px;*/
            }
    
            /*--Overview Two---*/
            section#overview2 {
                background: -webkit-linear-gradient(left, #fff 50%, #777 50%);
                background: -o-linear-gradient(left, #fff 50%, #777 50%);
                background: linear-gradient(to right, #fff 50%, #777 50%);
                width: 100%;
                border-bottom: 2px solid #eee;
                /*height: 700px;*/
            }
    
            /*--Overview Three---*/
            section#overview3 {
                background: -webkit-linear-gradient(left, #812E14 50%, #fff 50%) !important;
                background: -o-linear-gradient(left, #812E14 50%, #fff 50%) !important;
                background: linear-gradient(to right, #812E14 50%, #fff 50%) !important;
                width: 100%;
                /*height: 700px;*/
            }
    
            .overview-wrapper {
                -ms-flex-preferred-size: 0;
                flex-basis: 0;
                -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                flex-grow: 1;
                max-width: 100%;
                /*height: 650px;*/
            }
        </style>
    
    </head>
    <body>
        <!-- Overview Section One -->
        <section id="overview1">
            <div class="container-fluid">
                <div class="row justify-content-left">
                    <div class="col-6 col-sm-6 overview-wrapper">
                        <div class="overview-content">
                            <img class="computer1" src="./img/computer1.png" alt="laptop image">
                        </div>
                    </div>
                    <div class="col-6 col-sm-6 overview-wrapper">
                        <div class="overview-content2">
                            <h3 class="overview-header">Overview Header One</h3><!--Header-->
                            <h4>Sub Header</h4><!--sub header-->
                            <!-- sub text -->
                            <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                            <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                        </div>
                    </div>
                </div>
            </div><!-- container -->
        </section>
    
        <!-- Overview Section 2 -->
        <section id="overview2">
            <div class="container-fluid">
                <div class="row justify-content-center">
                    <div class="col-6 col-sm-6 text-left overview-wrapper">
                        <div class="overview-content2">
                            <h3 class="overview-header2">Overview Header Two</h3><!--Header-->
                            <h4>Sub Header</h4><!--sub header-->
                            <!-- sub text -->
                            <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                            <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                        </div>
                    </div>
                    <div class="col-6 col-sm-6 text-center overview-wrapper">
                        <div class="overview-content">
                            <img class="computer1" src="./img/computer2.png" alt="laptop image">
                        </div>
                    </div>
                </div>
            </div> <!-- container -->
        </section>
    
        <!-- Overview Section 3 -->
        <section id="overview3">
            <div class="container-fluid">
                <div class="row justify-content-left">
                    <div class="col-6 col-sm-6 overview-wrapper">
                        <div class="overview-content">
                            <img class="computer1" src="./img/computer3.png" alt="laptop image">
                        </div>
                    </div>
                    <div class="col-6 col-sm-6 overview-wrapper">
                        <div class="overview-content2">
                            <h3 class="overview-header3">Overview Header Three</h3><!--Header-->
                            <h4>Sub Header</h4><!--sub header-->
                            <!-- sub text -->
                            <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                            <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                        </div>
                    </div>
                </div>
            </div><!-- container -->
        </section>
    </body>
    </html>

    【讨论】:

    • col-sm-6col-12 col-sm-6 是一样的,所以应该在移动设备上叠加。
    【解决方案2】:

    在这种情况下,要使其具有响应性,您只需将 img-fluid 类添加到图像即可。而已!

    编辑:

    它不适合你的主要原因是:

    你有太多不必要的 CSS hack。

    您尝试使用自定义 css 完成的许多事情都可以(并且应该完成)仅使用本机 Bootstrap 类来完成。因为自定义 css hack 往往需要更多 css hack 来解决原始 css hack 引起的问题...

    我的建议是:

    删除所有自定义 css,使用下面我的 sn-p 中的代码作为起点,然后开始逐行添加自定义 css,以查看自定义 css 破坏 Bootstrap 的位置。 (我可以告诉你,但我认为你宁愿自己学习) 提示:Bootstrap 4 默认是基于 flexbox 的。干涉这不是一个好主意。

    另外:您可能还希望让 Bootstrap 为小屏幕重新排序一些图像(如果您希望图像始终出现在相应部分的文本之前)。但这不是这个问题的一部分。

    最后,您不需要为container-fluid 提供单独的div。您可以将该类直接添加到您的sections 并摆脱divs。 Bootstrap 类可以添加到任何合适的 HTML 元素中,例如 sectionmainnav 等。它不必是 div

    这是完整的工作代码sn-p(点击下面的“运行代码sn-p”按钮并展开到整页):

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    
    <!-- Overview Section One -->
    <section id="overview1">
        <div class="container-fluid">
            <div class="row justify-content-left">
                <div class=" col-sm-6 overview-wrapper">
                    <div class="overview-content">
                        <img class="computer1 img-fluid" src="https://placeimg.com/900/400/tech" alt="laptop image">
                    </div>
                </div>
                <div class=" col-sm-6 overview-wrapper">
                    <div class="overview-content2">
                        <h3 class="overview-header">Overview Header One</h3><!--Header-->
                        <h4>Sub Header</h4><!--sub header-->
                        <!-- sub text -->
                        <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                        <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>         
                    </div>
                </div>
            </div>
        </div><!-- container -->
    </section>
    
    <!-- Overview Section 2 -->
    <section id="overview2">
        <div class="container-fluid">
            <div class="row justify-content-center">
                <div class="col-sm-6 text-left overview-wrapper">
                    <div class="overview-content2">
                        <h3 class="overview-header2">Overview Header Two</h3><!--Header-->
                        <h4>Sub Header</h4><!--sub header-->
                        <!-- sub text -->
                        <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                        <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                    </div>      </div>
                <div class="col-sm-6 text-center overview-wrapper">
                    <div class="overview-content">
                        <img class="computer1 img-fluid" src="https://placeimg.com/900/400/animals" alt="laptop image">
                    </div>
                </div>
            </div>
        </div> <!-- container -->
    </section>
    
    <!-- Overview Section 3 -->
    <section id="overview3">
        <div class="container-fluid">
            <div class="row justify-content-left">
                <div class="col-sm-6 overview-wrapper">
                    <div class="overview-content">
                        <img class="computer1 img-fluid" src="https://placeimg.com/900/400/nature" alt="laptop image">
                    </div>
                </div>
                <div class="col-sm-6 overview-wrapper">
                    <div class="overview-content2">
                        <h3 class="overview-header3">Overview Header Three</h3><!--Header-->
                        <h4>Sub Header</h4><!--sub header-->
                        <!-- sub text -->
                        <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                        <p class="lead2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut enim cursus, sagittis turpis a, congue leo. Morbi sed leo consectetur, auctor nisl vitae, sodales nunc.</p>
                    </div>
                </div>
            </div>
        </div><!-- container -->
    </section>

    【讨论】:

      【解决方案3】:

      只需在您的 css 中注释以下代码,这是不必要的 .overview-wrapper { -ms-flex-preferred-size: 0; flex-basis: 0; -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%; height: 650px; }

      并更新 col 类 col-sm-6 overview-wrappercol-md-6 overview-wrapper

      最后更新了小型设备的背景颜色 section#overview1 { background: linear-gradient(to bottom, #E7643B 50%, #fff 50%); }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2021-07-02
        • 2019-10-25
        • 2020-09-10
        • 1970-01-01
        相关资源
        最近更新 更多