如何使方块在html / css的移动视图中连续滚动?

时间:2018-05-29 08:40:53

标签: html css responsive-design media-queries horizontal-scrolling

我在下面有一个屏幕截图,我在fiddle中复制了它。在小提琴中我创建了一个父div,其中我提到了所有2行:

<div class="product-all-contents">

<div class="product-contents">
</div>

<div class="product-contents">
</div>

</div>

enter image description here

问题陈述:

我想在移动设备/平板电脑视图中单独的行滚动。我为了使它滚动而尝试的CSS代码如下所示它似乎不起作用。我是否还需要设置最小宽度以使行在移动/平板电脑视图中滚动?

@media only screen and (max-width: 767px)
{
.product-all-contents
{
  overflow-x: auto;
}
} 

2 个答案:

答案 0 :(得分:9)

  • 1)您需要将overflow-x设置为.product-contents以便显示 在较小的屏幕上滚动
  • 2)将min-width设置为.product,这样它就不会变小 设备
  • 3)在:not中使用.product选择器,将margin-right设置为空格 每个项目之间将保持
  • 4)从white-space中的.product-all-contents移除@media only screen and (max-width: 767px),因为现在不需要它

.product-contents {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem;
  overflow-x: auto;
}
.product-contents .product {
  width: 10%;
  min-width: 90px;
  text-align: center;
  height: 150px;
  padding-top: 1%;
  padding-left: 1%;
  padding-right: 1%;
  border-style: solid;
  border-width: 3px;
  border-color: rgb(145, 147, 150);
  background-color: white;
  border-radius: 10px
}
.product-contents .product:not(:last-child) {
    margin-right: 15px;
}
.product-contents .product img {
  max-width: 100%;
}

@media only screen and (max-width: 767px)
{
.product-all-contents
{
  overflow-x: auto;
  /*white-space: nowrap;*/
}
}
<div class="product-all-contents">

<div class="product-contents">
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
</div>

<div class="product-contents">
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
  <div class="product"><img src="http://via.placeholder.com/150x150" alt="" /></div>
</div>

</div>

更新了小提琴Here

答案 1 :(得分:2)

最好修复盒子的高度和宽度,而不是使用百分比宽度,因为页面布局在所有屏幕上都是一致的,用户也可以水平滚动单个产品行< / p>

只需更改以下CSS规则我已更改.product类的CSS规则,并为产品行中的水平滚动添加了一个额外的媒体查询。

.product-contents .product {
    min-width: 160px;
    width:160px;
    text-align: center;
    height: 150px;
    border-style: solid;
    border-width: 3px;
    border-color: rgb(145,147,150);
    background-color: white;
    border-radius: 10px;
    padding: 20px;
    margin-left: 10px;
}

@media only screen and (max-width: 767px)
{
  .product-contents{
     overflow-x: auto;
  }
}

希望这对你有用:)