html - 在响应式布局中每隔第 n 行偏移一次

标签 html css layout responsive-design

有一个模式我只想用 HTML 和 CSS 重建:

offset every odd row of dots

正如我想象的那样,我需要一组元素(此处显示为点),这些元素彼此相邻并具有特定的边距。然后,我可以尝试为开始新行的每个第 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>

你也可以在这个 fiddle 中编辑它: https://jsfiddle.net/jessicajordan/j8238oo6/8/

此设置完全适用于固定宽度的布局,例如当包含点元素的 .wrapper 容器具有预定义的固定宽度时。 但是,我想让容器宽度响应(例如,将其设置为 100% 宽度并通过视口(viewport)大小调整其宽度),这意味着点行可以包含不同数量的点元素,具体取决于.wrapper 容器。因此,每次 .wrapper 容器大小更改时,开始新行并且应该通过使用比其他点更大的边距为其添加偏移量的点元素将是不同的。

如果仅在 HTML + CSS 中可行:如何为元素的每 2 行添加一个偏移量并在不同的容器大小中保留此布局?只需提及:点元素本身应具有固定宽度,并且不应随 .wrapper 容器缩放。

最佳答案

仅使用 CSS 且无需媒体查询即可偏移每个奇数行的一种方法是使用 shape-outside属性(property)。
请注意,此属性为 candidate recomendation因此有 low browser support .

这是一个最多支持 5 行的示例:

.wrapper {
  width: 100%;
}
.wrapper div {
  width: 50px;
  height: 50px;
  margin: 50px;
  border-radius: 50%;
  display: inline-block;
  background-color: #000;
  text-align: center;
}
.wrapper:before {
  content: '';
  float: left;
  width: 75px;
  height: 9999px;
  -webkit-shape-outside: polygon(0px 150px, 75px 150px, 75px 300px, 0 300px, 0px 450px, 75px 450px, 75px 600px, 0px 600px);
  shape-outside: polygon(0px 150px, 75px 150px, 75px 300px, 0 300px, 0px 450px, 75px 450px, 75px 600px, 0px 600px);
}
<div class="wrapper">
  <div></div><div></div><div></div><div></div><div></div>
  <div></div><div></div><div></div><div></div><div></div>
  <div></div><div></div><div></div><div></div><div></div>
  <div></div><div></div><div></div><div></div><div></div>
</div>

关于html - 在响应式布局中每隔第 n 行偏移一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34679560/

相关文章:

html - 如何使 float DIV 列表出现在列中,而不是行中

html - 如何使用 HTML/CSS 创建第一列固定的表格?

html - 如何使用当前窗口高度的100%(不多也不少)?

html - 如何排列3个div : div 1 and 2 stacked in left column,和div 3是右列

php - 如何使用 cURL 获取目标 URL?

ios - Nav view overboard and half-hidden on ionic + ibm mobile first

javascript - Dojo Internet Explorer 6 png 问题

html - Bootstrap 中的类别内联 block "buttons"

css - 如何定位动态大小的图像与顶部边框齐平?

apache-flex - 在 Flex 中调整容器大小的最佳方法是仅遵循父容器的显式尺寸