absolute、relative一些問題

本文深入解析CSS中元素定位的两种方式——绝对定位与相对定位,通过实例展示它们的区别与应用场景,帮助开发者更好地掌握布局技巧。

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

請看測試代碼,如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title> absolute relative </title>

<style type="text/css">
#idGlideView{height:100px;margin:100px auto; border:solid 1px red; top:50px;position: relative}
#idGlideView div{width:500px;height:100px;position: absolute}
#idGlideView div a{width:500px;height:50px;filter: alpha(opacity=50);opacity: 0.5; background:#000; color:#fff; text-decoration:none;}
</style>

</head>
<body>
<div id="idGlideView">
  <div style="background-color:#006699;"> <a href="/">1111111</a> </div>
  <div style="background-color:#FF9933;"> <a href="/">2222222</a> </div>
  <div style="background-color:#9999FF;"> <a href="/">3333333</a> </div>
  <div style="background-color:#006699;"> <a href="/">1111111</a> </div>
  <div style="background-color:#FF9933;"> <a href="/">2222222</a> </div>
  <div style="background-color:#9999FF;"> <a href="/">3333333</a> </div>
</div>


</body>
</html>
 

外部“idGlideView”层的position无论设置为“absolute”或者“relative”。

只要其内部的div的position设置为“absolute”,这些div就会叠加。

只要其内部的div的position设置为“relative”,这些div就会排列开来。

 

“任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移”

### CSS中position属性的absoluterelative和sticky值的用法及区别 #### 1. `position: absolute;` 的用法及特点 当元素设置为 `position: absolute;` 时,该元素会脱离文档流,不再占据正常布局中的空间。其位置是相对于最近的已定位(非 `static`)祖先元素进行计算的。如果没有这样的祖先元素,则相对于初始包含块(通常是浏览器窗口)。 例如,如果一个父元素设置了 `position: relative;` 或其他定位方式,那么子元素的 `absolute` 定位将基于此父元素[^1]。 ```html <div style="position: relative;"> <div style="position: absolute; top: 20px; left: 30px;">绝对定位内容</div> </div> ``` #### 2. `position: relative;` 的用法及特点 `position: relative;` 会使元素相对于自身原本的位置进行偏移,但不会脱离文档流,仍然占据原来的空间。其他元素不会因为它的偏移而受到影响。 可以通过设置 `top`, `right`, `bottom`, `left` 等属性来调整元素的位置[^1]。 ```html <div style="position: relative; top: 20px; left: 30px;">相对定位内容</div> ``` #### 3. `position: sticky;` 的用法及特点 `position: sticky;` 是一种特殊的定位方式,结合了 `relative` 和 `fixed` 的特性。当元素在视口内时,它表现为 `relative` 定位;当滚动到特定位置时,它会固定在某个位置,类似于 `fixed` 定位。 需要配合 `top`, `bottom`, `left`, `right` 等属性使用,以定义触发粘性定位的边界[^3]。 ```html <div style="position: sticky; top: 0;">粘性定位内容</div> ``` #### 4. 区别总结 - **`absolute`**:完全脱离文档流,根据最近的已定位祖先元素或初始包含块进行定位。 - **`relative`**:不脱离文档流,相对于自身原始位置进行偏移。 - **`sticky`**:在视口范围内表现为 `relative`,超出视口范围后表现为 `fixed`。 ### 示例代码 以下是一个综合示例,展示三种定位方式的效果: ```html <!DOCTYPE html> <html> <head> <title>position 示例</title> <style type="text/css"> .container { position: relative; width: 300px; height: 300px; border: 1px solid black; } .absolute { position: absolute; top: 50px; left: 50px; background-color: yellow; } .relative { position: relative; top: 20px; left: 20px; background-color: lightblue; } .sticky { position: sticky; top: 0; background-color: pink; } </style> </head> <body> <div class="container"> <div class="absolute">Absolute</div> <div class="relative">Relative</div> <div class="sticky">Sticky</div> </div> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值