css中的蛇状排列

时间:2016-12-09 16:23:49

标签: css

我一直在努力解决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

如果可以提供帮助,我知道单个物品的确切宽度,但我不知道容器的宽度。

非常感谢任何帮助。

提前谢谢!

3 个答案:

答案 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值来使其正常工作。

&#13;
&#13;
.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;
&#13;
&#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;
}