##CSS 定位机制##

CSS 有三种基本的定位机制:普通流、浮动流和定位流。

除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。

块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。

行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。

##什么是CSS 定位 (Position) ?##

属性允许你检索和设置对象的定位方式

CSS 为定位提供了一些属性值,可以将布局的一部分与另一部分重叠。

定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。

##CSS 定位都有哪几种以及之间的区别 ?##

1、static 默认值

相当于普通流;没有定位;

作用:可以用于取消元素之前的定位设置

2、relative 相对定位

元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

参照物:自己所在的位置

特点:

a:如果没有定位偏移量,对于元素本身没有任何影响

b:不使元素脱离文档流,空间是会被保留的

c:不影响其他元素布局

d:left,top,right,bottom是相对于当前自身进行便宜的,不能独立存在,必须配合定位使用

 

3、absolute 绝对定位

元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

参照物:

a:可视窗口:浏览器第一屏(默认情况下)

b:有设置定位的最近父元素

特点:

a:使元素完全脱离文档流

b:使内联元素支持宽高(让内联元素具备块特性)

c:使块元素默认宽根据内容决定(让块具备内联的特性)

d:如果有定位祖先元素相对于定位祖先元素发生偏移,没有定位祖先元素相对于整个文档发生偏移(绝对、相对、固定)

注:如果祖先元素中有多个元素具备定位模式,那么是已离自己最近的祖先元素进行偏移。

 

案例:图片上叠加说明文字 

<div class="father">
<img src="pic.jpg" />
<div class="son">图片上的文字说明</div>
</div>
.father{
positon: relative;
}
.son {
position: absolute;
bottom:0px;
left:0px;
width:100%;
background:rgba(0,0,0,0.5);
color:#ffffff;
}

案例效果:

4、fixed 固定定位

元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

参照物:

a:始终都是相对于整个浏览器窗口进行固定定位

特点:

a:使文档完全脱离文档流

b:使内联元素支持宽高(让内联具备内联块的特性)

c:使块元素默认宽根据内二公决定(让块具备内联块的特性)

d:相对于整个浏览器窗口进行偏移,不受浏览器滚动条的影响,不会受到祖先元素的影响。

案例:点击出现弹,位置水平垂直居中且固定不动

<div class="popup">
<div class="pop_body">...</div>
</div>
.popup{
width:300px;
height:400px
position: fixed;
left:50%;
top:50%
margin-left:-150px;
margin-top:-200px;
}

案例效果:

5、粘性定位 position:sticky;(css3新增属性,兼容性比较差)

这是一个结合了 position:relative 和 position:fixed 两种定位功能于一体的特殊定位,适用于一些特殊场景。

 参照物:

a:在固定的时候:参照物是相对于整个浏览器窗口

 特点:

a:相对定位和固定定位的结合体;

b:在没有到达指定位置的时候,是没有定位效果的(相当于相对定位);在到达设定的位置的时候 是固定定位;

c:在固定的时候:参照物是相对于整个浏览器窗口

生效规则:

position:sticky 的生效是有一定的限制的,总结如下:

a、须指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

b、设定为 position:sticky 元素的任意父节点的 overflow 属性必须是 visible,否则 position:sticky 不会生效。这里需要解释一下:

· 如果 position:sticky 元素的任意父节点定位设置为 overflow:hidden,则父容器无法进行滚动,所以 position:sticky 元素也不会有滚动然后固定的情况。

· 如果 position:sticky 元素的任意父节点定位设置为 position:relative | absolute | fixed,则元素相对父元素进行定位,而不会相对 viewprot 定位。

c、达到设定的阀值。这个还算好理解,也就是设定了 position:sticky 的元素表现为 relative 还是 fixed 是根据元素是否达到设定了的阈值决定的。

案例:实现导航的吸顶效果(头部导航条固定)

#toolbar {
position: -webkit-sticky; /* safari 浏览器 */
position: sticky; /* 其他浏览器 */
top: 100px;
}

案例效果:(初始效果)

案例效果:(滑动之后效果)

##定位的作用##

a、在正常情况下,可以让一个元素覆盖在另外一个元素上面

b、可以移动一个元素的位置

c、可以固定某个容器在浏览器窗口的某个位置不动。

d、可以做吸顶效果,比如百度新闻的导航

##相对定位和绝对定位的区别##

a、 相对定位的参照物是自己本身所在的位置,

绝对定位的参照物是包含块

b、 相对定位是不会脱离文档流的,而且不对页面布局产生影响;

绝对定位是会脱离文档流的,原来的位置不在占有,后面的内容会把位置补上去

##绝对定位和固定定位之间的相同点和不同点##

相同点

都会脱离文档流,并且都定位之后,结构在后面的元素会覆盖在最上面,都可以通过z-index来改变层叠顺序,也可以都用left top right bottom移动位置

不同点:

a、参照物不同

绝对定位的参照物有2个,A是浏览器的第一屏 B就是有定位的父元素

固定定位的参照物只有1个,是浏览器的当前窗口。

b、固定定位之后该元素就固定在某个位置了,拖动窗口的时候,不再改变

##层叠顺序z-index##

检索或设置对象的层叠顺序

注:他只针对于定位属性的元素起作用

a:auto 自动,默认的

b:number 数值越大,层越上

没有设置z-index时,最后写的对象优先级先显示在上层,设置之后,数值越大,层越上

##包含块的概念##

a、包含块是绝对定位的基础,包含块就是为定位元素提供坐标,偏移和显示范围的参照 物,即确定绝对定位的偏移起点和百分比 长度的参考;

b、绝对定位元素会根据包含块进行绝对定位,

默认情况下 ,浏览器的可视窗口是一个大的包含块,

默认情况下,绝对定位元素会相对浏览器的可视窗口进行定位;

如果他的祖先级元素定义了包含块,那他就最近的祖先级元素进行绝对定位。

c、怎么给他的祖先级元素定义成包含块: 给祖先级元素添加position:relative/absolute/fixed。

Css五种定位之间的区别的更多相关文章

  1. css五种定位方式介绍

    1.static定位(普通流定位) -------------- 默认定位 2.float定位(浮动定位) 例:float:left; 有两个取值:left(左浮动)和right(右浮动).浮动元素会 ...

  2. CSS的五种定位方式

    CSS中一共有五种定位: position:static:默认值 position:absolute:绝对定位 position:relative:相对对定位 position:fixed:固定定位 ...

  3. CSS 五种方式实现 Footer 置底

    CSS 五种方式实现 Footer 置底   页脚置底(Sticky footer) 就是让网页的footer部分始终在浏览器窗口的底部. 当网页内容足够长以至超出浏览器可视高度时,页脚会随着内容被推 ...

  4. CSS四种定位及应用

    定位(position) 如果,说浮动, 关键在一个 “浮” 字上面, 那么 我们的定位,关键在于一个 “位” 上. PS: 定位是我们CSS算是数一数二难点的了,但是,你务必要学好它,我们CSS离不 ...

  5. Python 中格式化字符串 % 和 format 两种方法之间的区别

    Python2.6引入了 format 格式化字符串的方法,现在格式化字符串有两种方法,就是 % 和 format ,具体这两种方法有什么区别呢?请看以下解析. # 定义一个坐标值 c = (250, ...

  6. CSS——4种定位

    若是没有指定定位方式,默认为静态定位. 1.静态定位(static) 静态定位会将所有元素正常流入页面. 2.绝对定位(absolute) 绝对定位将元素完全从页面流中取出,允许你为他制定一个绝对的位 ...

  7. css四种定位

    概述:元素定位属性主要包括的模式和边偏移两部分,也就是说以后定位要和边偏移量搭配使用.边偏移加定位定位模式才能构成一个完整的定义方式. 偏移量说明: 边偏移属性 描述 top: 顶端偏移,定义元素相对 ...

  8. CSS三种定位机制

    标准文档流 块级元素撑满整个页面div,ul,li,dl,dt,p 行级元素可以一行显示多个span,strong,img,input大部分 一般不设置盒子的高度,另其自动调整 margin属性的au ...

  9. LBS 与 GPS 定位之间的区别

    什么是LBS定位?   LBS英文全称为Location Based Services, 它包括两层含义:首先是确定移动设备或用户所在的地理位置:其次是提供与位置相关的各类信息服务.意指与定位相关的各 ...

随机推荐

  1. 图文并解Word插入修改删除批注

    .插入批注 首先选择对象,比如部分文字[hd1] ,之后执行这样的操作:"插入"→"批注":插入的批注处于编辑状态,可以直接输入批注的文字即可;图解如下: .修 ...

  2. 【转载/部分修改】超实用STL——set的入门使用

    本文部分转载自他人博文,少部分自行进行了添改qwq 参考文章:https://blog.csdn.net/chaoyueziji123/article/details/38422211 作者:chao ...

  3. loadrunner通过web的post请求方法测接口 2

    模拟APP发送请求给Cloud, 一般都是用户登录后.cloud会返回登录成功的消息并且返回一个cookie给app, app下次要做一些例如设置名称之类的工作,在请求消息里面会携带返回的cookie ...

  4. loadrunner通过socket测接口

    #include "lrs.h" Action() {     //建立到服务端的连接     lrs_create_socket("socket1",&quo ...

  5. 这些科学家用DNA做的鲜为人知事,你估计都没见过!

    DNA世界的每一步都给人类带来奇妙甚至吃惊的发现.研究人员越来越多地探索和掌握了生命中的分子.生物与技术之间的界限以前所未有的方式模糊,有时甚至更糟.但DNA也为复杂疾病带来简单的答案,存储奇怪的文件 ...

  6. Ubuntu在没用root权限下如何创建sudo用户

    起因 安装openCryptoki之后,如果想执行相关命令的话,那么该用户必须在pkcs11用户组中,于是执行 sudo uersmod -G pkcs11 $(whoami) 之后重启系统,执行 s ...

  7. 浅谈在ES5环境下实现const

    最近看到一个面试题--用ES5实现const.作为JS初学者的笔者知道在ES6中有const命令,可以用来声明常量,一旦声明,常量的值就不可改变.例如: 1234567891011 const Pi ...

  8. 关于Linux文件系统

    前言 文件系统是在内核中实现,能够对存储在磁盘上的二进制数据进行有效的层次化管理的一种软件.而用户程序为了实现在磁盘上使用或者创建文件,向内核发起系统调用(实际由文件系统向内核发起的系统调用)并转换为 ...

  9. create view and switch view

    pageView扩展backbone cAbstractApp定义view加载.切换.回退.跳转-webApp/cWebViewApp/hybirdApp为其子类 1.cWebApp扩展了父类的bin ...

  10. java反序列化-ysoserial-调试分析总结篇(2)

    前言: 这篇主要分析commonCollections2,调用链如下图所示: 调用链分析: 分析环境:jdk1.8.0 反序列化的入口点为src.zip!/java/util/PriorityQueu ...