【问题标题】:Fit content (100%) depending on number of items in a row适合内容 (100%) 取决于一行中的项目数
【发布时间】:2015-07-05 07:23:55
【问题描述】:

我一直在努力制作一个能够根据包含的项目数量自动适应内容 (width: 100%) 的图片库。

这就是我的意思: 假设这是我的画廊: http://codepen.io/anon/pen/eNMOEz

.item {
  width: 75px;
  height: 75px;
  border-width: 1px;
  float: left;
}

当您缩放浏览器时,由于项目设置为float: left,因此每行的项目数会增加。

但是,画廊的宽度在页面右侧有间隙,因为每个.item 都被定义为恰好75px

我想要的看起来更接近这个: http://codepen.io/anon/pen/xGWKaP

.item {
  width: 5%;
  float: left;
}

您可以看到每行的项目完全适合页面width,因为项目宽度定义为百分比而不是固定的 px 值。但是,这个也有两个问题,我想解决:

  1. 每行的项目数是固定的(在示例中为 20)。我希望项目编号像“Math.floor”值,表示可以容纳多少。例如,如果项目宽度设置为 75 像素并且页面宽度为 800 像素,则项目计数应为 10(因为 750 像素是 800 像素宽度可以覆盖的最大值。)所以它应该是 @ 987654333@

  2. 每行底部有一个空隙,我不知道是什么原因造成的。

我主要是在寻找一个纯 css 的解决方案 - 但也可以接受一个聪明且无故障的 js。

这是一个很长的帖子,我希望一切都清楚。

【问题讨论】:

  • 如果最后一行只有两张图片,你想要什么?它们应该是 50% 宽吗?...否则,如果没有 JS,这将非常困难。
  • 不,他们应该继续流程。如果单个图像占整个页面的 5%,那么所有图像都应该是 5%。但我仍然希望看到您的解决方案。 @Paulie_D
  • 你可以接近,flexbox...如果您允许项目增长以匹配宽度(起始宽度为 75px)但剩余部分的对齐是有问题的...我不确定它是否可以完全按照您的想象解决。 codepen.io/Paulie-D/pen/ZGxzmL?editors=110
  • 哦...顺便说一句...你提到的差距...这是因为图像没有display:blockcodepen.io/Paulie-D/pen/dombaj
  • 我很确定这不能用 CSS 解决...布局的块性质只是不允许行换行同时收缩换行.

标签: javascript html css


【解决方案1】:

您可以在以下位置查看潜在答案:Flex - controlling the last row

关于你的第二个问题:

2) 每行底部都有一个空隙,我不知道是什么原因造成的。

这是由块内的图像引起的。如果添加 'vertical-align' top/middle/bottom,那么间隙就会消失。

【讨论】:

    【解决方案2】:

    Flexbox 对您更有用。它将允许您进行您在帖子中要求的调整。

    在这里查看一个很棒的教程:https://css-tricks.com/snippets/css/a-guide-to-flexbox/

    【讨论】:

      【解决方案3】:

      试试看:

      .item {
          width: 10vw;
          height: 10vw;
          border-width: 1px;
          float: left;
      } 
      

      或者它(如果存在滚动条):

      body {
        margin: 0;
        padding: 0;
        font-size:0px;
      }
      .item {
        width: 5%;
        height: auto;
        /*border-width: 1px;*/
        float: left;
      }
      img {
        width: 100%;
      }
      

      试试这个,如果你想连续显示所有图像(真的我不完全理解,因为英语不是我的母语,你应该注意这一点,因为我写得不好,并解释一下 ¬¬)

      html,body {
        margin: 0;
        padding: 0;
        font-size:0px;
        width:100%;
      }
      #wrap {
        display:inline-table;
        overflow:hidden;
        width:100%;
        height:auto;
      }
      .item {
        display:table-cell;
        height:10px;
      }
      img {
        width: 100%;
      }
      

      【讨论】:

      • 这里的“取决于项目数”部分在哪里?这与我的第二个链接有何不同?
      • 抱歉,我没有正确理解第一个问题,我认为“取决于项目数”是指每行,不同之处在于代码清除了图像底部的行与行之间的间隙。你想连续显示所有图像吗?
      • 请再读一遍问题
      • 我更新了回复,告诉我这是不是你想要的。
      猜你喜欢
      • 2010-12-09
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多