CSS中相对定位和绝对定位理解

CSS布局在整个前端开发中占据了大约50-70%的工作量,在遵循web规范的前提下,编写合乎规范的前端代码,实现结构、样式和行为的分离,对于后期代码的维护以及不同的开发人员之间的协作具有重要的意义。

在编写html的过程中,强调使用带有明确语义的标签,Html中标签除了div和span之外都是有明确的语义的,这样一方面可以增强代码的可读性,另一方面可加快浏览器的解析速度。

HTML中的每一个标签,根据其其自身的属性可以区分为行级元素还是块级元素,一般情况下,应该尽可能使用标签默认的位置进行布局,当默认位置不能满足展示需求的时候,再考虑采用css代码来进一步控制标签元素的位置。 CSS定位的基础是基于盒子模型,介绍如下:

CSS的盒子模型

任何页面元素都可以看成一个盒子

一个盒子模型由content、padding、border、margin四部分组成。

width(height)的值指content的width(height)+padding的值。

border:border-top、border-bottom、border-left、border-right

width: thin、medium、thick、数值

style: none、hidden、dotted、dashed、solid、double、groove、ridge、inset、outset

padding:padding-top、padding-bottom、padding-left、padding-right

margin:margin-top、margin-bottom、margin-left、margin-right

对一行而言,两个块的margin = margin-right + margin-left

对换行而言,两个块的margin = margin-bottom和margin-top中较大者

对父子而言,子块的margin = 子块的margin + 父块的padding

当margin设为负数时,块会向相反的方向移动,甚至覆盖另外的块

定位含义

定位的目的是在框元素的padding、margin等自身属性无法满足需求时,改变元素在html文档中的默认位置,定位到目标区域时使用。如果要使用 top,bottom,left,right 属性,就必须要使用relative和absolute定位属性。

在CSS中关于定位的类型有如下几种:

position:relative | absolute | static | fixed

static(静态:没有特别的设定,遵循基本的定位规定,保持原来的位置不变,不能通过z-index进行层次分级。

relative(相对定位):对象不脱离文档流,对象不可层叠、参考自身静态位置通过 top,bottom,left,right 定位,并且可以通过z-index进行层次分级。也就是说尽管对象偏离了原来应该所在的位置,但是原来的位置还是占据中,不然其他元素用。

absolute(绝对定位):脱离文档流,通过 top,bottom,left,right 定位。选取其最近一个最有定位设置的父级对象进行绝对定位,如果对象的父级没有设置定位属性,absolute元素将以body坐标原点进行定位,可以通过z-index进行层次分级。本来应该在的位置被让出来的,其他的元素填充那个位置。

fixed(固定定位):这里所固定的参照对像是可视窗口而并非是body或是父级元素。可通过z-index进行层次分级。

注:

CSS中定位的层叠分级:z-index: auto | namber;

auto 遵从其父对象的定位

namber 无单位的整数值。可为负数

相对定位

相对定位是相对于该元素本来在文档中应该出现的位置。

设置为相对定位的元素框会偏移某个距离。元素仍然保持其未定位前的形状,它原本所占的空间仍保留。如果将 top 设置为 20px,那么框将在原位置顶部下面 20 像素的地方。如果 left 设置为 30 像素,那么会在元素左边创建 30 像素的空间,也就是将元素向右移动。

#box_relative {

position: relative;

left: 30px;

top: 20px;

}

绝对定位

决定定位是相对于其父元素而言。

设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。

普通流中其它元素的布局就像绝对定位的元素不存在一样:

#box_relative {

position: absolute;

left: 30px;

top: 20px;

}

因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其它元素。可以通过设置 z-index 属性来控制这些框的堆放次序。

一个例子

如果要是要使父元素包含子元素的话,应该使父元素的宽和高包含子元素的。

Div1为绝对定位:其脱离为文档流。不占据文档流的位置,position: absolute;left: 150px;top:20px;

Div2为相对定位:注意是相对其应该出现的位置,position:relative ;top:20px;left:150px;

Div21为相对定位:图所示,可以理解。

#div0{

border: 2px solid #FE7633; height:220px; width:380px;

}

#div1{

border: 2px solid #C2DCFF;

height: 80px;

width: 150px;

position: absolute;

left: 150px;

top:20px;

}

#div2{position:relative ;top:20px;left:150px; border:2px solid #646464; height:120px; width:150px}

#div21{border:2px solid #A5D69C; height:120px; width:50px}

#div3{ border:2px solid #A5D69C; height:20px; width:250px;}

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,748评论 1 92
  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 9,537评论 0 8
  • 1、垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,...
    kiddings阅读 3,160评论 0 11
  • 我们先来看看CSS3 Api中对position属性的相关定义: static:无特殊定位,对象遵循正常文档流。t...
    __越过山丘__阅读 559评论 0 0
  • C:小J啊,你会画圆吗? J:会啊! 我:(⊙ˍ⊙)你还会化缘!!!??? A:((*・∀・)ゞ→→ J:施主! ...
    Dwhite阅读 242评论 1 0