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>

效果图:

目录
相关文章
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
position定位(核心) 我们讲盒模型的时候,提到了3个属性可以用来控制页面排版。 三大属性:position属性,display属性,float属性。 position 属性控制页面上元素间的位置关系。 display 属性控制页面元素是否显示或者是堆叠还是并排显示。 float 属性提供控制方法。 通过float这种控制方法,可以实现多栏布局,导航菜单等等。 position属性是干嘛用的?怎么用?有哪些属性值? position属性控制页面上元素间的位置关系,也就是排版。 怎么用?要知道怎么用
407 0
|
5月前
|
自然语言处理 前端开发 JavaScript
Playwright系列课(2) | 元素定位四大法宝:CSS/文本/XPath/语义化定位实战指南
本文是Playwright系列第二课,详解元素定位四大核心技术:CSS选择器、文本定位、XPath和语义化定位,结合实战演示各方法应用场景。重点解析Playwright智能定位器(Locator)的独特优势——自动等待与重试机制,通过预检元素可操作性(可见/可点击)有效规避网络延迟导致的脚本失效,显著提升自动化测试稳定性。
|
前端开发
CSS_定位_网页布局总结_元素的显示与隐藏
CSS_定位_网页布局总结_元素的显示与隐藏
102 0
|
前端开发 容器
最新CSS3定位元素
【8月更文挑战第28天】
146 5
|
前端开发 容器
css中使用定位实现吸顶效果
css中使用定位实现吸顶效果
270 2
|
前端开发
HTML+CSS基础知识(5)相对定位、绝对定位、固定定位
这篇文章介绍了HTML和CSS中的三种定位方式:相对定位、绝对定位和固定定位,并通过代码示例展示了它们如何影响元素在页面上的布局和位置。
HTML+CSS基础知识(5)相对定位、绝对定位、固定定位
|
前端开发 容器
解锁CSS定位奥秘,从迷茫到精通,让你的网页布局“稳如老狗”,引领前端新潮流!
【8月更文挑战第23天】本文深入探讨了Web前端开发中CSS定位的三大基石:相对定位、绝对定位与固定定位。通过具体示例,展示了各种定位方式的特点及应用场景。相对定位可在不影响布局的情况下微调元素位置;绝对定位使元素完全脱离文档流,适用于精确控制位置的需求;固定定位则确保元素始终固定于浏览器窗口特定位置,不受页面滚动影响。这些技巧对于实现复杂网页布局至关重要。
256 0
|
前端开发 UED 开发者
神秘的 CSS 属性 “position: sticky” 究竟有何魔力?带你彻底理解粘性定位的奇妙世界!
【8月更文挑战第20天】在前端开发中,CSS的粘性定位(`position: sticky`)是一种结合了相对与固定定位优点的强大工具。它使元素能在特定条件下相对定位,达到指定阈值时转为固定定位,非常适合制作“吸顶”导航栏等。例如,设置`position: sticky; top: 0;`能让导航栏滚动至顶部时固定显示。此特性不仅限于导航栏,还可应用于侧边栏等,增强布局灵活性与用户体验。尽管如此,仍需注意不同浏览器间的兼容性和可能的布局冲突。
574 0
|
前端开发 索引 Python
技术心得:xpath、CSS定位方法
技术心得:xpath、CSS定位方法
305 0

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    234
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    225
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    163
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    133
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    274
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    407
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    176
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    112
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    190
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    260