css模型之层模型

css层模型说的是position这个属性,它有四个常用值,分别是static、relative、absolute、fixed。

1.static:这个是元素的默认值,特点是页面会依照自左向右、自上向下的方向布局,并且设置top、right、bottom、left值是没有用的,并且设置z-index也是没有用的,不能进行特殊定位;

2.relative:相对定位,什么是相对?相对于谁?相对是 相对于自身 原本不设置此属性值时 应该在的位置,即默认的文档流应该在的位置。特点是,设置此属性值后该元素依然占据着原本属于自己的位置,但是可以通过设置top、right、bottom、left(简称TRBL)、z-index值来改变相对于自身的位置。

打个比方就是原来所有的元素都在一层楼平铺,现在设置后该元素会上升到二层楼,但是虽然“我”虽然在二层,脚下原本属于“我”的一层楼的位置“我”还占据着,谁也不给。这样就可以在占据原本位置的情况下,通过设置上右下左的值飘在一层元素的头上。

这样做本身没有多大意义,也不经常使用。经常的用法是作为后代元素的“参照物”,什么意思稍后再说。

3.absolute:绝对定位,绝对定位常用于定位在页面中显示位置特殊、用盒子模型不容易定位的位置。特点是,设置此属性后,该元素会脱离原来的文档流,其他的和相对定位相同。

打个比方就是“我”原来在一层,设置此属性值后,“我”上升到二层的高度,“我”脚下的原来的位置也不要了,依据默认的文档流,后面的元素会补充在我脚下,占据“我”原来的位置。

然后问题来了,“我”定位时怎么办呢,相对定位是上升到二层还能待在自己原本的位置,那“我”怎么办,“我”不能也相对于自己原来的位置定位啊,如果和相对定位一样,那设计时为什么定义两个效果一样的属性值,设计师闲得慌?那“我”该怎么办?

办法就是“我”得①寻找一个参照物,参照物?什么是参照物?此处说的参照物就是上文中提到的relative相对定位,当然也可以是absolute和fixed当做参照物,但不能是默认的static。有了这个方法,“我”就去找参照物了,那么问题又来了,怎么找?兄弟元素、子代元素的定位能作为参照吗?当然不能,“我”需要顺着②DOM树向直系祖先元素找,其他的旁系都不管。那么又有问题了,“我”的父级元素和祖父级元素都设置了定位,我该相对于谁?答案③是最近的祖先元素,也就是父级元素。最后一个问题???怎么这么多,我想定个位就这么难吗......脸上笑嘻嘻的继续找,心里mmp。问题是,如果“我”一直找一直找,到最后也没有找到符合条件的祖先元素呢?有说“我”是相对于浏览器窗口左上角的、也有说是相对于body的?“我”到底该相信谁.....最后经过“大量”实践,“我”自己得出,他们说的都对,但是都有前提条件。啊,这个真的复杂,不知道如何组织语言。。。

1)相对于body,因为body有个默认的margin外边距8px,上右下左都有,(条件不重置body的外边距且不设置TRBL),那么“我”就是相对于body左上角定位的,给body设置外边距,“我”就会跟着它走,同样给它设置border、padding也会影响“我”的位置。

div距上左的值就是html的盒子模型值+body的盒子模型值,同时相对于body定位,跟着body走。

2)相对于浏览器窗口左上角,(条件,设置TRBL值 且 垂直和水平方向都至少有一个值),设置后,div就不管html和body了。

div设置了left和top值,即垂直方向上和水平方向上都有值,那么div就会相对于浏览器窗口的左上角定位,html和body都右移了,而div不管,你们爱去哪去哪,“我”就相对于浏览器窗口左上角定位;

3)第三种情况比较特殊,前两种结合。。。。。尼玛,还有这操作。。。

div的上边距20px就是定位时top:20px,相对于浏览器窗口上边;左边距定位时没有设置,所以它的70px=body-margin-left+body-border-left+body-border-left=50+10+10,相对于body;

总结一下就是,定位时垂直方向 或 水平方向上,如果设置值,那么这个方向就按设置的这个值相对于浏览器窗口定位;如果这个方向上没有设置值,那么就按照在这个方向上的html+body的盒子模型的值之和定位。其实归根结底还是相对于浏览器窗口,在这个方向上,如果定位时设置了值,那么就按这个值,如果没有就按这个方向上的盒子模型的值之和。

注:absolute经常和relative配合使用。

4.fixed,固定定位,相对于浏览器窗口的左上角,常用于广告位、悬浮窗、头部、底部的定位,特点是脱离文档流,不会随着鼠标的滚动而滚动,就相对于浏览器窗口固定死了不动。

注:只有设置relative、absolute、fixed后,z-index属性才会生效。

表达能力不佳,可能读者读完也不知所云,我相信两句话:尽信书不如无书 和 绝知此事要躬行。所以我建议,读者还是自己亲自实践,我只是参考。

有误请指出,非常感谢!

原文地址:https://www.cnblogs.com/yk-68/p/8436590.html

时间: 2024-08-29 07:52:29

css模型之层模型的相关文章

CSS:3种基本的布局模型、层模型的三种形式

CSS包含3种基本的布局模型: 用英文概括为:Flow.Layer 和 Float.在网页中,元素有三种布局模型:1.流动模型(Flow)2.浮动模型 (Float)3.层模型(Layer) 流动布局模型具有2个比较典型的特征: 第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%.实际上,块状元素都会以行的形式占据位置.如右侧代码编辑器中三个块状元素标签(div,h1,p)宽度显示为100%. 第二点,在流动模型下,内联元素都会在所处的

CSS布局模型(流动模型、浮动模型、层模型)

在网页中,元素有三种布局模型: 1.流动模型(Flow) default,就是块级元素都自上而下的分布,宽度都为100%.内联元素都从左到右水平分布. 2.浮动模型 (Float) div.p.table.img 等元素都可以设置为浮动.两个 div 显示在一行的代码如下: div{ width:200px; height:400px; border:2px red solid; float:left; } 3.层模型(Layer) 层模型有三种形式: (1)绝对定位(position: abs

学习总结:CSS(一)块级与行级元素特性、盒模型、层模型、BUG与BFC、浮动模型

.displayTal { width: 100%; font-size: 13px } .displayTal1 { width: 30%; height: 30px; font-size: 13px; color: #009933 } .displayTal2 { width: 40%; height: 30px; font-size: 13px; color: #009933 } .displayTal3 { width: 30%; height: 30px; font-size: 13p

【css中的层模型】

层模型的三种形式:绝对定位,相对定位,固定定位 一.绝对定位:(position:absolute) 绝对定位就是将元素从文档中拖出来,然后使用left,right,bottom,top属性相对于其最接近的一个具有定位属性的父包含块进行定位,若不存在包含块,就像对于body元素定位,也就是浏览器窗口. 二.相对定位:(position:relative) 通过left,right,bottom,top属性来确定元素在正常文档流中的偏移位置,偏移后以前的位置保持不变 三.固定定位:(positio

布局模型 之 层模型(position的relative、absolute与fixed区别?)

css的布局模型分为流动模型(Flow).浮动模型(Float).层模型(Layer). 浮动模型(Float)和层模型(Layer)有什么显著区别?     浮动模型(Float):浮动是让某元素脱离文档流的限制,在浮动框之前和之后的非定位元素会当它不存在一样,可能沿着它的另一侧垂直流动:浮动的元素仍然会占据文档流的物理空间.关于浮动模型的详细说明请看另一篇文章的介绍.http://ycgit.blog.51cto.com/8590215/1958452 层模型(Layer):设置为层模型的元

盒子模型及层模型【定位】

首先需要说明,盒子模型是针对HTML元素的每一个标签的!因为HTML中每一个标签都符合盒子模型的特点! CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式.如下所示: 需要注意: 盒子是由三部分组成的,即:盒子壁[border]+内边距[padding]+内容区[content=width+height] 而盒模型是由四部分组成的,即:外边距[margin]+盒子壁[border]+内边距[padding]+内容区[content=width+he

OSI模型七层模型结构

OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI. OSI/RM协议是由ISO(国际标准化组织)制定的,它有三个基本的功能:提供给开发者一个必须的.通用的概念以便开发完善.可以用来解释连接不同系统的框架. OSI将计算机网络体系结构(archite

企业开发经验之盒子模型和层模型

1.如何让单行文本垂直居中?height和line-height的值相同,文本就会居中, 首行缩进:text-indent: 2em;  代表首行缩进2个字的空格  1em=1* 16px. 文字的行高是1.2倍宽高:line-height:1.2em. 2.图片是行内块元素,只要是inline属性都具有文本特性,不愿染是与非  怎料事与愿违.只要在HTML中写里两句,它们之间都会有空格.因此图片它们也会产生空格,像下图那样. 怎么解决以上问题, <img src="img/1.jpg&q

CSS层模型

参考:慕课网 点此可进 如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作.CSS定义了一组定位(positioning)属性来支持层布局模型. 层模型有三种形式: 1.绝对定位(position: absolute) 2.相对定位(position: relative) 3.固定定位(position: fixed) 绝对定位 需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用le