CSS的相对定位和绝对定位到底有什么不同?

简介: CSS的相对定位和绝对定位到底有什么不同?

本次博客只描述相对定位(position:relative)和绝对定位(position:absolute)的区别。

接下来我将用“生动鲜明”的语言来描述这两个定位的区别。


1、绝对定位(absolute)

(1)定义:

绝对定位是相对于元素最近的已定位的祖先元素,如果元素没有已定位的祖先元素,那么它的位置则是相对于最初的包含块(也就是body)。


(2)”生动鲜明“的定义:


利用一个div来解释。假如把div看成一个人,开起了绝对定位,就脱离文档流,相当于身体和灵魂都游走了起来,原位置不占空间。


2、相对定位(relative)

(1)定义:


相对位置的坐标参考系是以自己上一次的位置(x,y)作为原点(0,0)。


注意:在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。


(2)”生动鲜明“的定义:


还是利用一个div来解释。假如把div看成一个人,开起了相对定位,相当于身体还在原位置,灵魂游走了起来,原位置和灵魂移动的位置都被占用。


下面利用代码展示一下:


绝对定位

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>绝对定位</title>
  <style>
    body {
      margin: 0;
      height: 2000px;
    }
    .box {
      width: 400px;
      height: 400px;
      background-color: lightskyblue;
      /* 
        如果只开启定位, 不设置偏移量的话 -> 保持在原有位置不动
        * 开启绝对定位的元素, 是脱离文档流的
       */
      position: absolute;
      left: 100px;
      top: 100px;
    }
    .child {
      width: 100px;
      height: 100px;
      background-color: magenta;
      position: absolute;
      left: 400px;
    }
  </style>
</head>
<body>
  <!-- 
    如果设置为绝对定位的元素的父级元素是<body>元素的话, 该元素就是相对于HTML页面进行定位
   -->
  <div class="box">
    <!-- 
      如果设置为绝对定位的元素的父级元素不是<body>元素的话:
      * 父级元素没有开启定位, 该元素就是相对于HTML页面进行定位
      * 父级元素同时开启定位, 该元素就是相对于父级元素进行定位
     -->
    <div class="child"></div>
  </div>
</body>
</html>

效果图如下:

相对定位

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>相对定位</title>
  <style>
    body {
      margin: 0;
      padding: 0;
    }
    #box1 {
      width: 200px;
      height: 200px;
      background-color: indianred;
      margin-left: 200px;
      margin-top: 200px;
      /* 相对定位: 相对当前元素原本的位置; 是不脱离文档流的 */
      position: relative;
      top: 200px;
    }
    #box2 {
      width: 200px;
      height: 200px;
      background-color: indigo;
      position: absolute;
      left: 200px;
      top: 200px;
    }
  </style>
</head>
<body>
  <div id="box1"></div>
  <div id="box2"></div>
</body>
</html>

效果图:

目录
相关文章
|
23天前
|
前端开发
|
2月前
|
前端开发 容器
最新CSS3定位元素
【8月更文挑战第28天】
20 5
|
2月前
|
前端开发
HTML+CSS基础知识(5)相对定位、绝对定位、固定定位
这篇文章介绍了HTML和CSS中的三种定位方式:相对定位、绝对定位和固定定位,并通过代码示例展示了它们如何影响元素在页面上的布局和位置。
HTML+CSS基础知识(5)相对定位、绝对定位、固定定位
|
2月前
|
前端开发 容器
css中使用定位实现吸顶效果
css中使用定位实现吸顶效果
40 2
|
2月前
|
前端开发 容器
解锁CSS定位奥秘,从迷茫到精通,让你的网页布局“稳如老狗”,引领前端新潮流!
【8月更文挑战第23天】本文深入探讨了Web前端开发中CSS定位的三大基石:相对定位、绝对定位与固定定位。通过具体示例,展示了各种定位方式的特点及应用场景。相对定位可在不影响布局的情况下微调元素位置;绝对定位使元素完全脱离文档流,适用于精确控制位置的需求;固定定位则确保元素始终固定于浏览器窗口特定位置,不受页面滚动影响。这些技巧对于实现复杂网页布局至关重要。
40 0
|
2月前
|
前端开发 UED 开发者
神秘的 CSS 属性 “position: sticky” 究竟有何魔力?带你彻底理解粘性定位的奇妙世界!
【8月更文挑战第20天】在前端开发中,CSS的粘性定位(`position: sticky`)是一种结合了相对与固定定位优点的强大工具。它使元素能在特定条件下相对定位,达到指定阈值时转为固定定位,非常适合制作“吸顶”导航栏等。例如,设置`position: sticky; top: 0;`能让导航栏滚动至顶部时固定显示。此特性不仅限于导航栏,还可应用于侧边栏等,增强布局灵活性与用户体验。尽管如此,仍需注意不同浏览器间的兼容性和可能的布局冲突。
49 0
|
3月前
|
前端开发 索引 Python
技术心得:xpath、CSS定位方法
技术心得:xpath、CSS定位方法
22 0
|
3月前
|
前端开发 容器
CSS【详解】定位 position (静态定位 static -- 文档流排布 、相对定位 relative、绝对定位 absolute、固定定位 fixed、黏性定位 sticky)
CSS【详解】定位 position (静态定位 static -- 文档流排布 、相对定位 relative、绝对定位 absolute、固定定位 fixed、黏性定位 sticky)
23 0
|
编解码 人工智能 前端开发
CSS中的绝对定位和相对定位
CSS中的绝对定位和相对定位
|
前端开发
CSS常用定位方法(绝对定位、相对定位、固定定位)
CSS常用定位方法(绝对定位、相对定位、固定定位)
CSS常用定位方法(绝对定位、相对定位、固定定位)