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

参考文章: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;从右到左按照个属性值布局
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSS绝对定位相对定位是用于控制元素位置的两种常用方法。它们的区别如下: 1. 相对定位 相对定位是指相对于元素原本所在的位置进行定位。它通过使用 `top`, `right`, `bottom` 和 `left` 属性来控制元素的位置。例如,我们可以使用以下代码将一个元素相对于其原本的位置向下移动20个像素: ```css position: relative; top: 20px; ``` 2. 绝对定位 绝对定位是指相对于最近的已定位祖先元素(即指定了 `position` 属性且不为 `static` 的元素)进行定位。如果没有已定位的祖先元素,则相对于文档的 `body` 元素进行定位。和相对定位一样,我们可以使用 `top`, `right`, `bottom` 和 `left` 属性来控制元素的位置。例如,我们可以使用以下代码将一个元素相对于其最近的已定位祖先元素向右移动50个像素: ```css position: absolute; right: 50px; ``` 总的来说,相对定位绝对定位都是用于控制元素位置的方法,但它们的定位方式有所不同。相对定位是相对于元素原本的位置进行定位,而绝对定位是相对于最近的已定位祖先元素进行定位。 ### 回答2: CSS绝对定位相对定位是一种CSS布局技术,用于控制元素在网页的位置。 相对定位是相对于元素原来所在的位置进行定位。通过将元素的position属性设置为relative,元素将会相对于自己原来所在的位置进行移动,移动后的位置由top、right、bottom和left属性来控制。相对定位不会改变文档流其他元素的位置,所以当一个元素被相对定位后,其他元素仍然按照原来的顺序和位置排列。 绝对定位则是相对于最近的非静态定位的祖先元素(如果不存在则相对于文档的body元素)进行定位。通过将元素的position属性设置为absolute,元素将会脱离文档流,不再占据原来的位置。绝对定位的位置也是由top、right、bottom和left属性来控制。绝对定位会改变其他元素的位置,当一个元素被绝对定位后,其他元素会填补改元素脱离文档流后的空白区域。 相对定位绝对定位的特点和用途不同。相对定位用于微调元素的位置,通常与其他定位方式(如静态定位或浮动定位)一起使用,达到更灵活的布局效果。绝对定位则更适合创建自定义的布局,可以把元素摆放在页面的任何位置。无论是相对定位还是绝对定位,都可以通过配合使用z-index属性来调整元素的层次顺序,实现不同元素的遮盖效果。 综上所述,CSS绝对定位相对定位都是布局技术,使用不同的定位原点来实现元素的定位,相对定位相对于元素原来的位置进行定位,而绝对定位则相对于最近的非静态定位的祖先元素进行定位。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值