1。百分比介绍当一般元素的宽度用百分比值表示时,该元素包括外边距在内的总宽度取决于父元素的宽度,所以有可能得到一个“流”的页面,即元素的边距增大或缩小以适应父元素的实际大小。如果为该文档设置该样式,使其子元素使用百分比边距,当用户修改浏览器窗口的宽度时,边距将相应扩大或缩小。margin-right/margin-left的百分比值是相对于父元素的宽度计算的,这个比较容易理解;为什么margin-top/margin-bottom也是基于父元素的宽度?2.为什么?CSS权威指南中的解释:如果高度计算是相对于父元素,就会形成死循环。“我们认为正常流中的大多数元素都会足够高以包含其后代(包括边距)。如果一个元素的顶部和底部边距是父元素高度的百分比,则可能会导致无限循环。父元素的高度会增加以适应后代元素上下边距的增加,相应的,上下边距也会因为父元素高度的增加而增加,形成死循环。”还有一种说法,根本原因不是死循环。例如,张新旭认为,相对于高度计算,大多数情况下计算出的值为0,这与装修没什么区别。最好计算相对宽度,因为CSS默认是水平流,计算出来的值永远有效,我们也可以利用这个属性来实现一些有趣的布局效果。即面向场景、面向需求的设计,这样的设计让我们很容易实现自适应等比例矩形效果。总之,一言以蔽之:在默认水平文档流向下,CSSmargin和padding属性的垂直百分比值是相对于父元素的宽度计算的。3.小栗子
