【问题标题】:Multi column list jquery多列列表jquery
【发布时间】:2012-06-20 06:08:20
【问题描述】:

我有一个列表,其中包含未知数量的项目。 有没有办法使用 jquery 或 javascript 将列表拆分为列? 棘手的部分:列数也是动态的,因此当浏览器更改它时,列数会更改为。 您可以将其与浮点数进行比较。所以当你让你的浏览器变小时,浮动的 div 将浮动做底部。 (如果你没有设置宽度) 我可以说计算项目的数量并将它们放在列中,然后浮动 ul 列表。但是你有一个问题,最后一列将放在第一列之下。但我想要第一列下的“第二”列。

例如:

<ul>
   <li>test1</li>
   <li>test2</li>
   <li>test2</li>
   <li>test4</li>
   <li>test5</li>
   <li>test6</li>
</ul>

如果我做一个浮动,你会得到这个:

test1 test2 test3 test4 test5 test6

当浏览器变小时,您会看到: 测试1 测试2 测试3 测试4 测试5 测试6

它应该是:
测试1 测试3 测试4 测试5 测试6 测试2

(这是当你使用浮动时)所以有没有办法改变浮动顺序,或者只是用 jquery 来动态地制作列?


我找到了这个解决方案,但它仍然无法像我想要的那样工作。它是 jquery 插件:columnizeList。该列表显示在几列中,但我仍然有这个问题: 当我加载页面时,例如我的 div 中有这个列表:

(所以这和以前的问题一样)。我仍然使用浮动,所以也许这就是问题所在。但是我可以在没有浮动的情况下解决这个问题吗?

【问题讨论】:

  • 感谢您关注此问题。我也找到了你提到的网站,但在这里我遇到了同样的问题。首先使用浮动,项目彼此相邻而不是彼此下方显示。比您可以选择使用特定数量的列。但这就是问题所在。所以列的数量应该随着浏览器的宽度而变化。

标签: jquery html list


【解决方案1】:

这就是浮动的工作原理,如果您希望项目显示在彼此下方,您可以包装其中一些,然后浮动它们的包装器:

<ul>
   <div>
     <li>test1</li>
     <li>test2</li>
     <li>test2</li>
     <li>test4</li>
     <li>test5</li>
   </div>
   <div>
     <li>test6</li>         
     <li>test7</li>         
     <li>test8</li>
   </div>
</ul>


ul div {
   float: left
}

http://jsfiddle.net/f8Kgj/

【讨论】:

  • 这里你有同样的浮动问题。例如,如果您有另一个
  • test9
  • test10
,它们将被放置在 test1、test2、test3、... 下方,而不是应该放在 test6 下方位于 test5 下方,并且 test9 应显示为嵌套到 test1。所以因为我认为浮动不是最好的解决方案,我希望 jquery 是答案。但我仍然没有解决方案。
【解决方案2】:

我建议你使用 CSS:display: flex 并使用它。您也可以使用Bootstrap - Flex 来简化更改。

关于 flex 最好的一点是,您可以通过在样式表中输入 order: 1 来重新排序元素,如果您使用 Bootstrap,您可以简单地将 .order-1 类放在第一个元素上。

您还可以使用 .order-lg-1 类使用 Bootstrap 根据屏幕宽度重新排序。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签