javascript - CSS 将 SVG 排列成偏移网格

标签 javascript css reactjs

我的任务是使用 SVG 创建这样的背景,我使用的是 React。

我想知道是否有一种简单的 CSS 方法可以将它们排列在网格中,即第二行有一个偏移量。

我还需要使宽度动态化,即屏幕宽度有正确数量的图标。

我很确定我知道如何在 javascript 中执行此操作,但是如果有人知道一种简单的 CSS 方法,那将非常有用。

目前他们排成一行

.bg-icons{
    z-index: 1;
    position: absolute;
    height: 200px;
    overflow: visible;

    svg{
        font-size: 4em;
        margin: 20px;
        opacity: 0.05;
    }
}

enter image description here

最佳答案

您可以通过绘制一堆列并将所有奇数或偶数子元素偏移到每列的开头、中心或结尾来使用 flexbox 做一些事情。

.bg-icons{
    z-index: 0;
    position: absolute;
    height: 100px;
    overflow: hidden;
    width: 220px;
    background-color: lightgreen;
    display: flex;
    flex-flow: column;
    flex-wrap: wrap;
    justify-content: space-between;
}

svg {
  align-self: end;
  flex-grow: 1;
  flex-basis: 20%;
  margin: 1px;
  opacity: 0.5;
}
svg:nth-child(odd) {
  align-self: center;
}
<div class="bg-icons">
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
  <svg height="20" width="20">
    <circle cx="10" cy="10" r="10" fill="pink" />
  </svg>
</div>

关于javascript - CSS 将 SVG 排列成偏移网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911543/

相关文章:

javascript - jQuery 并防止函数在双击超链接时执行两次

reactjs - Material UI 在生产中破坏 NextJS 应用程序

node.js - 我可以在nodejs同构react的react类中重新发送整个页面吗?

javascript - 将文本和一些基本动画放在圆弧中

javascript - Laravel 5.1 - 如果变量有值则隐藏部分 (javascript)

javascript - 可以使浏览器不删除字符

html - 响应式顶部导航

javascript - 如何使 Base64 解码函数能够解码本地语言的字符串?

html - Angular:覆盖其他组件的CSS

reactjs - 如何使用 styled-icons 输出故事书中的图标列表