《图解CSS》定位

简介: CSS布局的核心是 position 属性,对元素盒子应用这个属性,可以相对于它在常规文档流中的位置重新定位。

CSS布局的核心是 position 属性,对元素盒子应用这个属性,可以相对于它在常规文档流中的位置重新定位。

![](https://upload-images.jianshu.io/upload_images/2789632-768cf86046e7defd.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

###### 语法

```

position: value(默认值:static)

value常见值:

static | relative | absolute | sticky | fixed | inherit

static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。

inherit: 规定应该从父元素继承 position 属性的值。

relative: 生成相对定位的元素,相对于其正常位置进行定位。

absolute: 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

fixed: 生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

sticky: 粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。

```

#### 静态定位(static)

在静态定位的情况下,每个元素在处在常规文档流中。它们都是块级元素,所以就会在页面中自上而下逐一排列显示,如下:

![](https://upload-images.jianshu.io/upload_images/2789632-a65bfa78d7f96e3d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 相对定位(relative)

相对定位,相对的而是它原来在文档流中的位置(或者默认位置),可以使用top/right/bottom/left属性改变它的位置。

该关键字下,元素先放置在未添加定位时的位置,**再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)**。position:relative 对 table-*-group, table-row, table-column, table-cell, table-caption 元素无效。

###### tips: 可以给top/left属性设定负值,把元素向上/向左移动。

示例:将第三个div相对原来的位置向上移动18px,向右移动50px。

![](https://upload-images.jianshu.io/upload_images/2789632-79bd224b1c5f9414.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 绝对定位(absolute)

元素会被移出正常文档流,并不为元素预留空间,通过指定元素相对于**最近的非 static 定位祖先元素**的偏移,来确定元素位置。绝对定位的元素可以设置外边距(margins),且不会与其他边距合并。

示例:将第四个div设置为绝对定位,向右移动30px

###### 盒子四的相对元素是body, 盒子三的相对元素是外层div

![](https://upload-images.jianshu.io/upload_images/2789632-ace893fbdf053f8a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 固定定位(fixed)

元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform, perspective 或 filter 属性非 none 时,容器由视口改为该祖先。

固定定位与绝对定位类似,但不同之处在于,固定定位元素的定位上下文是视口(浏览器窗口或手持设备的屏

幕),因此它不会随页面滚动而移动。如下实例:

![](https://upload-images.jianshu.io/upload_images/2789632-cb0b511aa9d72682.gif?imageMogr2/auto-orient/strip)

#### 粘性定位(sticky)

粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。

实例:

![](https://upload-images.jianshu.io/upload_images/2789632-602e36682fdd0807.gif?imageMogr2/auto-orient/strip)

#### 定位上下文

把元素的 position 属性设定为 relative 、 absolute 或fixed 后,继而可以使用 top、right、bottom 和 left 属性,相对于另一个元素移动该元素的位置。这里的“另一个元素”,就是该元素的定位上下文。

如下实例,虽然inner上定义了top: 100px,可是并没有起作用,原因在于内外部div默认都是静态定位,它们之间不存在谁是谁的定位上下文这个问题。换句话说,在常规文档流中,由于外部div没有内容,内部div就会跟它共享相同的起点。只有将position属性设定为relative、absolute或fixed,这个元素的top、right、bottom 和 left 属性才会起作用。

![](https://upload-images.jianshu.io/upload_images/2789632-8bd8679d36ad38b4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/2789632-d88d56bf75056762.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

绝对定位元素的默认上下文是body。然而绝对定位元素的任何祖先元素都可以成为它的定位上下文,只要把相应的祖先元素的position设定为relative即可。

![](https://upload-images.jianshu.io/upload_images/2789632-b3be3115729b068a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/2789632-7278ced4ea04ec37.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

参考网站:

https://developer.mozilla.org/zh-CN/docs/Web/CSS/position

https://www.w3school.com.cn/cssref/pr_class_position.asp

https://my.oschina.net/u/866703/blog/221809

目录
相关文章
|
22天前
|
前端开发 容器
《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)
《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)
24 2
|
22天前
|
前端开发
【前端|CSS系列第3篇】CSS盒模型、浮动及定位
【前端|CSS系列第3篇】CSS盒模型、浮动及定位
|
14天前
|
前端开发
CSS 定位
CSS 定位
25 0
|
22天前
|
前端开发 开发者 容器
【专栏:CSS基础篇】CSS定位与布局:从静态到浮动、定位
【4月更文挑战第30天】本文介绍了CSS定位与布局的基础,包括静态、相对、绝对、固定定位以及浮动。静态定位遵循HTML顺序,相对定位可在正常位置基础上偏移,不占用额外空间。绝对定位基于最近已定位祖先元素定位,脱离文档流。固定定位相对于浏览器窗口定位,无视页面滚动。浮动用于文字环绕图片等,可能导致父元素高度塌陷。Flexbox布局提供更灵活的元素排列和对齐方式,适配各种复杂布局需求。理解并掌握这些布局技术能提升网页设计的灵活性和响应性。
|
22天前
|
前端开发 开发者
【专栏:CSS基础篇】CSS选择器详解:精准定位网页元素
【4月更文挑战第30天】本文介绍了CSS选择器在Web开发中的重要性,详细阐述了基础选择器(元素、类、ID、属性和伪类/伪元素)及复杂选择器(后代、子元素、相邻兄弟和一般兄弟)的用法。通过理解并巧妙运用这些选择器,开发者能更高效地控制页面样式,提高代码的可维护性。CSS预处理器如Sass、LESS进一步增强了选择器的功能,助力创建优雅且强大的样式表,实现精准的网页设计。
|
22天前
|
XML 前端开发 JavaScript
CSS中动画、过渡、定位、浮动的作用
CSS中动画、过渡、定位、浮动的作用
|
22天前
|
前端开发 容器
css样式元素的相对定位,绝对定位,固定定位等元素定位运用技巧详解
css样式元素的相对定位,绝对定位,固定定位等元素定位运用技巧详解
|
22天前
|
前端开发
css中定位有几种,有什么区别
css中定位有几种,有什么区别
14 3
|
22天前
|
前端开发 JavaScript 容器
CSS属性:定位属性+案例讲解:博雅互动 前端开发入门笔记(五)
CSS属性:定位属性+案例讲解:博雅互动 前端开发入门笔记(五)
22 1
|
22天前
|
前端开发 JavaScript 定位技术
css3浮动定位
css3浮动定位
48 0