2017-12-02 122 views
-1

我试图将列表项放置在两行中,以便从最下面一行的项目向右移动50%。该项目的顺序也很重要,并应该像下面的图片:将列表项目放在两列中,移位50%

enter image description here

下面是代码,我想出了:

https://codepen.io/Deka87/pen/qVgjGv

ul { 
 
    list-style: none; 
 
    padding-left: 0; 
 
    margin-bottom: 0; 
 
    column-count: 3; 
 
    column-width: 33.33%; 
 
} 
 
ul > li:nth-child(even) { 
 
    transform: translateX(50%); 
 
}
<ul> 
 
<li> 
 
    1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
</li> 
 
<li> 
 
    2. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
</li> 
 
<li> 
 
    3. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
</li> 
 
<li> 
 
    4. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
</li> 
 
<li> 
 
    5. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
</li> 
 
<li> 
 
    6. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
</li> 
 
</ul> 
 
<!--/.timeline-list -->

正如您所看到的,底部的移位项目会“截断”在列中。任何想法如何解决这个问题,或者任何其他解决方案,赞赏。

+0

这听起来像是你可以用flexboxwrap解决的问题,但第一个错误实际上是假设你想使它成为33.3%28,57(在开始或结束时取半角元素。 (100/3,5)。 我会在做完其他事情之后再回来。 –

+0

@FelipeQuirós,谢谢!希望这个解决方案也考虑到物品的顺序。 – sdvnksv

回答

0

您可以使用CSS网格布局,而不是

ul { 
 
    list-style: none; 
 
    padding-left: 0; 
 
    margin-bottom: 0; 
 
    display: grid; 
 
    grid-template-rows: repeat(2, 1fr); /* number of rows and space taken*/ 
 
    grid-gap: 20px; /* gap between each row and column*/ 
 
    grid-auto-flow: column; /* how the grid is going to flow */ 
 

 
} 
 

 
ul>li:nth-of-type(even) { 
 
    transform: translateX(50%); 
 
}
<ul> 
 
    <li> 
 
    1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
    </li> 
 
    <li> 
 
    2. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
    </li> 
 
    <li> 
 
    3. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
    </li> 
 
    <li> 
 
    4. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
    </li> 
 
    <li> 
 
    5. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
    </li> 
 
    <li> 
 
    6. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quisquam id modi nostrum! Dolor cumque neque porro. Harum qui nobis sapiente nostrum est a quas, quaerat repudiandae minima, sed vel! 
 
    </li> 
 
</ul>

+0

对不起,但是项目的顺序不是按照图像 – sdvnksv

+0

啊,这在边缘不起作用。看起来太好了,不真实:-( – sdvnksv

+0

最后用flex-wrap和order properties来得到结果,如果有人来的话 – sdvnksv

-1

由于CSS网格没有被普遍接受,这是一个使用Flexbox的这所有的主流浏览器的解决方案。 像这样划分你的HTML,它会给你一个计算信息的有序方式。

<div class="parent"> 
    <div class="column"> 
     <div class="item">1. Lorem ipsum!</div> 
     <div class="item">2. Lorem ipsum!</div> 
    </div> 
    <div class="column"> 
     <div class="item">3. Lorem ipsum!</div> 
     <div class="item">4. Lorem ipsum!</div> 
     </div> 
    <div class="column"> 
     <div class="item">5. Lorem ipsum!</div> 
     <div class="item">6. Lorem ipsum!</div> 
    </div> 
</div> 

在此之后,使用Flexbox的使列和该列内的每个项目,给它的50%的宽度(它的父的50%)和100%转化的偶数子(意味着它的宽度的100% )

.parent { 
    display: flex; 
    flex-flow: row nowrap; 
    width: 100%; 

    .column { 
     display: flex; 
     flex-flow: column nowrap; 
     width: 100%; 

     .item { 
      width: 50%; 
      &:nth-child(even) { 
       transform: translateX(100%); 
      } 
     } 
    } 
} 

您可以继续向每列添加更多项目,而不会因此降低可读性。

+0

对不起,但想法是有两行在它们之间划一条线。我应该提到这一点。在你的例子中,我将无法做到这一点。 – sdvnksv

相关问题