目录

1:定位模式和边偏移

2:定位模式

  静态定位

  相对定位:移动位置:脱标、占位置

  绝对定位:脱标、占有位置、  拼爹型  子绝父相

  固定定位:脱标、占有位置、

3:定位模式转换

3:z-index

前言

理论

一:元素的定位属性

1:元素的定位属性主要包括定位模式和边偏移两部分。

1.1: 边偏移

| 边偏移属性  | 描述                      |

| ------ | ----------------------- |

| top    | 顶端偏移量,定义元素相对于其父元素上边线的距离 |

| bottom | 底部偏移量,定义元素相对于其父元素下边线的距离 |

| left   | 左侧偏移量,定义元素相对于其父元素左边线的距离 |

| right  | 右侧偏移量,定义元素相对于其父元素右边线的距离 |

2:position属性的常用值

| 值        | 描述                       |

| -------- | ------------------------ |

| static   | 自动定位(默认定位方式)             |

| relative | 相对定位,相对于其原文档流的位置进行定位     |

| absolute | 绝对定位,相对于其上一个已经定位的父元素进行定位 |

| fixed    | 固定定位,相对于浏览器窗口进行定位        |

二:静态定位(static)

静态定位是所有元素的默认定位方式,当position属性的取值为static时,可以将元素定位于静态位置。 所谓静态位置就是各个元素在HTML文档流中默认的位置。

上面的话翻译成白话:  就是网页中所有元素都默认的是静态定位哦! 其实就是标准流的特性。

在静态定位状态下,无法通过边偏移属性(top、bottom、left或right)来改变元素的位置。

PS: 静态定位其实没啥可说的。

静态定位唯一的用处:  就是 取消定位。 position: static;

三: 相对定位relative(自恋型):脱标、占有位置

相对定位是将元素相对于它在标准流中的位置进行定位,当position属性的取值为relative时,可以将元素定位于相对位置。

对元素设置相对定位后,可以通过边偏移属性改变元素的位置,但是它在文档流中的位置仍然保留。如下图所示,即是一个相对定位的效果展示:

注意:

1. 相对定位最重要的一点是,脱离标准流。它可以通过边偏移移动位置,但是原来的所占的位置,继续占有。

2. 其次,每次移动的位置,是以自己的左上角为基点移动(相对于自己来移动位置)

就是说,相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它。(相对定位不脱标)

如果说浮动的主要目的是 让多个块级元素一行显示,

那么定位的主要价值就是 移动位置, 让盒子到我们想要的位置上去。

三: 绝对定位absolute (拼爹型):脱标、不占位置

[注意] 如果文档可滚动,绝对定位元素会随着它滚动,因为元素最终会相对于正常流的某一部分定位。

当position属性的取值为absolute时,可以将元素的定位模式设置为绝对定位。

注意:

绝对定位最重要的一点是,它可以通过边偏移移动位置,但是它完全脱标,完全不占位置。

3.1: 父级没有定位

若所有父元素都没有定位,以浏览器当前屏幕为准对齐(document文档)。

3.2: 父级有定位

绝对定位是将元素依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。

四:固定定位fixed(认死理型):脱标、不占位置

固定定位是绝对定位的一种特殊形式,类似于 正方形是一个特殊的 矩形。它以浏览器窗口作为参照物来定义网页元素。当position属性的取值为fixed时,即可将元素的定位模式设置为固定定位。

当对元素设置固定定位后,它将脱离标准文档流的控制,始终依据浏览器窗口来定义自己的显示位置。不管浏览器滚动条如何滚动也不管浏览器窗口的大小如何变化,该元素都会始终显示在浏览器窗口的固定位置。

固定定位有两点:

1. 固定定位的元素跟父亲没有任何关系,只认浏览器。

2. 固定定位完全脱标,不占有位置,不随着滚动条滚动。

记忆法:  就类似于孙猴子, 无父无母,好不容易找到一个可靠的师傅(浏览器),就听的师傅的,别的都不听。

ie6等低版本浏览器不支持固定定位。

五:定位模式转换

跟 浮动 一样, 元素添加了 绝对定位和固定定位之后, 元素模式也会发生转换, 都转换为 行内块模式

行内块 的宽度和高度 跟内容有关系

** 因此 比如 行内元素 如果添加了 绝对定位或者 固定定位后 浮动后,可以不用转换模式,直接给高度和宽度就可以了。**

六:四种定位总结

| 定位模式         | 是否脱标占有位置   | 是否可以使用边偏移 | 移动位置基准           |

| ------------ | ---------- | --------- | ---------------- |

| 静态static     | 不脱标,正常模式   | 不可以       | 正常模式             |

| 相对定位relative | 脱标,占有位置    | 可以        | 相对自身位置移动(自恋型)    |

| 绝对定位absolute | 完全脱标,不占有位置 | 可以        | 相对于定位父级移动位置(拼爹型) |

| 固定定位fixed    | 完全脱标,不占有位置 | 可以        | 相对于浏览器移动位置(认死理型) |

七: 叠放次序(z-index)

当对多个元素同时设置定位时,定位元素之间有可能会发生重叠。

在CSS中,要想调整重叠定位元素的堆叠顺序,可以对定位元素应用z-index层叠等级属性,其取值可为正整数、负整数和0。

比如:  z-index: 2;       font-weight: 700

注意:

1. z-index的默认属性值是0,取值越大,定位元素在层叠元素中越居上。

2. 如果取值相同,则根据书写顺序,后来居上。

3. 后面数字一定不能加单位。

4. 只有相对定位,绝对定位,固定定位有此属性,其余标准流,浮动,静态定位都无此属性,亦不可指定此属性。

实践

一:  子绝父相

这个“子绝父相”太重要了,是我们学习定位的口诀,时时刻刻记住的。

这句话的意思是 子级是绝对定位的话, 父级要用相对定位。

1.1:  首先, 我们说下, 绝对定位是将元素依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。

就是说, 子级是绝对定位,父亲只要是定位即可(不管父亲是绝对定位还是相对定位,甚至是固定定位都可以),就是说, 子绝父绝,子绝父相都是正确的。

1.2:  但是,在我们网页布局的时候, 最常说的 子绝父相是怎么来的呢?

因为子级是绝对定位,不会占有位置, 可以放到父盒子里面的任何一个地方。

父盒子布局时,需要占有位置,因此父亲只能是 相对定位.

这就是子绝父相的由来。

二:绝对定位的盒子水平/垂直居中

注意:

  加了浮动和绝对定位的盒子:margin:0 atuo就会失效!

普通的盒子是左右margin 改为 auto就可, 但是对于绝对定位就无效了

定位的盒子也可以水平或者垂直居中,有一个算法。

1. 首先left 50%   父盒子的一半大小

2. 然后走自己外边距负的一半值就可以了 margin-left。

三:边框层级提前

1:定位的层级大于浮动

2:定位z-index的层级1大于默认的0

005:CSS三大重点之三:定位的更多相关文章

  1. 003:CSS三大重点之一:盒子模型

    目录 1:盒子模型 2:边框: 2.1:合写 2.2:适用于:table系元素.边框合并 3:内边距 4:外边距: 4.1:盒子居中三大条件 4.2:外边距合并.外边距塌陷(父子嵌套)解决方法三种 前 ...

  2. 004:CSS三大重点之二:浮动(拖标、不占位置、转行内块)

    目录 1:拖标.不占位.转行内块 2:首先浮动的盒子需要和标准流的父级搭配使用,其次 特别的注意浮动可以使元素显示模式体现为行内块特性. 3:清除浮动 前言 CSS的定位机制有3种:普通流(标准流). ...

  3. python 之 前端开发(CSS三大特性、字体属性、文本属性、背景属性)

    11.38 css三大特性 11.381 继承性 1.定义:给某一个元素设置一些属性,该元素的后代也可以使用,这个我们就称之为继承性​2.注意:    1.只有以color.font-.text-.l ...

  4. vue-learning:29 - component - 组件三大API之三:slot

    组件三大API之三: slot <slot>标签 v-slot指令 普通插槽 有默认值的插槽 具名插槽 作用域插槽 v-slot是Vue 2.6.0引入的一个新语法指令,目的是统一之前sl ...

  5. 奇妙的CSS之布局与定位

    前言 关于布局与定位是Web前端开发里非常基础而又重要的部分.介绍相关知识的文章,很容易就可以找到.虽然,这方面的知识点不是很多,但我们如果不弄清楚,在运用时候往往会出现预料之外的布局,这些“意外”有 ...

  6. CSS有三种基本的定位机制

    CSS有三种基本的定位机制:普通流,浮动和绝对定位. 普通流:在普通流中元素框的位置由元素在html中的位置决定, 1.元素position属性为static或继承来的static时就会按照普通流定位 ...

  7. [Selenium]中使用css选择器进行元素定位

    参考:http://www.cnblogs.com/webblog/archive/2009/07/07/1518274.html 常见语法 * 通用元素选择器,匹配任何元素 E 标签选择器,匹配所有 ...

  8. CSS设计指南之定位

    原文:CSS设计指南之定位 CSS布局的核心是position属性,对元素盒子应用这个属性,可以相对于它在常规文档流中的位置重新定位.position属性有4个值:static.relative.ab ...

  9. CSS盒模型和定位的类型

    此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...

随机推荐

  1. web项目jsp中无法引入js问题

    https://blog.csdn.net/C1042135353/article/details/80274685#commentBox 这篇文章超赞的,几个小时的时间看了这篇文章豁然开朗,瞬间懂了 ...

  2. 第一章 .NET基础-C#基础

    一.1.1. 基础语法 一.1.1.1. 注释符 一.1.1.1.1. 注释符的作用 l 注释 l 解释 一.1.1.1.2. C#中的3中注释符 l 单行注释 // l 多上注释 /* 要注释的内容 ...

  3. Keras实例教程(2)

    https://blog.csdn.net/baimafujinji/article/details/78385745

  4. SpringCloud阶段总结

    学习时间:8.15 -- 8.29 学习目标:了解SpringCloud常见组件的使用 学习方式: 输入:视频+博客+开源项目代码参考 输出:调试代码+写博客输出 组件列表 服务注册:Eureka 客 ...

  5. linux 如何初始化密码(解决mysql root用户登录不了的问题)

    这是我遇到的问题 然后就想这可能是mysql安全模式的问题,解决思路:首先改变mysql的安全模式及密码校验问题,jinrumysql后在更改用户名密码. 1.首先将my.ini中加入在[mysqld ...

  6. lua_lua与.Net互相调用

    配置环境:创建C#项目,引入luainterface-1.5.3\Built下面的LuaInterface.dll文件和luanet.dll文件.引入命名空间using LuaInterface 代码 ...

  7. OpenCV学习笔记(一)、VS2015+OpenCV-4.1.1环境配置(Windows10)

    1.登陆OpenCV官网,点击打开Releases,会看到各个版本的OpenCV安装文件,选择自己想要的版本下载即可.下载网址:https://opencv.org/releases/ 2.配置环境变 ...

  8. 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(三)

      (六)工程结构 (一)应用分层 1. [推荐]图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于Web 层,也可以直接依赖于 Service 层,依此类推:  开放接口层: ...

  9. Mybatis案例升级版——小案例大道理

    纯Mybatis案例升级版——小案例大道理 前言: 这几天看了一本书<原则>,在上面看到了一句话叫“每个人都把自己眼界的局限当成世界的局限”,大学生是

  10. CodeForces 980 C Posterized

    Posterized 题意:将[0,255] 分成 若干段, 每一段的长度最多为k, 每一个数只能被放进一个段里, 然后每一段的数组都可以被这一段最小的数字表示, 求最小的字典序. 题解:每次一个访问 ...