CSS中常⽤的position定位⼏种⽅式
对于刚学习了常⽤的CSS,你是不是在使⽤⼀些属性的时候,是不是总感觉不是那么的得⼼应⼿呢?尤其是在使⽤position定位的时候,呵呵...那么源码时代Web前端⽼师今天就给⼤家分析⼀下position常⽤的⼏种定位⽅式。
⼤家都知道,在CSS中,我们是通过定位属性position来进⾏定位的,具体它有如下⼏个属性值。我们先来做⼀个⼤概的了解,然后我们开始具体分析它们有哪些不同。
常见的属性有如下⼏个:
值描述
absolute⽣成绝对定位的元素,相对于static定位以外的第⼀个⽗元素进⾏定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进⾏规定。
fixed⽣成绝对定位的元素,相对于浏览器窗⼝进⾏定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进⾏规定。
relative⽣成相对定位的元素,相对于其正常位置进⾏定位。因此,"left:20" 会向元素的 LEFT 位置添加
20 像素。static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
inherit规定应该从⽗元素继承 position 属性的值。
以上是官⽅说明:是不是还是有很多童鞋有点⼉懵呀!没关系!我会带着⼤家来分析它。
⾸先,我们这⾥⽤的是标准盒⼦模型来讲,所以⼤家在理的时候必需把它看成⼀个盒⼦或者⼀个框。我们先来学习第⼀个默认参数static。
static:静态定位是position的默认值,元素框正常⽣成,也就是没有定位时的正常显⽰。
absolute:绝对定位
元素从⽂档流删除,并相对于包含块定位。元素在原本的空间关闭。元素定位后⽣成⼀个块级框,不论它原来是⾏内元素还是块级元素。
这⾥的包含块是指:最近的position值不是static的祖先元素(块级或⾏内),⼀般会指定⼀个元素作为绝对定位元素的包含块,将其position设置为relative⽽且没有偏移。这个是不是有点⼉像我们传说的”⼦绝⽗相”定位的概念呀,对其实就是指的是它。
fixed:固定定位
元素脱离⽂本流,从普通⽂本中删除,并相对于浏览器视窗定位,因此不随⽂档滚动⽽移动。元素在原本的空间关闭。元素定位后⽣成⼀个块级框,不论它原来是⾏内元素还是块级元素。与绝对定位的区别仅仅是包含块不同。
包含块:浏览器视窗。
relative:相对定位
相对定位,最常见的使⽤⽅式有如下两种:
使⽤⽅法⼀:元素相对⾃⾝的原位置偏移某个距离,但是原本的空间依旧保留,表现为空⽩。
使⽤⽅法⼆:把⼀个元素设置为position: relative; 可以使该元素的⼦元素相对该元素绝对定位(⼦绝⽗相定位)。
absolute/fixed和float对⽐
相同之处:元素都会脱离⽂本流,从普通⽂本中删除,但是依旧会影响布局;都会⽣成⼀个块级框,⽆论原来是不是块级元素。
不同之处:float的包含块是最近的块级祖先元素。
设置偏移属性:top/right/bottom/left,初始值是auto。
采⽤position定位之后必须采⽤偏移属性定义偏移量,也就是相对包含块的偏移。在使⽤的时候需要注意的是:定义偏移量的元素应为position值不是static的元素。
有时也需要定义width和heigth,但是可能会和偏移属性的定义冲突,因为四个偏移属性实际上已经定义了元素的⼤⼩。此时,根据width和left属性定义左右,根据top和height属性定义上下。
css固定定位
往往还会出现这样的⼀种情况:譬如说:当我们做好了⼀个指定⼤⼩的元素时,如果我们内容放不下,就会导致⽂本内容溢出,所以我们在这⾥还是得了解⼀下,CSS中的别⼀个属性。那就内容溢出:overflow.
通常内容溢出属性有如下⼏个值:
overflow: visible/ hidden/ scroll /auto/ inherit
overflow初始值是visible。
overflow就是咱们常⽤在:如果⼀个元素的⼤⼩固定,但是其内容放不下,就会导致溢出。overflow控制溢出部分的可见(visible)、不可见(hidden)、滚动可见(scroll)。
元素可见性visibility: visible/ hidden/ collapse/ inherit,初始值是visible。
visibility:hidden和display:none的区别:
这时候,你是不是会想到我们的另⼀个隐藏或显⽰的属性:display。通常的我们常⽤于⼀些特效中来显⽰或隐藏我们的元素,那么我们只是能⽤这个还不够,我们必需对它们两个做⼀次深⼊了解。
下⾯给出了:visbility:hidden和display:none最明显的不同处。
1.visibility:hidden设置元素不可见,但是元素依旧会影响布局,只是元素部分呈现为空⽩;
2.display:none元素不显⽰并且从⽂档流中删除,对⽂档布局没有任何影响。
总结:
本⽂中只提及到⼏个使⽤频率⽐较⾼的属性值,我们主要在学习的时候⼀定要准每个值的参照物,不然的话,对于初学者,理解起来还是⽐较⿇烦的。常常会⽤错属性值,然后花费⼤部分时间来调试,
那么问题就来了,如果对每个⼩的知识点有⾜够的理解的话,是不是在开发中就倍感得⼼应⼿哇!所以特别写了本篇⽂章分享给⼤家!并且希望还在⽔深⽕热中的你有所帮助。
感谢源码时代Web前端学科讲师提供此⽂章!