我一直在努力解决CSS中的以下问题。我有一个任意数量的项目(跨度或div),我想以蛇形图案包装在容器内。
我的意思是,如果我有10个项目,每个项目宽度为20px,我希望它们在60px宽的容器中显示如下:
0 1 2
5 4 3
6 7 8
9
我曾尝试在CSS中使用flexbox,但我只能显示如下所示的项目:
0 1 2
3 4 5
6 7 8
9
如果可以提供帮助,我知道单个物品的确切宽度,但我不知道容器的宽度。
非常感谢任何帮助。
提前谢谢!
答案 0 :(得分:9)
如果您使用parent
- rows
- items
创建HTML结构,则可以在flex-direction: row-reverse
元素上使用.row:nth-child(2n)
,这将创建所需的结果。< / p>
.content {
display: flex;
flex-direction: column;
}
.row {
display: flex;
justify-content: space-between;
}
.row:nth-child(2n) {
flex-direction: row-reverse;
}
.row:nth-child(2n):last-child .item {
margin-right: auto;
}
<div class="content">
<div class="row">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
<div class="row">
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
<div class="row">
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
</div>
<div class="row">
<div class="item">10</div>
</div>
</div>
答案 1 :(得分:3)
在不知道标记限制的情况下,您可以使用以下结构和float
值来使其正常工作。
.ltr, .rtl {
width: 60px;
}
.ltr div, .rtl div {
width: 20px;
height: 20px;
display: inline-block;
}
.rtl div {
float: right;
}
.ltr div {
float: left;
}
&#13;
<div class="ltr">
<div>0</div><div>1</div><div>2</div>
</div>
<div class="rtl">
<div>3</div><div>4</div><div>5</div>
</div>
<div class="ltr">
<div>6</div><div>7</div><div>8</div>
</div>
&#13;
答案 2 :(得分:3)
使用css direction: rtl;
演示:http://codepen.io/sol_b/pen/YpjGKK
<div class="container">
<div class="row">
<span>1</span>
<span>2</span>
<span>3</span>
</div>
<div class="row2">
<span>4</span>
<span>5</span>
<span>6</span>
</div>
<div class="row">
<span>7</span>
<span>8</span>
<span>9</span>
</div>
</div>
.row2 {
direction: rtl;
float:left;
}
.row {
clear:both;
}