我一直都知道CSS中有些元素是封装的。今天写博客的时候正好遇到一个,所以想总结一下。请指出任何错误。什么是封装?包裹意味着父元素的宽度将收缩到与内部元素相同的宽度。包含哪些元素?据我所知:absolute、fixed、float、inline-box等等。仔细看看这些元素,它们都有一个共同的特点,就是都会产生BFC,所以我大胆猜测,所有能产生BFC的元素都被wrapped了,下面一一验证。测试了float,浮动元素会自动包裹内部元素。代码:浮动元素有包围。位置是绝对的或固定的。除相对位置外,其他位置也在包围中。fixed可以看作是一种特殊的绝对。代码:定位元素具有环绕属性。overflow不可见zoomoverflow和zoom不能适配宽度,但是可以用来清除浮动,都可以包裹元素的高度。代码:overflow和zoom元素没有被换行。显示有inline-block、table-cell、table-caption、flex和inline-flex。经过测试,只有flex不能包裹,其他都包裹的很好。代码:只有flex没有wrapping属性。所以,经过测试,并不是所有能生成BFC的元素都是wrapping的。应用场景:个人认为当内部宽度不确定时,父元素需要设置一个宽度。这时候包裹就非常有用了。比如在导航栏中,当li的宽度不固定的时候,你希望ul的宽度和总的宽度一样。这时候可以给ul设置inline-block等元素来解决。
