你理解错了吧。
div是块,默认宽度就是100%,而不是你说的里面有div,然后外面div自动变长。
另外,你说里面div浮动,是因为你没有清除浮动,所以导致外面div“消失”了(外面div加背景色可以很明显看出来)。
清除浮动的方法有很多,建议百度搜《清除浮动的全家》,里面列举了很多清除浮动的方法。
我最常用的就是clearfix类,在外层div上加这个类就行了。
.clearfix:after{content:'\20';clear:both;display:block;font-size:0;height:0;}
.clearfix{*zoom:1;}
div...
可以百度一下clearfix,还可以给最后一个内部的div加上clear:both;的css属性。