我的任务是使用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;
}
}
答案 0 :(得分:1)
您可以使用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>