【发布时间】:2017-07-11 02:55:54
【问题描述】:
我正在开发一个 Image-Gallery-Widget,用户可以在其中设置缩略图宽度、缩略图高度和边距(缩略图之间),并且该小部件将在一个漂亮的网格中显示所有图像缩略图,其中每个图像具有相同的宽度和高度。
我想知道是 css-flexbox 还是 css-grid 使这成为可能,而无需在代码中定义行和列,也不需要断点/媒体查询。
Thumbnail-Images 被包裹在一个锚点中,所以画廊项目(或网格项目)看起来像这样:
<a href="#" class="gallery-item">
<img src="myimage" width="300" height="200" />
</a>
画廊项目应该完全填满容器 div,这意味着,一行中的最后一个缩略图和容器 div 的右边缘之间不应有间隙(除非我们没有足够的项目来填充该行,即当 3 个项目连续 ft,但我们只有 8 个项目,那么第 3 行将只有 2 个项目,并且右侧有一个与一个项目一样宽的间隙。
画廊项目的宽度永远不能超过用户设置的缩略图宽度,因为我们不想降低缩略图的质量。让我们假设此示例的宽度为 300 像素。图库项目之间的边距由用户固定和设置。如果没有足够的项目来填充一行,只需将它们左对齐,即像这样:
我不想在 CSS 中定义任何断点,也不想为行/列结构添加任何 html。我希望浏览器简单地将尽可能多的画廊项目并排放置到容器中。如果右侧有间隙(即 3 个缩略图 * 300px 宽度 = 900px,但容器为 1000px 宽),浏览器应缩小网格项目,以便再容纳一个画廊项目,从而消除间隙。我需要能够在每个画廊项目周围定义一个边距。
您可以在此 gif 中看到所需的响应行为(更改浏览器宽度时):
您在 gif 中看到的内容是在没有 flexbox 的情况下完成的,但需要大量的 CSS,我希望使用 flexbox 来避免这些。我对 flexbox 进行了相当多的研究,但还没有完全理解它。
感谢您的任何提示!
【问题讨论】:
-
这里允许js吗?
-
不,我正在寻找仅 CSS 的解决方案。
-
请贴出您尝试过的代码。
-
@Michael_B 还没有尝试过任何代码,因为我精通 CSS,但对 flex 或网格布局一无所知,感觉这些会提供最简单的 CSS-唯一的解决方案。