CSS绝对定位和相对定位的百分比计算以及宽高计算

本文探讨CSS中绝对定位和相对定位时,top、right、bottom、left的百分比计算,以及绝对定位元素的宽高如何定义。相对定位依据父元素计算,而绝对定位取决于最近具有定位属性的祖先元素。绝对定位元素的宽度计算,若超过包含块宽度,right值将被忽略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章:relative 和 absolute 元素的百分比定位CSS进阶——绝对定位元素的宽高是如何定义的

一、设置top、right、bottom、left的值为百分比

如果没有设置top、right、bottom、left,他们默认值是auto,默认是在静态位置

  1. 相对定位relative
    相对定位是按照父盒子的content-box进行计算,不论父盒子是否设置定位,子盒子都按照父盒子content-box来计算
  2. 绝对定位absolute
    绝对定位是按照父盒子的padding-box进行计算,绝对定位元素的包含块是由其最近的position属性设置为relativeabsolutefixed的祖先元素,如果绝对定位元素的所有祖先元素的position属性都没有设置relativeabsolutefixed,则其包含块为初始包含块。

初始包含块不是html元素,也不是body元素,而是当前视口,这一点很容易弄错

二、绝对定位元素宽高计算

以宽度为例,高度同理

left + margin-left + border-left-width + padding-left + width + padding-right + border-right-width + margin-right + right = width of containing block
leftwidthright默认值是automargin-leftmargin-right默认值是0
如果设置了计算出来的值大于了包含块的宽度,则right被忽略。具体规则参考如下:

1表示设置得有具体值

leftwidthright布局
111① 如果margin-left和margin-right都为auto,此时二者相等,则按照上述方程计算出对应的margin值;如果此时计算出来的margin值为负值,则设置margin-left为0,然后根据方程再计算出margin-right的值。
② 如果margin-left、margin-right中有一个为auto,则按照方程计算出这个值;
③ 如果margin-left、margin-right都设置了值,且导致方程左右不相等,则忽略right值。
autoautoauto把margin-left和margin-right为auto的设置为0;把left设置为静态位置的left值;宽度自适应:margin-right边缘最远到right为0的位置(如果margin-right为0,则取border-right边缘,如果border-right-width也为0,则取padding-right边缘,下同
1autoauto把margin-left和margin-right为auto的设置为0;宽度自适应:margin-right边缘最远到right为0的位置
1autoauto把margin-left和margin-right为auto的设置为0;宽度自适应:margin-right边缘最远到right为0的位置
autoauto1把margin-left和margin-right为auto的设置为0;宽度自适应:margin-left边缘最远到left为0的位置
auto1auto把margin-left和margin-right为auto的设置为0;把left设置为静态位置的left值;
11auto把margin-left和margin-right为auto的设置为0;从左至右按照各属性值布局
auto11把margin-left和margin-right为auto的设置为0;从右到左按照个属性值布局
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值