引导程序4中的水平滚动

时间:2018-11-19 15:42:47

标签: html5 css3 bootstrap-4 horizontal-scrolling

我正在尝试对移动视图@media only screen and (max-width : 480px)上的某些卡片进行水平滚动。我在这里读过其他帖子,包括this one,但似乎没有一个适合我。我想我的一个可能问题是,现在我的卡彼此堆叠。

这就是我现在拥有的:

enter image description here

这是我需要实现的:

enter image description here

.mobile-card-container {
  display: block;
}

.card-background {
  background-color: #ffffff;
  border-radius: 6px;
  margin-top: 16px;
  height: 100px;
  -webkit-box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
  -moz-box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
  box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

<div class="row">
  <!-- Mobile Card Container -->
  <div class="col-12 mobile-card-container">
    <div class="row">
      <!-- Card 48 cuotas -->
      <div class="col-10 card-background simulacion mx-auto" style="border: 1px solid red;">
        Card content
      </div>
      <!-- /Card 48 cuotas -->
      <!-- Card 36 cuotas-->
      <div class="col-10 card-background simulacion mx-auto" style="border: 1px solid blue;">
        Card Content
      </div>
      <!-- /Card 36 cuotas -->
      <!-- Card 24 cuotas -->
      <div class="col-10 card-background simulacion mx-auto" style="border: 1px solid green;">
        Card Content
      </div>
    </div>
  </div>
</div>

2 个答案:

答案 0 :(得分:0)

    .mobile-card-container {
      display: block;
    }

    .card-background {
      background-color: #ffffff;
      border-radius: 6px;
      margin-top: 16px;
      height: 100px;
      -webkit-box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
      -moz-box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
      box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
    }
 <div class="container">
    <div class="row">
      <!-- Mobile Card Container -->
      <div class="col-md-12 mobile-card-container">
        <div class="row">
          <!-- Card 48 cuotas -->
          <div class="col-md-4 card-background simulacion mx-auto" style="border: 1px solid red;">
            Card content
          </div>
          <!-- /Card 48 cuotas -->
          <!-- Card 36 cuotas-->
          <div class="col-md-4 card-background simulacion mx-auto" style="border: 1px solid blue;">
            Card Content
          </div>
          <!-- /Card 36 cuotas -->
          <!-- Card 24 cuotas -->
          <div class="col-md-4 card-background simulacion mx-auto" style="border: 1px solid green;">
            Card Content
          </div>
</div>

答案 1 :(得分:0)

为此,您将必须更改Bootstrap类的默认行为。我们必须在卡片容器上使用flex-nowrap来最小化媒体屏幕,并将 overflow-x 样式更改为 auto 。总之,我们将使用接下来的主要更改:

CSS

@media only screen and (max-width : 576px)
{
  .mobile-card-container > .row {
    overflow-x: auto;
  }
}

请注意,我使用max-width: 576px是为了与电流Bootstrap Breakpoints兼容。

HTML结构

<!-- Mobile Card Container -->
<div class="container-fluid mobile-card-container">
  <div class="row text-center flex-nowrap flex-sm-wrap">
    <!-- Cards will be here -->
  </div>
</div>

因此,对于 XS 屏幕设备,flex-nowrap类将与先前定义的样式结合使用,接近您要搜索的样式。在其他类型的屏幕( SM,MD,LG )上,将保留Bootstrap类的默认行为(请注意 flex-sm-wrap 类的用法)。 / p>

要完成此操作,您可以检查下一个工作示例(在全屏模式下播放窗口调整大小的游戏):

@media only screen and (max-width : 576px)
{
  .mobile-card-container > .row {
    overflow-x: auto;
  }
}

.card-background {
  background-color: #ffffff;
  border-radius: 6px;
  margin: 16px 5px;
  height: 100px;
  -webkit-box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
  -moz-box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
  box-shadow: 0px 2px 4px 1px rgba(0, 51, 102, 0.1);
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

<!-- Mobile Card Container -->
<div class="container-fluid mobile-card-container">
  <div class="row text-center flex-nowrap flex-sm-wrap">
    
    <!-- Card 48 cuotas -->
    <div class="col-10 card-background mx-sm-auto bg-danger">
      Card content
    </div>
    <!-- /Card 48 cuotas -->
      
    <!-- Card 36 cuotas-->
    <div class="col-10 card-background mx-sm-auto bg-primary">
      Card Content
    </div>
    <!-- /Card 36 cuotas -->
      
    <!-- Card 24 cuotas -->
    <div class="col-10 card-background mx-sm-auto bg-danger">
      Card Content
    </div>
    <!-- /Card 24 cuotas -->
      
  </div>
</div>