【问题标题】:How do I change a five by three gird to a three by five?如何将五乘三网格更改为三乘五?
【发布时间】:2016-04-26 23:21:01
【问题描述】:

我有 15 张图片,我将它们显示在五列三行的网格中。使用媒体查询,我正在减小不同分辨率的大小,并希望以特定分辨率更改布局,因此每行三个而不是五个。

我正在使用宽度为 20% 的浮动分区来进行布局,但是当我将样式更改为 33% 时,前两行工作,然后在第三行,您只会在右侧看到一个图像,然后其他行按您的预期工作。

代码开头是这样的:

<div class="catalogue" style="display: inline-block;">
    <div class="catalogue-items">
        <img alt="Item1" src="/images/item1.png" style="width: 200px; height: 160px;" /></div>
    <div class="catalogue-items">
        <img alt="Item2" src="/images/item2.png" style="width: 204px; height: 160px;" /></div>
    <div class="catalogue-items">
        <img alt="Item3" src="/images/item3.png" style="width: 200px; height: 160px;" /></div>
    <div class="catalogue-items">
        <img alt="Item4" src="/images/item4.png" style="width: 199px; height: 160px;" /></div>
.
.
.
<div class="catalogue-items">
        <img alt="Item15" src="/images/item15.png" style="width: 199px; height: 160px;" /></div></div>

初始样式为:

.catalogue{
    width: 1200px; 
    margin: 0 auto;
    padding-top: 26px;
}
.catalogue-items{
    width: 20%;
    text-align: center; 
    float: left; 
    padding-bottom: 13px;
}

改变它们的样式是:

@media (max-width: 751px) {
   .catalogue{ width: 658px;}
   .catalogue-items { width: 33% !important;}
   .catalogue-items img{ width: 112px !important;}
}

如果我检查元素并删除图像上的一侧,它会正确显示,只是图像比我想要的大。如果我将该样式的大小更改为图像的大小,它将不起作用。

有谁知道我做错了什么?

【问题讨论】:

  • 为什么我需要使用 flex?当然,这不应该是一个要求。
  • 尝试width: calc(100% / 3)width:33.3333%。理想情况下,您希望尺寸尽可能接近 1/3。
  • 这些选项都没有任何区别。
  • 这看起来对我有用。你在期待什么? JSFiddle

标签: html css


【解决方案1】:

在我的示例中,我稍微修改了您的代码。最重要的变化是min-height,其次是移除内联样式和优先考虑移动样式的改进。

当您浮动项目时,您会希望所有项目的高度相同,否则当它们开始新行时,如果前一个元素更高,它们可能会 "snag"比其他人。当浮动项目没有足够的空间容纳一行时,它会向下移动到下一行并滑过。

.catalogue {
  display: inline-block;
  margin: 0 auto;
  padding-top: 26px;
  width: 658px;
}
.catalogue-items {
  float: left; 
  padding-bottom: 13px;
  width: 33.33333%;
  min-height: 160px;
  text-align: center; 
}
.catalogue-items img {
  display: inline-block;
  max-width: 100%;
}

@media ( min-width: 752px ) {
  .catalogue {
      width: 1200px; 
  }
  .catalogue-items {
      width: 20%;
  }
}
<div class="catalogue">

    <div class="catalogue-items">
        <img alt="Item1" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item2" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item3" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item4" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item5" src="http://placehold.it/200x160px">
    </div>

    <!-- new row -->

    <div class="catalogue-items">
        <img alt="Item1" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item2" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item3" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item4" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item5" src="http://placehold.it/200x160px">
    </div>

    <!-- new row -->

    <div class="catalogue-items">
        <img alt="Item1" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item2" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item3" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item4" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item5" src="http://placehold.it/200x160px">
    </div>

    <!-- new row -->

    <div class="catalogue-items">
        <img alt="Item1" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item2" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item3" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item4" src="http://placehold.it/200x160px">
    </div>
    <div class="catalogue-items">
        <img alt="Item5" src="http://placehold.it/200x160px">
    </div>

</div>

演示JSFiddle.

【讨论】:

  • 如果我在目录项划分上设置一个最小高度,这会解决问题吗?
  • @RichardYoung 这取决于。如果.catalogue-items 上的min-height 始终等于最高图像的高度,则。如果您将min-height 设置为100px 并且您的所有图像(除了一对)都是100px 并且这对图像的高度是125px,那么。这些图像将超出定义的min-height,因为它定义了最小值而不是上限。如果你想使用min-height,请确保min-height = tallest image,否则你将不得不使用heightmax-heightoverflow[-x,-y]属性。
  • 我就是这么想的。谢谢你。我实际上是在拔头发,通常是这样一个简单的答案。
【解决方案2】:

也许您可以将 min-height 添加到 .catalogue-items

【讨论】:

  • 那行得通。只要最小高度为 92 像素或更高,它就可以工作。我不明白为什么它起作用了。可以请教一下吗?
猜你喜欢
  • 2014-03-26
  • 1970-01-01
  • 2020-03-07
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
相关资源
最近更新 更多