文章目录

  • CSS Position 定位
    • #1 说明
      • #1.1 什么是Position塌陷
      • #1.2 什么是文档流(normal flow)
    • #2 开始
      • #2.1 position: static
      • #2.2 position: relative
      • #2.3 position: absolute
      • #2.4 position: fixed
      • #2.5 position: sticky

CSS Position 定位

#1 说明

#1.1 什么是Position塌陷

关于CSS position,来自MDN的描述:

CSS position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left 属性则决定了该元素的最终位置。

#1.2 什么是文档流(normal flow)

  1. normal flow直译为常规流、正常流,国内不知何原因大多译为文档流;
  2. 窗体自上而下分成一行一行,并在每行中按从左至右的顺序排放元素;
  3. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端,若当前行容不下,则另起新行再浮动;
  4. 内联元素也不会独占一行,几乎所有元素(包括块级,内联和列表元素)均可生成子行,用于摆放子元素;
  5. 有三种情况将使得元素脱离normal flow而存在,分别是 float,absolute ,fixed,但是在IE6中浮动元素也存在于normal flow中。

#2 开始

#2.1 position: static

该关键字指定元素使用正常的布局行为,即元素在文档常规流中当前的布局位置。此时 top、right、bottom、left 属性无效。

static是position的默认值

<div class="container"><div class="content">    </div>
</div>
.container{background-color: #868686;width: 100%;height: 300px;
}
.content{background-color: yellow;width: 100px;height: 100px;position: static;left: 10px;/* 这个left没有起作用 */
}


对 content 的 position 设定 static 后,left就失效了,而元素(content)就以正常的 normal flow 形式呈现。

#2.2 position: relative

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

相对于normal flow中的原位置来定位。

<div class="container"><div class="content_0">    </div><div class="content_1">    </div><div class="content_2">    </div>
</div>
.container{background-color: #868686;width: 100%;height: 300px;
}
.content_0{background-color: yellow;width: 100px;height: 100px;
}
.content_1{background-color: red;width: 100px;height: 100px;position: relative;/* 这里使用了relative  */
}
.content_2{background-color: black;width: 100px;height: 100px;
}


这是没有设置left、top等属性时,正常出现在normal flow中的位置。

接着添加left、top:

.content_1{background-color: red;width: 100px;height: 100px;position: relative;/* 这里使用了relative  */left: 20px;/* 这里设置了left和top */top: 20px;
}


可以看到,元素(content_1)的位置相对于其原位置(normal flow中的正常位置)进行了移动。

#2.3 position: absolute

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

生成绝对定位的元素,其相对于 static 定位以外的第一个父元素进行定位,会脱离normal flow。注意:是除了static外

<div class="container"><div class="content">    </div>
</div>
.container{background-color: #868686;width: 100%;height: 300px;margin-top: 50px;
}
.content{background-color: red;width: 100px;height: 100px;position: absolute;top: 10px;
}


因为 content 的父元素 container 没有设置 position,默认为 static,所以找到的第一个父元素是 body(),可以看成是元素(content)相对于 body 向下移动10px。

#2.4 position: fixed

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

fixed相对于window固定,滚动浏览器窗口并不会使其移动,会脱离normal flow。

<div class="container"><div class="content">    </div>
</div>
.container{background-color: #868686;width: 100%;height: 1000px;
}
.content{background-color: yellow;width: 100px;height: 100px;position: fixed;/* 这里使用了fixed */
}

#2.5 position: sticky

盒位置根据正常流计算(这称为正常流动中的位置),然后相对于该元素在流中的 flow root(BFC)和 containing block(最近的块级祖先元素)定位。在所有情况下(即便被定位元素为 table时),该元素定位均不对后续元素造成影响。当元素 B 被粘性定位时,后续元素的位置仍按照 B 未定位时的位置来确定。position: sticky对 table元素的效果与 position: relative 相同。

因为各大浏览器对于sticky的兼容问题,而且JS也可以实现这个功能,在这里就不进行深入了,了解一下就好。

CSS Position 定位相关推荐

  1. 教你玩转CSS Position(定位)

    目录 CSS Position(定位) static 定位 fixed 定位 relative 定位 absolute 定位 sticky 定位 重叠的元素 所有的CSS定位属性

  2. 【css】CSS position(定位)属性

    一.CSS position(定位)属性 absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位.元素的位置通过 "left", "t ...

  3. css左边定位,CSS Position(定位) | 菜鸟教程

    CSS Position(定位) position 属性指定了元素的定位类型. position 属性的五个值: 元素可以使用的顶部,底部,左侧和右侧属性定位.然而,这些属性无法工作,除非是先设定po ...

  4. CSS position定位之static

    CSS position定位之static 1.static是position属性的默认值. 2.top.bottom.left.right.z-index 属性不起作用 3.元素和元素之间不会重叠, ...

  5. 详解 CSS position定位的五种方式

    position 属性规定应用于元素的定位方法的类型(static.relative.fixed.absolute 或 sticky). 常见的固定定位,例如手机端的导航,快捷按钮.例如本站的&quo ...

  6. css - Position定位属性与层级关系

    今天同事发现一个有意思的问题,关于position的层级关系的,他要不说我也没注意过 测试后果然有趣,有待深入研究: 1 <!DOCTYPE html> 2 <html> 3 ...

  7. CSS position(定位)属性

    关于CSS position,来自MDN的描述: CSS position属性用于指定一个元素在文档中的定位方式.top.right.bottom.left 属性则决定了该元素的最终位置. 然后来看看 ...

  8. Canvas+html+css+position定位

    定位Position样式 浮动毛病: 会让出文档流,会影响后面的元素的布局. 如果父元素是width:100%,没办法做到均分宽度和间隙,如果父元素是固定宽度情况,可以通过切蛋糕的方式进行计算. 概述 ...

  9. CSS position 定位知识细节

    文章传送门:详解css定位与定位应用 position定位的定义: 在CSS中关于定位的内容是:position:relative | absolute | static | fixed static ...

最新文章

  1. 基于cnn的短文本分类_基于时频分布和CNN的信号调制识别分类方法
  2. mysql存储过程在实际开发中怎么用_MYSQL存储过程开发中怎么使用游标嵌套
  3. searchindexer.exe占cpu使用率高
  4. ocsng mysql connection problem_OCSNG 介绍及其工作原理
  5. 毕业一年多被裁,没有计算机文凭,我在两个月内搞定4份Offer,且收入翻倍
  6. 微软:“不好意思,我们还不够Cool,不能运行”
  7. VMware ESXi 6.X Syslog日志配置
  8. CSS3 修改和去除移动端点击事件出现的背景框
  9. 介绍鲜花视频的html模板,HTML黄色欧美形式鲜花介绍网页模板代码
  10. pcs9000系统plat服务器,CSD361現场调试手册.docx
  11. recover 没有捕获异常_Recover捕获异常
  12. TPM管理解决制造型企业成本大问题的常用手段
  13. DFI、DPI、端口识别技术
  14. 青轩桃李能几何,流光欺人忽蹉跎。 poll
  15. WIF调试分享(ap6256)
  16. Android之ContentProvider
  17. Ubuntu 18.04 vscode安装网易云音乐插件
  18. 小米从北京迁往武汉南京,一线大厂逃离或为新常态?
  19. 华大半导体HC32F4A0笔记(三),RS485通信,使用串口USART1,DMA接收
  20. [转]分享几款不错的浪漫素材

热门文章

  1. navicat,pymysql,sql注入
  2. 支付宝年度账单怎么看啊,附建议
  3. c语言经典100例对考研有用吗,考研的一些忠告,希望对你有用
  4. 把WinXP系统升级到Win7的方法
  5. 论电脑中存储器的速度,即使是固态硬盘,电脑中最慢的还是硬盘
  6. opensuse 安装java_opensuse下jdk8的安装步骤
  7. 分公司可以独立缴纳企业所得税吗
  8. Unity --- 动画分层
  9. 搜索与回溯算法:DFS(深度优先搜索)
  10. 学校计算机 电教材料账册,学校电子设备管理制度