2

我正在尝试创建一个流畅的布局,其中包装的内容从从左到右的流交替到从右到左的流。请参见下面的示例:

1   2   3   4   5
10  9   8   7   6
11  12  13  14  15
20  19  18  17  16

标记和样式http://codepen.io/2ne/pen/IiGCx

我尝试过弹性框和多列布局,但这些布局都不适合我。我希望有人可以帮助我提供理想的纯 css 解决方案,它不会改变 html,因为 html 是动态的。如果不是一个有效的 javascript/jquery 解决方案。

我发现这很难的原因是没有固定宽度,所以我不知道浏览器何时包装内容。

li {
  width: 160px;
  float: left;
} 

非常感谢您提供的任何帮助。

<ul class="clearfix">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
  <li>10</li>
  <li>11</li>
  <li>12</li>
  <li>13</li>
  <li>14</li>
  <li>15</li>
  <li>16</li>
  <li>17</li>
  <li>18</li>
  <li>19</li>
  <li>20</li>
</ul>
4

2 回答 2

1

这确实会改变您的 HTML,但只会添加类。如果您真的无法更改任何内容,您可以使用 JS/jQuery 添加这些类,这应该不会太难。

<style>
.r{
  float:right;
  width:20%;
}
.l{
  float:left;
  width:20%;
}
</style>

<ul class="clearfix">
  <li class="l">1</li>
  <li class="l">2</li>
  <li class="l">3</li>
  <li class="l">4</li>
  <li class="l">5</li>
  <li class="r">6</li>
  <li class="r">7</li>
  <li class="r">8</li>
  <li class="r">9</li>
  <li class="r">10</li>
  <li class="l">11</li>
  <li class="l">12</li>
  <li class="l">13</li>
  <li class="l">14</li>
  <li class="l">15</li>
  <li class="r">16</li>
  <li class="r">17</li>
  <li class="r">18</li>
  <li class="r">19</li>
  <li class="r">20</li>
</ul>
于 2013-05-23T09:19:17.273 回答
0

这是使用 Sass、CSS Flexbox 和 'order' 属性解决问题的简单方法。

请参阅 CodePen 上Brady Hullopeter ( @bradyhullopeter ) 的 Pen naive snakey flexbox

// See transpiled SCSS in CodePen

$order: 
  1 2 3 4 5 6 7 8 9 10 20 
  19 18 17 16 15 14 13 12 11 
  21 22 23 24 25 26 27 28 29 30 
  40 39 38 37 36 35 34 33 32 31 
  41 42 43 44 45 46 47 48 49 50 
  60 59 58 57 56 55 54 53 52 51 
  61 62 63 63 65 66 67 68 69 70 
  80 79 78 77 76 75 74 73 72 71 
  81 82 83 84 85 86 87 88 89 90 
  100 99 98 97 96 95 94 93 92 91;
  
li {
  @for $i from 1 through 100 {
    &:nth-child(#{$i}) {
      // order in a snake-like way illustrated by the change in background color
      order: nth($order, $i);
    }
  }
}

于 2017-08-01T15:25:55.173 回答