css中position的四个属性:relative、fixed、absolute、static

标准文档流: 我们在编写html代码的时候,通常的各个元素的布局方式是按照我们编写代码的顺序来排布的,从左到右,从上到下的顺序,当然,如果都是行内元素则都在一行显示,如果碰到块级元素就让块级往下独占一行显示,这种就叫标准文档流

position的四个属性:

一、相对布局(relative):当我们写了三个行内元素ABC,则它们会从左到右挨在一起排布,如果将中间的元素B加上相对布局,调整它的下间距,那么它会相对于它之前按照标准文档流放入的起始位置向上(正数向上负数向下)移动,A和C的位置保持不变,看下面的例子

之前的位置



相对定位后的位置

可以看出中间的元素向上移动了10个像素,而左右两边的元素都没有动


二、固定布局(fixed):加上这个属性就会脱离标准文档流的限制,按照上面的例子,如果对中间的strong元素加上固定布局,那么右边的元素a会向左移,与中间的srong元素重叠在一起,也就是左边和右边的元素按照标准文档流来排布,相当于中间的元素不存在一样,看下面的代码

fixed布局

可以看出最右边的元素直接挨着最左边的元素,无视中间加上固定布局元素的存在,这样固定元素就脱离了标准文档流的限制,如果对其设置边距,边距是相对于浏览器视口作为参照物的,而且在拖动浏览器的时候该元素也不会跟着滑动,而是固定在那里(类似悬浮效果)

可以看出当我们滑动滚动条时,固定布局的元素也没有跟着移动



三、绝对布局(absolute):当元素设置了绝对布局,那么该元素的相对参照物就是第一个设置了位置布局的父view,也就是第一个设置了绝对布局、相对布局或者固定布局的父view,如果都是默认的static布局,那么该元素的参照物就是视口,设置了绝对布局的元素会脱离标准文档流,而且不占父view的大小,看下面的例子

可以看出三个div按照标准文档流布局就是上面的样式,三个div默认都是static布局,这时如果将最里面的div box3设置成绝对布局,box就脱离的标准文档流的束缚,然后向外层找第一个设置了位置布局的父view,一直到视口都没有找到,这时就以视口为参照进行布局

可以看出box3设为绝对布局后,参照物变为了视口,所以距离视口的上右间距都为100

注意:当box3只是设置了绝对布局,但没有设置上下左右这些属性时,box3的这些属性时auto自动的,也就是不管会默认放在什么位置都不会觉得奇怪,而且这里和之前的固定定位不一样,固定定位当浏览器滚动条滑动的时候,固定定位的元素不会跟着滑动,但绝对定位的元素是会跟着一起滑动的



下面再看下将box3设为绝对定位的同时将box2设置为相对定位

可以看出当我们将box3的父view box2设置为相对定位后,box3的参照物就变为了box2



再看我们将box3设为绝对布局的同时将box1设为相对布局,box2位默认static布局

可以看出当我们将box3的祖父view box1设置为相对定位后,box3的参照物就变为了box1

子绝父相:在实际开发中,我们将子视图设为绝对布局时,一般都会将父视图设为相对布局,这样可以达到父视图的位置还是原来的位置,如果将父视图设为绝对布局或者固定布局,那父视图的位置也会跟着发生改变,他们都会脱离标准文档流布局


我们再来验证下绝对布局不会占用父视图的大小

可以看出按照标准文档流的布局,<span>标签和<div>标签的位置就是上图所示,inline-block表示包裹住子元素,不要有多余的区域,如果不设置该属性,那么box1作为块元素将显示整行,也就是蓝色背景会填充到最右边。

我们将box2设为绝对布局,并且将box1设为相对布局,如下

可以看出绝对布局的box2的参照物就是具有相对布局的父view box1,top-30px,表示距离box1的顶部有30px,与左边对齐,而且box1的背景颜色只有<span>文字的大小区域,并没有将box2的大小计算在内,说白了box1的大小就是<span>元素的大小



四、默认布局(static):按照标准文档流进行布局,并且static布局的元素不会受到top/left/bottom/right属性的影响。布局元素的位置即其在标准文档流中的位置。

最后说一个细节,每次最外层的view和浏览器的视口都有一点间距,就是说body的上左都与浏览器有一点间距,这或许是浏览器故意这样处理的,只需要将body的margin设为0即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342