As mentioned above, when an element is floated it is taken out of the normal flow of the document. It is shifted to the left or right until it touches the edge of it's containing box or another floated element.
原文全文地址在 这里。
翻译:浮动是如何定位的
正如上面所提到的那样,当一个元素浮动的时候,它会被取出在正常的元素流之外(译注:document flow 应该翻译为 文本流,但是 文本 两字在汉语中有 text 的含义,消歧义,翻译为元素流)。它会被向左或向右漂移,直到它贴到容器的边缘或者另外一个浮动元素的边缘。
目测是因为li用了float所以ul撑不起高度来
好像是我最先回答这个的……结果被题主无视了,题主没有给下面li的样式,所以我开始也不能确定,看你追问别人,那就果然是float的问题没跑了
解决方法3种:父标签添加overflow:auto/浮动标签最后添加一个clear:both的空元素/父标签用:after伪类定义一个clear:both的隐藏区块
water_junket 的解决办法比我的多,第一种和第三种比我的简单。
我自己的答案:
这个与
float
的定位方式有关系。float
的定位方式的摘录如下:原文全文地址在 这里。
图片解释如下:
(注意
float
使得li
脱离了元素流,使得ul
高度不再被撑起)第二次修改:
你的代码的问题在于
ul
,li
都没有高度,而且应该是被reset
过的;同时,你对li > a
使用了float
,所以a
浮动在li
之上 ->li
高度为 0 ->ul
高度为 0 。父类会被撑起来
父类的高度为
auto
,被子类撑起来了,chrome
上显示的宽高是浏览器计算后的宽高,所以styles
里是不会显示的,可用js
的getComputedStyle
取得值p没有在没有设置宽高的情况下都是根据子类的宽度来决定的,也就是被撑起来的。然后你可以在你的调试器里面盒模型一栏里面查看宽和高
父类的宽高相当于是auto,会被子类的空间大小(不是内容大小)给撑开
解决方法:对父元素添加
.clearfix
( bootstrap 的一个类,你可以去看看),可以获得高度。