为什么这个“明确:两者”都不能阻止包装?

问题描述 投票:2回答:3

我想DIV风格的clear:both可以使其包含DIV的父级不包装,但在HTML之下似乎不能以这种方式工作。

如果浏览器窗口很窄,第二个DIV "OK OK"仍然会换行到下一行。

<div style="overflow: hidden;">
  <div style="float: left; overflow: hidden; white-space: nowrap">
    Hello world 1 Hello world 2 Hello world 3
  </div>
  <div style="float: left; overflow: hidden; white-space: nowrap">
    OK OK OK OK OK OK OK OK
  </div>
  <div style="clear: both;">
  </div>
</div>

我错过了什么?

html css clear
3个回答
6
投票

我想你可能会误解“清晰”的财产。它不能专门控制包装,它控制随后出现的浮动元素的位置。上面的html中没有任何内容阻止第二个div流向下一行。

这是清除元素的一个非常好的纲要:http://www.builderau.com.au/program/css/print.htm?TYPE=story&AT=339278136-339028392t-320002011c

为了使布局不流动,您可能必须在容器div上指定硬宽度。


1
投票

因为两个内部div是向左浮动的,所以当浏览器窗口变得太窄时它们将会换行。我建议你在外部div上指定一个宽度(你有溢出的那个:隐藏在上面)。这样两个内部div可以浮动,但是当浏览器收缩时它们不会换行。

    <div style="overflow: hidden; width: 600px;">
            <div style="float: left; overflow: hidden; white-space: nowrap">
                     Hello world 1 Hello world 2 Hello world 3
                </div>
            <div style="float: left; overflow: hidden; white-space: nowrap">
                            OK OK OK OK OK OK OK OK
                </div>
            <div style="clear: both;">
            </div>
    </div>

如果你想要更多控制,你可能必须使用IE中的表达式来实现min-width hack; min-width:在FF中工作。


1
投票

为您的样式添加两个新属性,它将起作用!

text-align: left;
    width: 1010px;
                 <div style="float: left; overflow: hidden; white-space: nowrap;
                  text-align: left;width: 1010px;">
                  Hello world 1 Hello world 2 Hello world 3
                 </div>

                <div style="clear: both;">
                </div>
                <div style="float: left; overflow: hidden; white-space: nowrap;
                         text-align: left;width: 1010px;">
                        OK OK OK OK OK OK OK OK
                       </div>
                       <div style="clear: both;">
                        </div>
                        </div>
© www.soinside.com 2019 - 2024. All rights reserved.