php - 设计一种不同类型的标签云

标签 php html css tags knapsack-problem

我希望所有标签的大小都相同,而不是一堆大小不一的链接。但是,我的目标是尽量减少制作云所需的空间量,也就是尽量减少使用的线数。

举个例子:

example
(来源:stevethomas.com.au)

看起来像任何普通的标签云。但是,请注意“roughdiamond”标签周围的所有额外空间,这些空间可以被底部附近的“stone”等其他标签填充,这可以有效地从云中消除一整条额外的线。

在开始新的一行之前,我将如何让单词填满它们上方的任何空间?我不是在谈论重组它们以找到所需的绝对最小行数。如果我浏览图像中的列表,“pendant”、“howlite”和“igrice”会转到第 1 行,将其填满,“roughdiamond”会转到第 2 行,因为第 1 行已满,“tourmaline”会转到第 3 行,因为它不能放在第 1 行或第 2 行,与“emberald”相同,但“pearl”会转到第 2 行,因为它可以放在第 2 行,因为有额外的空间。我想在 CSS 中可能会有某种方法可以做到这一点,它只会导致链接折叠到它可以容纳的任何可填充空间中。

最佳答案

我怀疑这在 CSS 中是否可行,因为这需要特定的计算才能以最佳方式重新排列单词。

您实际要解决的问题是二维 bin packing相同大小的垃圾箱和可变大小的元素的问题。

this answer 中所述对于关于装箱的问题,将您的元素从最大到最小排序,然后在大单词之间放置较小的单词通常会产生相当好的近似值。您将不得不尝试使用您将使用的单词类型来确定这是否适合您(他的方法可能会导致许多小单词在您的云底部分组)。

关于php - 设计一种不同类型的标签云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761838/

相关文章:

php - 如何更改文件的前 512 字节?

python - 如何在python中读取html标签内的多个变量值

javascript - 我的 javascript 代码有什么问题?

php - 运行后如何使用 Ratchet\Server\IoServer 对象?

php - 如何在 .htaccess 中编写此 404 规则

html - 文本溢出省略号不适用于多行文本框

Javascript:启用复选框检查按钮(均使用 ElementsByClass)

css - 通过 CSS 缩短表单输入长度

javascript - CKEditor 4 : How to add CSS stylesheet from plugin?

php - 通过表单 Cookie 和 GET