Bootstrap 4可防止通过水平滚动对溢出的行进行裁剪

时间:2019-03-11 10:01:24

标签: css scroll bootstrap-4 overflow clipping

我为所有包含的row创建了一个col,并进行水平滚动。

我使用了以下问题的答案:Bootstrap 4 horizontal scroller div

但是,我发现container中的元素被裁剪了。现在,在某些OS浏览器组合(例如MacOS + Chrome)上,滚动条是隐藏的,除非用鼠标将其悬停,并且在测试中,我们的用户之一无法找到下一个(剪切的)col元素。 / p>

我想知道如何将元素“展开”到容器宽度之外,以便用户可以立即看到还有更多内容需要滚动。

编辑:

相关代码来自this answer,并且也发布在codepen上。

编辑2:

请注意,我想防止容器在滚动状态下移动。

3 个答案:

答案 0 :(得分:2)

保持隐藏的滚动条是一种OSX功能,如果用户希望滚动条保持可见状态,则必须退出。您没有什么可以强迫他们保持可见的。但是您可以明确地设置样式,以便chrome和safari至少可以显示出来。

您可以测试Mac OS和chrome / safari组合,因为这是特定于平台的问题。然后,您可以覆盖滚动条的样式。这迫使它显示出来。

.testimonial-group > .row {
  overflow-x: scroll;
  white-space: nowrap;
}

.testimonial-group > .row::-webkit-scrollbar-track
{
   box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 
   border-radius: 10px;
   background-color: #F5F5F5;
}


.testimonial-group > .row::-webkit-scrollbar
{
  width: 0px;
  height: 12px;
  background-color: #F5F5F5;
}

.testimonial-group > .row::-webkit-scrollbar-thumb
{
   border-radius: 10px;
   box-shadow: inset 0 0 6px rgba(0,0,0,.3);
   background-color: #555;
}

答案 1 :(得分:1)

正如您所说的那样,您希望它是表响应的,默认情况下,所有div都采用与父级可用宽度相等的宽度,那么您不应该使用col-sm-4。 此类的div的父级宽度为 33.33%,而您的其他div肯定不会在此显示。

因此,对于响应式div,您可以通过这种方式编辑此代码。 Added link for Codepen here.

<div class="container testimonial-group">
 <div class="row text-center flex-nowrap">
 <div class="col">1</div><!--
  --><div class="col">2</div><!--
  --><div class="col">3</div><!--
  --><div class="col">4</div><!--
  --><div class="col">5</div><!--
  --><div class="col">6</div><!--
  --><div class="col">7</div><!--
  --><div class="col">8</div><!--
  --><div class="col">9</div>
 </div>
</div>

CSS

/* The heart of the matter */
.testimonial-group > .row {
  white-space: nowrap;
}
.testimonial-group > .row > .col-sm-4 {
  display: inline-block;
  float: none;
 }

 /* Decorations */
.col { color: #fff; font-size: 48px; padding-bottom: 20px; padding-top: 18px; 
}
.col:nth-child(3n+1) { background: #c69; }
.col:nth-child(3n+2) { background: #9c6; }
.col:nth-child(3n+3) { background: #69c; }

答案 2 :(得分:1)

您需要覆盖默认的滚动条颜色和行为

.row {
  overflow-x: scroll;
  scroll-behavior: smooth;
  align-items: left;
  justify-content: left;
  flex-direction: row;
}
.col-sm-4 {
 display: inline;
 align-items: left;
 justify-content: left;
}
/*scroll bar style all brwosers expet IE && Firefox*/
::-webkit-scrollbar {
  width: 8px;
    background-color: rgba(255,255,255,.4);
}

::-webkit-scrollbar-track {
  -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
    border-radius: 10px;
    background-color: rgba(255,255,255,.4);
}

::-webkit-scrollbar-thumb {
  border-radius: 10px;
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
    background-color: #787c7d;
}

否则,您可以使用JS代替CSS