使用 FlexBox Grid

问题描述

我正在尝试实现一个水平滚动条来显示图像,但是包装器(滚动容器)容器的宽度溢出了。我还需要使用 FlexBox 网格使其响应不同的屏幕尺寸。

HTML 和 SCSS 的结构如下所示。容器必须位于 mat-tab-group(角材质)内。 div 'item' 将包含多个项目。

我在 chrome 上运行它并检查了检查器,显然 mat-tab-body-wrapper display: flex 属性导致了这个问题。 是否有解决此问题的方法

HTML

  <mat-tab-group>
      <mat-tab label="First"> 
     <div class='row scroll-container'>
           <div class='col-xs-5 col-sm-8 col-md-9 col-lg-12'>
             <div class='horizontal-slider'>
               <div class='slider-container'>
                 <div class='item'>
                   <img src='' alt=''>
                 </div>
               </div>
             </div>
           </div>
         </div>
      </mat-tab>
      </mat-tab-group>

SCSS

 .scroll-container {
            margin: 8px 0 0 0;
           
    .horizontal-slider {
       display: flex;
       overflow-y: hidden;
       max-width: inherit;
       overflow-x: scroll;
       Box-sizing: border-Box;

    .slider-container {
      
             .item {
               display: flex;
               margin-right: 8px;
        
               img {
                 width: 124px;
                 height: 124px;
               }
             }
        
           }
         }


}
    

解决方法

最有效的解决方案如下所示。除了 flex-nowrap,您还需要设置 overflow 属性以防止整个页面展开。

有溢出属性:

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">

 <h6>Bootstrap 4 horizontally scrollable card groups</h6>
 <div class="d-flex flex-row flex-nowrap overflow-auto">
      <div class="card card-block mx-2" style="min-width: 300px;">Card</div>
      <div class="card card-block mx-2" style="min-width: 300px;">Card</div>
      <div class="card card-block mx-2" style="min-width: 300px;">Card</div>            
</div>