1

简化后,我有三个元素 A、B 和 C。B 和 C 一起在一个 div 中。如果有足够的水平空间(浏览器窗口足够宽),我希望它们显示为

A B C

到目前为止微不足道。如果窗口变小,我希望它们像这样包装:

A
B C

我通过给 div a 解决了这个问题style.whiteSpace = "nowrap"。问题是,即使没有足够的空间来显示它们,BC 现在也不会再包装了。当窗口变得更小时,我希望它显示为

A
B
C

所以我正在寻找的是一种更柔软的“nowrap”版本,如果有空间可以避免包裹,但如果没有,则允许包裹。

编辑:

回复通过使一切浮动解决了上述问题:http: //jsfiddle.net/nF4k5/6/

这让我意识到我的简化太过分了。实际上,在我的应用程序中,A 是一个文本,并且本身具有换行功能,因此有时会填充整个宽度。可以将 B 和 C 想象为应该出现的单个单词 a) 一起出现在文本 A 的最后一行中,或者如果它们不适合一起出现 b) 在新行上,或者如果该行太短 c) 在两行上。

我做了一个例子来玩:http: //jsfiddle.net/nF4k5/5/

更小的屏幕应该会导致:

A A A A B C

A A A A
B C

A A A
A B C

A A
A A
B C

A
A
A
A
B
C

如果解决方案不涉及对 A 进行更改,就像我在 BC 周围的 div 中添加 nowrap 一样,那将特别好,这不起作用。

编辑:解决方案:我没有给 B 和 C 的包装器一个 whiteSpace="nowrap",而是给它一个 display="inline-block"。

4

2 回答 2

1

将 A 放入 div X 中,将 B 和 C 放入 Y 中。将 X 和 Y 向左浮动。只要宽度小于 X+Y 的宽度,Y 就会下降。

Y 内部:将 B 放入 div sonOfX,将 C 放入 sonOfY,将 sonOfX 和 sonOfY 浮动到左侧。只要宽度小于 sonOfX+sonOfY 的宽度,sonOfY 就会下降。

给你 - http://jsfiddle.net/nF4k5/

这应该这样做:http: //jsfiddle.net/nF4k5/7/为您的新问题

于 2012-02-02T16:54:28.043 回答
0

既然你说这些是元素,我假设你的意思是 HTML 元素,对吧?如果是这种情况,只需浮动它们。这是浮动的自然行为。

于 2012-02-02T16:37:12.337 回答