类别:htmlcss / 日期:2022-11-25 / 浏览:306 / 评论:0
1、具体分析
除了用 px 结合媒体查询实现响应式布局外,我们也可以通过百分比单位 " % " 来实现响应式的效果。比如当浏览器的宽度或者高度发生变化时,通过百分比单位,通过百分比单位可以使得浏览器中的组件的宽和高随着浏览器的变化而变化,从而实现响应式的效果。为了了解百分比布局,首先要了解的问题是:css 中的子元素中的百分比(%)到底是谁的百分比?
直观的理解,我们可能会认为子元素的百分比完全相对于直接父元素,height 百分比相对于 height,width 百分比相对于 width。当然这种理解是正确的,但是根据 css 的盒式模型,除了 height、width 属性外,还具有 padding、border、margin 等等属性。那么这些属性设置成百分比,是根据父元素的那些属性呢?此外还有 border-radius 和 translate 等属性中的百分比,又是相对于什么呢?下面来具体分析。
padding、border、margin 等等属不论是垂直方向还是水平方向,都相对于直接父元素的width。
除了 border-radius 外,还有比如 translate、background-size 等都是相对于自身的。
2、百分比单位布局应用
比如我们要实现一个固定长宽比的长方形,比如要实现一个长宽比为 4:3 的长方形,我们可以根据 padding 属性来实现,因为 padding 不管是垂直方向还是水平方向,百分比单位都相对于父元素的宽度,因此我们可以设置 padding-top 为百分比来实现,长宽自适应的长方形:
.trangle{ height:0; width:100%; padding-top:75%; }
3、百分比单位缺点
从上述对于百分比单位的介绍我们很容易看出如果全部使用百分比单位来实现响应式的布局,有明显的以下两个缺点:
(1)计算困难,如果我们要定义一个元素的宽度和高度,按照设计稿,必须换算成百分比单位。
(2)从小节 1 可以看出,各个属性中如果使用百分比,相对父元素的属性并不是唯一的。比如 width 和 height 相对于父元素的 width 和 height,而 margin、padding 不管垂直还是水平方向都相对比父元素的宽度、border-radius 则是相对于元素自身等等,造成我们使用百分比单位容易使布局问题变得复杂。 版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。
发表评论 / 取消回复