图解CSS定位

一文读懂css【css3】绝对(absolute)定位和相对(relative)定位 相对定位是相对谁定位的 绝对定位又是根据谁绝对定位的 子绝父相 包含块 我们在开发的过程中,经常会使用到相对定位和绝对定位,但我们有时对这两个定位不是很熟悉,往往会弄混,分不清什么是相对定位,什么又是绝对定位。那么,这篇文章便详细解说他们的区别。相对定位是元素相对其起始位置的定位,那么什么是起始位置呢?绝对定位是相对包含块来定位的,那么,那么什么又是包含块?我们清楚,绝对定位有子绝父相这个词,那么,它是什么意思呢?这里的所有疑问,都会在这篇文章中,讲的非常清楚... 阅读详情

1 前言

1.1 定位的背景

在CSS中,元素放置规则分为以下三种:

  • 普通文档流:元素按照从上至下,从左至右的顺序排列,但元素又分行内元素和块级元素,其排列方式有所不同:
    • 行内元素:水平排列,直到水平方向占满一行后再另起一行排列。
    • 块级元素:垂直排列,每一个块级元素都会独自占用一行。
  • 浮动流:设置浮动的元素会向左或向右浮动,直到碰到父级元素或其他浮动的元素,需要注意的是,设置浮动的元素只是半脱离文档流。
  • 脱离文档的定位流:当定位设置为absolute绝对定位或fixed固定定位时,元素会完全脱离文档流,元素的位置就是定位时设置的位置,其布局不会受其他元素的影响,也不会影响到其他元素。

1.2 定位简介

定位就是让元素改变普通文档流行为的一种方式,定位在CSS中的关键字为position,它共有五种取值:

  • static(默认值):静态定位,可以理解为没有定位;
  • relative:相对定位;
  • absolute:绝对定位;
  • fixed:固定定位;
  • sticky:粘性定位。

使用方法如下:

.box {
  position: static | relative | absolute | fixed | sticky;
}

2 阅读本文需要了解的内容

2.1 方位属性

元素在设置定位后,需要给其设置方位属性(top、bottom、left、right)用于指定元素定位位置:

在这里插入图片描述


由于top和bottom、left和right属于相互矛盾的两对属性,所以在同时设置这类属性后,top和left的优先级较高,正如上图中top和left箭头用实线表示,而right和bottom箭头用虚线表示。

2.2 层叠顺序

为什么给元素设置定位属性后,元素会覆盖到其他非定位元素的上方?这是因为当元素设置定位属性后,其z-index属性默认为auto,根据层叠顺序,z-index: auto的元素的优先级高于block块级元素,所以定位元素会覆盖在其他非定位元素的上方。

拓展阅读:CSS层叠上下文、层叠顺序和层叠等级

2.3 文中的代码示例

文中示例的公共代码如下:

<div class="container">
  <div class="box red"></div>
  <div class="box yellow"></div>
  <div class="box green"></div>
</div>

公共CSS样式如下:

.container {
  width: 100%;
  height: 800px;
  background-color: skyblue;
  position: relative;
}

.box {
  height: 100px;
  display: inline-block;
}

.red {
  width: 100px;
  background-color: red;
}

.yellow {
  width: 200px;
  background-color: yellow;
}

.green {
  width: 150px;
  background-color: green;
}

页面效果如下:

在这里插入图片描述


文中的示例都是针对于yellow,所以例子中给出的主要代码都是关于yellow的CSS代码。

3 五种定位方式详解

3.1 static静态定位

若不给元素添加定位属性,则静态定位为元素的默认定位属性,即元素遵循普通文档流的规则排列,代码如下:

position: static;

3.2 relative相对定位

相对定位有如下特点:

  1. 相对定位参照的对象是元素原来的位置;
  2. 相对定位元素不脱离普通文档流,元素在普通文档流中的原来位置依然保留,并且在其他普通文档流中的元素看来,这个元素依然在原来的位置存在。

如下示例,给yellow添加相对定位并距离顶部100px后,yellow移动到了预期位置,并且其原来的位置依然在普通文档流中保留,因为green并没有因为yellow“离开”了原来的位置而补位上去:

在这里插入图片描述


这个例子的主要代码如下:

.yellow {
  position: relative;
  top: 100px;
  width: 200px;
  background-color: yellow;
}

3.3 absolute绝对定位

绝对定位有如下特点:

  1. 绝对定位参照的对象是最近已经定位的父元素,如果没有已经定位的父元素,那么参照对象时根元素html;
  2. 绝对定位元素脱离普通文档流,元素不再占有原来的位置,也不会对其他普通文档流元素造成影响。

如下示例,在给yellow添加绝对定位并距离顶部50px、距离左侧50px,yellow移动到了预期位置,可以发现其原来的位置没有被保留,yellow“离开”后,原来的位置被green补位上去了。

在这里插入图片描述


这个例子的主要代码如下:

.yellow {
  position: absolute;
  top: 50px;
  left: 50px;
  width: 200px;
  background-color: yellow;
}

3.4 fixed固定定位

固定定位有如下特点:

  1. 固定定位元素参照的对象是浏览器窗口,若元素设置了固定定位,那么其位置即使窗口发生滚动,也不会变化,像钉在屏幕上一样;
  2. 固定定位元素脱离普通文档流。

如下示例,设置父元素高度为2000px,这样页面就出现了滚动条,将yellow设置为固定定位,并定位到屏幕正中间,当滚动条在最上方时,可以看到red和green,当滚动条到最底部时,red和green就看不到了,但是yellow依然还在页面上,这就是固定定位:

.yellow {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 200px;
  background-color: yellow;
}

在这里插入图片描述

3.5 sticky粘性定位

粘性定位有如下特点:

  1. 粘性定位参照的对象是浏览器窗口(固定定位的特点);
  2. 粘性定位不脱离普通文档流(相对定位的特点)。

粘性定位非常的特殊,区别与其它几种定位,粘性定位的元素是依赖窗口的滚动的,随之窗口的滚动,粘性定位元素会在relative相对定位与fixed固定定位之间转换:

  1. 当粘性定位元素的原来位置全部在窗口内时,此时元素表现为relative相对定位;
  2. 当粘性定位元素的原来位置部分或全部在窗口外时,此时元素表现为fixed固定定位。

如下示例,设置父元素高度为2000px,这样页面就出现了滚动条,将yellow设置为粘性定位,当滚动条在最上方时,yellow的原位置全部在窗口内,此时元素表现为relative相对定位,并且此时也可以看到red和green,当滚动条到最底部时,这时yellow的原位置已经全部不在窗口内,此时元素表现为fixed固定定位,red和green就看不到了,但是yellow依然还在页面上,这就是粘性定位:

在这里插入图片描述

注意:文字和图片其实很难完全表达出粘性定位的特点,在页面滚动时,元素原来的位置在窗口内的变化过程,最能反应粘性布局的特点,推荐读者访问页面sticky demo在线体验一下。

这个例子的主要代码如下:

.yellow {
  position: sticky;
  top: 0;
  left: 0;
  width: 200px;
  background-color: yellow;
}

4 总结

学习定位需要重点关注以下两点:

  1. 每种定位参照的对象是什么?
  2. 定位是否脱离普通文档流?

各个定位的特点如下表:

定位方式是否脱离普通文档流参照对象
static静态定位(默认)否-
relative相对定位否元素原来的位置
absolute绝对定位是已定位的父级元素
fixed固定定位是浏览器窗口
sticky粘性定位否浏览器窗口
用朴素贝叶斯分类模型判断病人是否感染幽门螺杆菌(Python实现) 朴素贝叶斯,Python 阅读详情

相关推荐

1、STVD和STVP的使用及串口烧写程序教程

文章目录一、前述二、STVD的使用三、STVP的使用1、STVP的作用:2、STVP的使用四、串口烧录程序 一、前述 STVD是意法半导体推出的,可以支持STM8和STM32 而IAR不尽如此,还支持51,MSP430等芯片 软件开发环境:编写程序,调试软件功能,下载固件到单片机中 硬件开发环境:连接外围电路,驱动功能外设,实现电气功能 最终构成一个以STM8系列单片机作为控制核心的应用系统。 MCS-51 一般的开发环境是 IAR 和 Keil STM8 一般的开发环境是 IAR 和 ST

Clichong 1万+

css的相对定位和绝对定位(固定定位)

css的绝对定位和相对定位

qq_51476492的博客 1万+

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2272

前端学习笔记:CSS中浮动的原理,定位

CSS中Float的原理,定位的原理(fixed,absolute,relative,static)

sinat_38393872的博客 1281

PID温控实验平台搭建(二)——PID进阶知识介绍及源码分享

最近,我突发奇想去翻阅了一些我本科期间所做的一些小项目,发现都挺有意思的!希望通过我的讲解文章可以帮助你们少走一些弯路!今天,我要分享的是一个PID温控实验平台的搭建,这是一个系列文章,手把手地教你学习和认识PID算法,了解这种算法在温度控制中的应用。由于我知识有限,如果出现一些错误,希望大家可以帮助我指出来,我们一起学习进步!!!

qq_35953617的博客 8049

卡尔曼滤波与目标追踪

卡尔曼滤波与目标追踪为什么要学卡尔曼滤波?卡尔曼滤波是什么?一些概率论的知识基础卡尔曼滤波完整推导状态估计计算卡尔曼增益预测和更新 卡尔曼滤波部分我打算分三节(三次博客的内容): 卡尔曼滤波与行人状态估计 扩展卡尔曼滤波(EKF)与传感器融合 过程模型,无损卡尔曼滤波(UKF)与车辆状态轨迹 为什么要学卡尔曼滤波? 卡尔曼滤波以及其扩展算法能够应用于目标状态估计,如果这个目标是行人,那么就是行人状态估计(或者说行人追踪),如果这个目标是自身,那么就是车辆自身的追踪(结合一些地图的先验,GPS等数据的话就

qq_43232556的博客 4173

css四种定位及相关知识总结(附实例、图解)

目录 四种定位之静态定位 四种定位之相对定位 四种定位之绝对定位 子绝父相原则 定位盒子居中 四种定位之固定定位 关于定位的层级关系(z-index) 两种设置元素显示跟隐藏的区别 定位 position 语法: position:static | relative | absolute | fixed | center | page | sticky 默认值:static 取值: static: 对象遵循常规流。此时4个定位偏移属性不会被应用。 relative: 对象遵循常规流,并且参照自身在常规流

weixin_45135068的博客 720

变压器耦合放大器(低频应用+高频应用)

变压器耦合放大器(低频应用+高频应用)

m0_54943120的博客 2275

CSS定位——子绝父相的原理(相对定位和绝对定位)

子绝父相,相对定位,绝对定位

qq_62242375的博客 4421

Dell R730安装Windows Server 2008 R2

一、RAID驱动准备  在安装Windows server2008 R2操作系统时,如果没有发现硬盘,请将下面的阵列卡驱动先解压(在下载的.exe文件,双击点下一步会自动解压),解压后把那文件夹复制到U盘中。阵列卡 PERC9 H330 - H730 - H730P - H830 Controllers for Windows Server 2008 R2二、系统安装方法方法一:光盘安装  ①请您...

MarshLin 2万+

《涨知识啦29》-DBR的工作原理及其在VCSEL中的作用

分布式布拉格(Distributed Bragg Reflection,简称DBR)反射镜是垂直腔面发射激光器(Vertical-Cavity Surface-Emitting Laser,简称VCSEL)的重要组成部分。典型的DBR反射镜是由1/4ni波长厚度的高折射率和低折射率材料交替组成(ni是该层的折射率)。其反射率取决于组成对数、边界条件以及折射率差。 图1 布拉格反射镜的工作原理 DBR反射镜的工作原理如图1所示。根据反射原理,当光从光疏介质n1射向光密介质n2(折射率n2>n1)时,反

simucal的博客 7984

图解 CSS布局和定位

1 . 布局与定位概述 2 . 盒子模型(I) 2 . 盒子模型(II)

Xiong-er 的博客 1116

QGis二次开发 —— 1、win10/win11搭建Vs2017-QGis3.40.12环境(附Vs2017环境效果,附全部问题解决方法)(附:Qt助手加入QGis接口说明文档)

QGis二次开发 —— 1、Windows10搭建Vs2017-QGis环境(附Vs2017环境效果)(附:Qt助手加入QGisA接口说明文档)

1362

图解CSS中的绝对定位与相对定位

层级关系为: <div ——————————— position:relative; 不是最近的祖先定位元素,不是参照物 <div—————————-没有设置为定位元素,不是参照物 <div—————...

qq_37555524的博客 209

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

css中盒子定位的默认值,CSS_图解CSS中position属性的定位用法,CSS中的定位模式规定了一个盒 - phpStudy...

图解CSS中position属性的定位用法CSS中的定位模式规定了一个盒子在总体的布局上应该处于什么位置以及对周围的盒子会有什么影响。该模式包括了常规文档流,浮动,和几种类型的 position 定位的元素。其中,CSS position 属性可以取5种值:position: absoluteposition: relativeposition: fixedposition: staticposi...

weixin_42307002的博客 660

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

图解css position问题

待转载。

u014378211的博客 248

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

图解 CSS (7): 大小、定位、剪切、滚动条

width height max-width max-height min-width min-height position - top、right 、bottom 、left z-index clip overflow(overflow-x、overflow-y) scrollbar-base-color scrollbar-face-color scr...

weixin_30822451的博客 69

图解DIV-CSS布局中绝对定位和浮动用法(两种分三栏布局的方法)

你对DIV CSS布局中绝对定位和浮动的概念及使用是否熟悉,这里和大家分享一下,CSS中,实现分栏布局有两种方法。第一种方法是使用四种CSS定位选项中的绝对定位,第二种则是使用CSS中的浮动(float)概念。 DIV CSS布局中绝对定位和浮动 CSS中,实现分栏布局有两种方法。第一种方法是使用四种CSS定位选项(absolute、static、relative和fixed)中的绝对定位(a

Wait的专栏 6512

利用CSS定位背景图片 background-position

<br /><br />又如:<br /><br />这些小图片就是整图分割后的各个部分,把各个部分放在一张图片上,而不是是分别存储成单独的图片,其目的我们都知道,就是减少http请求次数,节省时间和带宽。<br />那么怎么来实现一张图片在不同的地方只显示其中的一部分呢,这就用到了我们今天要说的背景图片的定位问题。这个问题相信很多人都郁闷过,也经常有朋友问我,所以今天就系统的说一下:<br />我们知道在用图片作为背景的时候,css要这样写,以div容器举例子,也可以是body、td、p等的背景,道理一样

vital_lh的专栏 388

CSS Position(定位)介绍

CSS Position(定位) 定位的方法有4种: 1.static定位 2.relative定位 3.absolute定位 4.fixed定位 1.static定位 HTML元素的默认值,即没有定位,元素出现在正常的流中。 静态定位的元素不会受到 top, bottom, left, right影响。 2.relative定位 相对定位元素的定位是相对其正常位置。它

侯春强的博客 642

CSS+DIV定位分析(relative,absolute,static,fixed)

       在用CSS+DIV进行布局的时候,一直对position的四个属性值relative,absolute,static,fixed分的不是很清楚,以致经常会出现让人很郁闷的结果。今天研究了一下,总算有所了解。在此总结一下: 先看下各个属性值的定义: 1、static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-in...

静水流深 240

css position相对定位绝对定位

今天研究了一下,总算有所了解。在此总结一下: 先看下各个属性值的定义:  1、static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 2、relative:生成相对定位的元素,通过top,bottom,left,right的设置相对于其正常位置进行定位。可通过z-index进行层次分级。

細水、長流√的专栏 831

html 图片position,十步图解CSS的position

CSS的positon,我想做为一个Web制作者来说都有碰到过,但至于对其是否真正的了解呢?那我就不也说了,至少我自己并不非常的了解其内核的运行。今天在Learn CSS Positioning in Ten Steps一文中分十步介绍了CSS的“position”中的“static、relative、absolute、float”使用,觉得蛮有意思的。整理了一下贴上来与大家一起分享。希望大家能喜...

weixin_42191480的博客 597

css定位详解

先看下各个属性值的定义: 1、static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 2、relative:生成相对定位的元素,通过top,bottom,left,right的设置相对于...

chinie5257的博客 122
上一篇: 图解flex布局
下一篇: 常见CSS单位总结
syzdev
博客等级 码龄9年 852粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值