javascript - 使用 css 的响应之字形布局?

标签 javascript html css

我想创建一个响应式蛇形/锯齿形布局,如下所示: zig zag layout starting from the middle 这是一条由方形图像和圆形组成的路径,从容器的中心开始向下延伸。

元素数量未知,由服务器数据决定。

我如何使用纯 css 实现这一点?

这是一个可能的代码:

<div class="container">
  <div class="square"></div>
  <div class="circle"></div>
  <div class="circle"></div>
  <div class="square"></div>
  <div class="circle"></div>
  <div class="circle"></div>
  <div class="circle"></div>
  <div class="circle"></div>
  <div class="square"></div>
/<div>

Full Codepen

最佳答案

我已经解决了一个极其复杂的 hack ( codepen )。不过,您真的不希望在生产中使用它。它也只适用于三个“跳跃”(即元素流从左到右,反弹,返回到左侧,再次反弹并进入永恒的空虚,再也不会被看到)。

hack 的工作原理如下:首先,对于每个可能的“跳跃”,我们从左侧开始计算我们需要将元素移动到的位置。对于第一跳,它是 $i * 50px($i 是元素从 0 开始的索引),对于第二跳它是 100vw - ($i * 50px - 100vw) == 200vw - $i * 50px (100vw 是窗口宽度;$i * 50px - 100vw 是元素相对于屏幕右边框的位置),第三个是 $i * 50px - 200vw

我们现在需要计算max(min($first, $second), $third)。不幸的是,CSS calc() 函数不允许这样做,因此我们在图形之前放置了一个特殊元素:

.spacer {
  display: inline-block;
  max-width: 50px; /* first */
  min-width: 500px; /* third */
}

.spacer > span {
  display: inline-block;
  max-width: 300px; /* second */
  width: 10000px;
}

(您可以在单独的 codepen 中使用这个垫片。)

同样,这是一个极其复杂和缓慢的解决方案,所以您现在最好坚持使用 JavaScript(除非有人发明了一些更聪明的纯 CSS 的东西,而且实际上可以工作)。

关于javascript - 使用 css 的响应之字形布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44769478/

相关文章:

javascript - firebase 实时数据库未在 native react 中使用 onPress 获取,每次都必须刷新 ref().on 函数

javascript - 将元素的样式设置为它已有的值是否会影响性能?还是所有浏览器都忽略它?

javascript - 使用 Javascript onClick 更改 div 内容

javascript - 在 HTML 部分添加水平滚动条

javascript - 如何让不同尺寸的div在屏幕上居中

javascript - 为什么我的 CSS 背景图像无法在 Electron 中加载?

javascript - 如何保护 css 和 js 文件意味着最终用户无法下载我们的 css 和 js 文件?

css - Firefox 渐变作为 mask

css - 图像的最大宽度属性应该在计算其包含的表格单元格的大小之前还是之后应用?

javascript - jquery禁用表单提交