《图解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

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