position属性值
在定位的时候都会接触到一个名词文档流,文档流大意就是元素在文档中的排列顺序,从左到右,从上到下排列和显示。float和 position可以使元素脱离文档流。
static(默认值)
元素按照文档流显示,不受left、right、top和bottom影响;
relative(相对定位)
相对定位是以元素原本所在位置为参考,保留原本占据的位置,不会对相邻的元素产生影响。
从效果图看出,第二个元素position属性设置了relative,以自身原本的文字向下偏移10px,没有对第一和第三个元素产生影响。如果设置相对定位,同时对top(对象相对原位置向下偏移的距离)和bottom(对象相对原位置向上偏移的距离)赋值,只有top起作用。同理,同时对left(对象相对原位置向左偏移的距离)和right(对象相对原位置向右偏移的距离)赋值,只有left起作用。
absolute(绝对定位)
元素设置为绝对定位后会脱离文档流,相对于第一个position属性不为static的父级元素进行定位,如果所有的父级元素都未设置position属性,则以document元素进行定位。在网页中document元素指的就是html。如果设置绝对定位,同时对top(对象相对原位置向下偏移的距离)和bottom(对象相对原位置向上偏移的距离)赋值,只有top起作用。同理,同时对left(对象相对原位置向左偏移的距离)和right(对象相对原位置向右偏移的距离)赋值,只有left起作用。
如果父元素没有设置定位,此时是以html元素为参考定位的
fixed(固定定位)
设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。
固定定位也不是完全以浏览器窗口定位参考,在网上看到过这样一个问题,重新设置parent样式
同样将父元素向左偏移30px,使用transform实现,此时第二个子元素定位的表现和absolute类似,以父元素为参考定位。
sticky
sticky的效果就是在一个内容中,我们可以固定一个部分,然后到了另一个内容,又会固定另外一个部分
position与display
元素分为内联元素和区块元素,在内联元素中是不能设置width和 height样式。
1.relative:原来是什么类型的依旧是什么类型。
2.absolute | fixed : 元素就被重置为了区块元素。
position与float
一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是relative却可以。因为它原本所占的空间仍然占据文档流。