【CSS 面经】absolute 与 fixed 共同点与不同点

在前端开发中,CSS 定位是布局中不可或缺的一部分。定位可以帮助我们精准地控制元素在页面中的位置。在众多定位方式中,absolutefixed 是最常用的两种。它们有许多相似之处,但也存在显著的差异。本文将详细介绍这两种定位方式的共同点与不同点,帮助大家更好地理解它们的应用场景。

一、absolute 和 fixed 的共同点

1. 定位方式的基本原理

absolutefixed 都属于定位元素,它们的定位方式都脱离了常规文档流。这意味着使用这两种定位的元素不会占据空间,因此其他元素会像它们不存在一样进行布局。它们都依赖于toprightbottomleft等属性来决定元素的最终位置。

2. 脱离文档流

无论是 absolute 还是 fixed 定位,元素都会脱离文档流。这意味着这些元素不再影响其他元素的布局,它们不会占据常规空间,周围的元素会重新调整位置,填补它们原本占据的空间。因此,使用这些定位方式时,我们要小心元素间的相互影响,避免布局混乱。

3. 相对定位参照对象

这两种定位方式都有一个共同的特点,它们的定位是相对于某个“参照元素”进行的。absolute 定位的元素会相对于最近的具有定位属性(如 relativeabsolutefixed)的祖先元素进行定位。如果找不到这样的祖先元素,则相对于页面的 body 元素进行定位。而 fixed 定位的元素则始终是相对于浏览器窗口进行定位。

二、absolute 定位详解

1. 定位规则

absolute 定位的元素会相对于最近的定位祖先元素进行定位。如果没有找到定位祖先元素,那么它将相对于 body 元素进行定位。其位置由 toprightbottomleft 来决定。

2. 使用场景

absolute 定位通常用于需要在父元素内进行精确布局时,比如弹出框、下拉菜单等。当我们想要元素脱离正常文档流,但又希望它相对于某个特定的父元素进行布局时,absolute 是非常适合的选择。

示例代码

<div style="position: relative;">
  <div style="position: absolute; top: 10px; left: 20px;">Absolute定位</div>
</div>

在这个例子中,absolute 定位的元素会相对于其最近的 relative 定位的父元素进行定位。由于 relative 的父元素有 position: relative; 属性,因此 absolute 定位的元素会按照父元素的顶部和左边进行定位。

3. 面试中的考点

  • absolute 定位元素的位置如何计算? absolute 定位的元素的位置是相对于它的最近定位祖先元素来计算的,如果没有找到定位祖先,它就会相对于 body 计算位置。

三、fixed 定位详解

1. 定位规则

absolute 定位不同,fixed 定位的元素是相对于浏览器窗口(viewport)进行定位的,而不是相对于任何其他元素。无论页面如何滚动,fixed 定位的元素都始终会固定在浏览器窗口中的指定位置。

2. 使用场景

fixed 定位常用于页面中需要始终显示的元素,如固定的导航栏、固定的回到顶部按钮等。当我们希望某个元素无论页面如何滚动,都能保持在视口中的某个位置时,fixed 定位是最好的选择。

示例代码

<div style="position: fixed; top: 0; left: 0;">Fixed定位</div>

这个例子中,fixed 定位的元素会相对于浏览器窗口进行定位,无论页面怎么滚动,元素都始终停留在页面的顶部和左侧。

3. 面试中的考点

  • fixed 定位的元素如何响应页面滚动? fixed 定位的元素不会随页面滚动而移动,它会始终固定在视口中的指定位置。

四、absolute 和 fixed 的不同点

特性absolute 定位fixed 定位
定位参考相对于最近的定位父元素,如果没有则相对于 body相对于浏览器窗口(viewport)
滚动时的表现随着页面滚动而移动固定在视口中,不随页面滚动而变化
使用场景弹出层、下拉菜单、相对定位布局等固定导航栏、返回顶部按钮、悬浮元素等
脱离文档流是,绝对定位元素脱离文档流是,固定定位元素脱离文档流

1. 定位参考不同

absolute 定位的元素会根据其最近的定位祖先元素来决定位置,而 fixed 定位的元素总是相对于浏览器的视口进行定位,这意味着 fixed 元素不会随着页面的滚动而移动。相比之下,absolute 元素的位置可能会受到页面滚动的影响。

2. 页面滚动时的表现

absolute 定位的元素会随着页面的滚动而移动,因此它的定位是相对静态的。而 fixed 定位的元素则总是固定在浏览器窗口内,即使页面滚动,元素也不会改变位置。这使得 fixed 定位更适合用于需要始终可见的元素,如固定导航条、回到顶部按钮等。

推荐:


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peter-Lu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值