【发布时间】:2016-04-13 06:49:24
【问题描述】:
我想仅在 HTML 和 CSS 中重建一种模式:
正如我想象的那样,我需要一组元素(此处显示为点),这些元素彼此相邻并具有特定的边距。然后我可以尝试为每个点的第 n 个实例添加更大的边距,它开始一个新行,以抵消它所在的行。我在这里创建了一个示例:
wrapper {
width: 100%;
}
.dot {
width: 150px;
height: 150px;
margin: 15px;
border-radius: 50%;
display: inline-block;
background-color: #999;
}
.wrapper .dot:nth-child(4n) {
margin-left: 100px;
background-color: #dd77dd;
}
<div class="wrapper">
<div class="dot">Element 1</div>
<div class="dot">Element 2</div>
<div class="dot">Element 3</div>
<div class="dot">Element 4</div>
<div class="dot">Element 5</div>
<div class="dot">Element 6</div>
</div>
你也可以在这个小提琴中编辑它: https://jsfiddle.net/jessicajordan/j8238oo6/8/
此设置对于固定宽度的布局非常有效,例如当包含点元素的.wrapper 容器具有预定义的固定宽度时。
但是,我想让容器宽度响应(例如将其设置为 100% 宽度并使其宽度可根据视口大小调整),这意味着点的行可以包含不同数量的点元素,具体取决于.wrapper 容器。因此,开始新行的点元素应该通过使用比其他点更大的边距来为其添加偏移量,每次.wrapper 容器大小发生变化时都会是不同的。
如果仅在 HTML + CSS 中可行:如何为每第二行元素添加偏移量并在不同的容器大小中保留此布局?顺便提一下:点元素本身应该有一个固定的宽度,并且不应该随着.wrapper容器的大小而缩放。
【问题讨论】:
-
是否有固定点数或最大点数?
-
好问题 - 在我的设置中,它永远不会超过 30 个点。虽然目前还没有关于固定点数的指导方针。 12-30 点的任何解决方案都可以。
-
点会保持固定大小吗?如果 dot 是已知大小,则可能在新行的每个中断处使用媒体查询。
-
@AndrewClody 是的,它们将保持相同的大小。实际上,您是对的,以这种方式实现它并不难,每行可能有 3 个点 - 三个不同的媒体查询应该没问题,然后将边距添加到特定的点元素。但是有没有更优雅的方式来处理每行十几个点?
-
如果这对某些事情很重要,那么创建这个具有重复背景和
css-gradients的模式是小菜一碟。仍在思考是否有一种好方法可以动态地处理元素并为其设置样式,但这似乎是一个真正的挑战。
标签: html css layout responsive-design