css定位有四种不同类型,position值分别为:static, relative,absolute,fixed
1. relative(相对定位):相对定位的偏移参考元素是元素本身,不会使元素脱离文档流。元素的初始位置占据的空间会被保留。相对定位元素常常作为绝对定位元素的父元素。并且定位元素经常与z-index属性进行层次分级
代码实例:
Document
相对定位
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
效果图:
尽管rel元素产生了偏移,但是文字并没有填补它的原来的位置,可以看出相对定位元素没有脱离文档流,原来的位置依然会被保留。
2. absolute(绝对定位)绝对定位元素以父辈元素中最近的定位元素为参考坐标,如果绝对定位元素的父辈元素中没有采用定位的,那么此绝对定位元素的参考对象是html,元素会脱离文档流。就好像文档流中被删除了一样。并且定位元素经常与z-index属性进行层次分级
代码实例:
Document
绝对定位
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
效果图:
在此辟谣一下哈!如果绝对定位元素的父辈元素中没有采用定位的,那么此绝对定位元素的参考对象是谁呢,有的人说是body,有的人会说是document,其实都不是,看了MDN上的介绍,以initial containing block为参考,它的尺寸是和视口是一致的,但不是由Viewport所产生的,而是由根元素所产生的。
代码实例:
实例效果图:
如果参考对象是body或者document的话,div元素肯定要位于页面的最底部,注意到这里有滚动条,元素只是位于视口的最底部。
3. fixed (固定定位)位移的参考坐标是可视窗口,使用fixed的元素脱离文档流。并且定位元素经常与z-index属性进行层次分级
实例代码:
Document
固定定位
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
阿什顿发斯蒂芬阿斯蒂芬阿斯蒂芬阿斯蒂芬
实例效果图:
fixed固定定位和absolute绝对定位比较类似,它们都能够让元素产生位移上面演示了固定定位;如果到目前为止还没有看到与绝对定位的区别,那么我们可以在文中多加些文字是浏览器产生滚动条,拖动滚动条就可以看到两个定位方式的区别,固定定位的元素如其名一样,能够固定在某个位置。而绝对定位就会随着滚动条滚动而移动位置。
4.static (静态定位)默认值,元素框正常生成的,top left bottom right这几个偏移属性不会影响其静态定位的正常显示
position定位有哪几种?各有什么特点
这里是修真院前端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析前端知识/技能,本篇分享的是:
【position定位有哪几种?各有什么特点 】
一、背景介绍
position 是CSS用来为HTML文档的一些元素提供定位的属性,定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。 常规取值: 1.static(静态) 2.Relative(相对) 3.Absolute(绝对) 4.fixed(固定)
二、知识剖析
文档流
将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。 只有三种情况会使得元素脱离文档流,分别是:浮动、绝对定位和固定定位。
STATIC(静态)
HTML元素的默认值,不受top、bottom、left、right属性影响,元素出现在正常的文档流中
RELATIVE(相对)
相对定位, 特点:不脱离文档流的布局,受top、bottom、left、right属性影响,只改变自身的位置,在文档流原先的位置遗留空白区域。定位的起始位置为此元素原先在文档流的位置。
ABSOLUTE(绝对)
绝对定位 特点:脱离文档流的布局,遗留下来的空间由后面的元素填充。定位的起始位置为最近的父元素(position不为static),否则为html文档本身。
FIXED(固定)
固定定位, 特点:类似于absolute,但不随着滚动条的移动而改变位置。元素的位置相对于浏览器窗口是固定位置。
STICKY(定位)
sticky 英文字面意思是粘,粘贴,所以可以把它称之为粘性定位.position: sticky; 基于用户的滚动位置来定位。 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。 它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。 元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。 这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。
三、常见问题
相对定位与绝对定位的搭配使用效果?
四、解决方案
父容器使用相对定位,子元素使用绝对定位后,这样子元素的位置不再相对于浏览器左上角,而是相对于父窗口左上角,若无非static祖先,以初始包含块定位,在浏览器里,根元素的包含块(HTML)为初始包含块,只是一般情况下看上去像是body区域。
五、编码实战
六、拓展思考
absolute与fixed有哪些区别?
fixed与absolute最大的区别在于:absolute的”根元素“是可以被设置的,而fixed则其”根元素“固定为浏览器窗口。即当你滚动网页,其元素与浏览器窗口之间的距离是恒定不变的。
七、参考文献
CSS Position 定位属性
对CSS中的Position、Float属性的一些深入探讨