css中的定位之fixed和absolute的区别

fixedabsolute 都是 CSS 中的定位方式,但它们的区别主要在于它们相对于哪个元素进行定位,以及如何处理页面滚动的情况。

主要区别:

  1. 定位的参考点

    • absolute (绝对定位)
      • 相对于最近的拥有定位属性的祖先元素进行定位(即该祖先元素设置了 position: relativeabsolutefixed)。如果没有这样的祖先元素,则相对于初始包含块(通常是 <html> 元素的视口)定位。
    • fixed (固定定位)
      • 始终相对于浏览器视口进行定位,与页面中的任何其他元素无关。页面滚动时,fixed 元素的位置保持不变。
  2. 页面滚动时的表现

    • absolute
      • 页面滚动时,absolute 定位的元素会随着页面内容一起滚动。
    • fixed
      • 页面滚动时,fixed 定位的元素会固定在浏览器视口的指定位置,不会随着页面内容滚动。
  3. 文档流

    • absolutefixed 都会使元素脱离文档流,即它们不会占据原始位置,其他元素会像它们不存在一样重新布局。

具体示例说明:

absolute 示例:
<!DOCTYPE html>
<html>
<head>
<style>
.container {
  position: relative;
  width: 400px;
  height: 200px;
  background-color: lightblue;
}

.absolute-element {
  position: absolute;
  top: 20px;
  left: 20px;
  background-color: yellow;
  width: 100px;
  height: 50px;
}
</style>
</head>
<body>

<div class="container">
  <div class="absolute-element">绝对定位</div>
</div>

</body>
</html>
  • 在这个例子中,.absolute-element 被放在 .container 内,且 .container 设置了 position: relative,因此 .absolute-element 是相对于 .container 定位的。
  • 如果没有 .containerposition: relative.absolute-element 将相对于整个页面进行定位。
fixed 示例:
<!DOCTYPE html>
<html>
<head>
<style>
.fixed-element {
  position: fixed;
  top: 10px;
  right: 10px;
  width: 100px;
  height: 50px;
  background-color: yellow;
}
</style>
</head>
<body>

<p>页面内容</p>

<div class="fixed-element">
  固定定位
</div>

<p>更多页面内容</p>

</body>
</html>
  • 在这个例子中,.fixed-element 是相对于浏览器视口定位的。即使页面内容很多,滚动时它仍保持在视口的右上角。

总结:

  • absolute:相对于最近的定位祖先元素定位,随着页面滚动。
  • fixed:相对于浏览器视口定位,页面滚动时位置不变。

选择使用 absolute 还是 fixed,取决于你希望元素的位置是相对于哪个上下文,以及它是否需要在页面滚动时保持静止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值