图解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粘性定位否浏览器窗口
SAP 配额修改 + 修改记录写入实现 采购配额修改并写入修改记录 cdhdr 和 cdpos 阅读详情

相关推荐

VS2017中调用gdal(C#版)的方法二(含gdal下载地址,配置过程,代码测试,超详细!!)

VS2017中gdal(C#)版的配置与测试 上次记录了直接在VS2017中下载并应用gdal的方法,这次来记录一下网上下载的安装包配置与测试的方法。 一、环境、版本及下载地址 win10,vs2017社区版,gdal2.4.4 还是像之前在Unity中应用gdal一样,最好是下载已经编译好的C#版的gdal,不然自己配置真的很容易出错,我就是这样的,下面提供不同版本的gdal下载地址: 1.GDAL2.4.4(C#版、64位): https://download.youkuaiyun.com/download/che

chengbaola的博客 1365

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

css的绝对定位和相对定位

qq_51476492的博客 1万+

Quartus原理图设计入门:从半加器到4位全加器的保姆级教程

本文提供Quartus原理图设计入门教程,详细讲解从半加器到4位全加器的实现过程。通过原理图输入法,逐步构建数字电路设计基础模块,涵盖环境搭建、逻辑设计、层次化实现及功能验证等关键步骤,帮助FPGA初学者快速掌握Quartus工具链和加法器设计方法。

weixin_29291185的博客 466

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

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

sinat_38393872的博客 1281

台达PLC使用RS485Modbus指令通信

台达PLC,RS485,Modbus RTU,从站梯形图,0X01,0X02,0X05,CRC校验

lilililimu的博客 1万+

Xiaojie雷达之路---毫米波雷达基础知识---角度估计

本篇文章主要介绍毫米波雷达的基础知识中的角度估计,对于本篇文章主要回答5个问题 1.在雷达的前方,如何估计前方一个物体的角度 2.角度测量的准确性 3.如何测量多个物体的角度 4.雷达可测的角度的视场最大值为多少 5.角度分辨率取决于什么因素 文章目录估计雷达前面一个物体的角度角度测量的准确性雷达的最大角视场测量雷达前方多个距离和速度相同的物体角度分辨率角度估计的流程 估计雷达前面一个物体的角度 估计一个物体的角度,最少需要两根接收天线 发射天线发送一个chirp,经过物体发射后信号,信号分别被第一根天

XiaoJie的博客 1万+

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

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

weixin_45135068的博客 720

Python爬虫教程:抓取电商网站评论(以淘宝和京东为例)

通过本文的介绍,我们学会了如何使用Python编写爬虫,抓取淘宝和京东等电商平台的商品评论数据。我们介绍了如何使用电商平台提供的开放API以及如何通过模拟浏览器来抓取动态加载的数据。此外,我们还讨论了如何应对反爬虫技术,如何存储抓取的数据等。爬取电商平台的数据是一个强大的工具,能够为市场分析、消费者行为研究、产品优化等领域提供有力的支持。然而,在使用爬虫技术时,我们必须遵循法律法规,尊重平台的隐私政策,避免滥用数据。

2201_76125261的博客 1738

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

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

qq_62242375的博客 4421

Redhawk: dynamic ir drop分析(Clock Buffer Clustering)

在dynamic分析中,ir drop问题多出现在三种情况下,缺power mesh,缺power switch,clock cell过于密集。 前两种情况通过选中具体instance查看min res path都比较容易分析出来,而且大部分问题都出现在channel里,这里不多做赘述。 clock cell过于密集这是观察结果,缺少报告支持,这里分享一下分析方法。 首先,选中压降超过signoff标准的instance,(Results->List of Worst Instance DVD中

m0_61544122的博客 5274

Java炫酷烟花③(完整代码)

Java语言实现炫酷烟花动画的完整代码。 下载代码 下载链接:我是一只有趣的兔子,感谢你的喜欢。

AIGC 784

图解 CSS布局和定位

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

Xiong-er 的博客 1116

OpenStack [ compute_id ] 设计上的小缺陷

而 nova 代码中硬编码(或默认配置)将 compute_id 放在 site-packages 目录,属于 设计上的小缺陷—— 把 “库安装目录” 和 “运行时数据目录” 混在一起了,才导致需要临时调整这个目录的权限。# 配置项说明:node_identity_file 是 nova 用于指定节点标识文件路径的官方配置项,优先级高于代码中的默认路径。自定义 compute_id 路径,指向 /var/lib/nova/ 目录下的 compute_id 文件;

求知若渴,虚心若愚。 491

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

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

qq_37555524的博客 209

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

weixin_42307002的博客 660

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

图解css position问题

待转载。

u014378211的博客 248

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

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

图解 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、付费专栏及课程。

余额充值