【发布时间】:2013-05-17 15:40:19
【问题描述】:
我正在尝试为 ul 菜单创建一个 javascript 算法,该菜单延伸 li 元素以使用可用宽度 (100%)。
我正在考虑这种流程的算法:
1. calculate the entire available with
2. substract the total elements width to see what's left
3. iterate the elements and substract 1px from the left width and assign
it to the smallest li until the iterator runs out of width
这是一个好方法还是会因为可能意味着几百次迭代而过于滞后?
编辑:提供的 cmets/answers 还没有一个好的答案,因为可能一个或多个 a 元素包含冗长的文本,并且这些不应该得到任何额外的长度。这个问题需要一个算法解决方案,因为每次迭代后只有最小的元素可以占剩余像素,因此菜单被有效地拉伸
更新:对于那些感到困惑的人,这是我希望它伸展的方式:
1. A bank has a total bankroll of 100 dollars
2. Jack has a 40% cut, Dennis has 6%, Minny has 1%
3. The bank starts handing out moneyz, 1 dollar each time starting with the
poorest kid.
4. In the end Jack has 40% while Dennis and Minny have both 30%
Where the cuts stand for the number of characters in a li's child a node
注意:我已经阅读了一个使用表格显示的纯 css 解决方案,但这确实没有任何好处,因为底层的 <a> 元素似乎不会以这种方式与父元素一起拉伸。
【问题讨论】:
-
你到底想在这里实现什么?您说 一个 ul 菜单,它可以伸展以使用可用宽度(原文如此),但这可以通过多种方式实现。最简单的方法是通过划分剩余宽度为每个 li 元素添加边距或填充。如果您有 3 个元素和 400px 剩余,则每个 li 的 400/(3*2) = 66.6-ish 左右填充。
-
没想到,这实际上是一个聪明的解决方案,如果您创建一个答案,我会接受它,谢谢!实际上那是行不通的,因为我有一个(或多个)一个带有长文本的元素,所以我不想向这些元素添加任何东西..它需要进行算法设置
-
IE不支持flexbox太可惜了,不然这样就很直接了。
-
我有点困惑......谁能解释一下为什么“表格显示”不会这样做?
-
您的示例令人困惑,您的数字来自哪里?您是在描述比例拉伸吗?
标签: javascript css navigation