【发布时间】:2012-02-21 22:18:29
【问题描述】:
我正在尝试创建与 Chrome 选项卡类似的选项卡。但我不确定如何以及是否可以不使用 JavaScript。
我不关心浏览器的支持,我只想看看能不能用纯html和css/css3做。
这是规格:
- 标签的宽度永远不会超过其中的文本
- 当最右边的选项卡在调整大小时到达窗口的右侧时,选项卡应该开始缩小(理想情况是首先发生在最宽的选项卡上)
- 活动选项卡不应缩小
- 随着标签的缩小,文本应该被省略号隐藏
- 选项卡将在我设置的最小宽度处停止(因此它们不能为零宽度)。
这可以用 display: box; 之类的东西来制作吗?和box-flex:1;属性也许?我还没有成功。我已经用 JavaScript 做到了。但是性能并没有我想要的那么好(这是一个 BIG wep 应用程序)。
那么,有哪位 CSS 大神可以支持它吗?如果有一种方法可以用非常有限的 JavaScript 来做到这一点,我也很感兴趣。
谢谢大家!
【问题讨论】:
-
类似这样的Javascript不应该导致任何性能问题。你能澄清一下性能下降和/或提供你用来创建这个功能的javascript吗?我问的原因是因为我不太确定你是否可以在没有任何 Javascript 的情况下实现这一目标。
-
javascript 性能慢?我发现这令人惊讶...您的算法效率低下,即 O(k^n) 还是 O(n!)?
-
好的,我可以告诉你更多关于我的 JavaScript 是如何做到的。我有两个类(标签和标签)。 Tab 对象知道它的初始大小、最大大小和最小大小。选项卡告诉每个选项卡(它应该是什么大小)。然后,当所有选项卡都设置了大小时,它们会将新大小写入 DOM。它本身没有性能问题。但是随着其他所有事情的发生,一个窗口调整大小可能会挂起大约一到两秒钟。所以我尽量优化。
-
"标签永远不会比里面的文本更宽" 为什么不呢?根据您的规范,不幸的是,这不能用纯 CSS 完成。现在你可以主要做 CSS 并在这里和那里有一点 JS。但在 CSS 中是不可能做到的。 JS 的存在是有原因的。
-
Tyler Crompton:标签可以比里面的文本更宽,并带有一些填充。但关键是让它尽可能简单。我猜想没有 JS 是不可能的,但想在这里问一下作为最后的确认。或许还能获得一些关于如何最有效地做到这一点的提示。
标签: css