定位详解
定位这个东西,blablabla,什么absolute,fixed...一头雾水
定位=定位模式+边偏移
定位模式
💡首先要声明的是,元素分为**块级元素与浮动元素**这个属于布局主题,当然他们也有各自的定位属性,这里主要写一下块级元素的定位。
position属性
当我们键入position时,编辑器会显示其属性,主要为5个--absolute、fixed、relative、static、sticky。
🔍谨记一点,所有定位,都是有参考单位的,一定是相对于某个标准元素进行定位调整。
absolute
顾名思义,absolute--绝对定位。当然绝对定位也是有参考单位的,他并不是相对于document进行定位,而是当其父元素有定位属性时(绝对、固定或相对定位,通常父元素为相对定位,口诀为子绝父相,总之,父元素要占据位置),遵从其父元素定位,如果没有才是相对于document进行定位。
fixed
fixed--固定定位,它是相对于浏览器窗口位置进行定位的,它通常用于一些吸附元素的定位,又或是需要始终显示在浏览器某个位置的元素定位。
比如:顶部导航栏,又或如【回到顶部】按钮~
relative
relative--相对定位。相对定位是元素相对于它原来在标准流中的位置来说的。
这个很好理解,这个元素的参考单位是它原来的位置。
static
static--静态定位。这是浏览器默认的定位模式,如果我们不写position,那么浏览器默认的position就是static。也就是所谓的标准流。
sticky
粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。须指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。
边偏移
说完定位模式,该写一下边偏移的概念了。
3.1.1、top
top样式属性定义了定位元素的上外边距边界与其包含块上边界之间的偏移,非定位元素设置此属性无效。
3.1.1.1、属性值 --** 值、百分比、auto**
值
可以是负的,正的或者 null 表示;
对于绝对定位的元素,元素下外边距边界与其包含块下边界之间的偏移。
对于相对定位定位的元素,元素的下边界离开其正常位置的偏移。
百分比
代表元素包含块的高度的百分比。
auto
这个关键字表示:
对于绝对定位元素,元素将忽略此属性已bottom属性为准,如果此时设置height: auto,将基于内容需要的高度设置高度;如果bottom也为auto的话,元素的垂直位置就是它假如作为静态(即static)元素时该在的位置。
对于相对定位元素,元素相对正常位置的偏移量将基于bottom属性;如果bottom也为auto的话,元素将不会有偏移。
3.1.1.2、注意点
top的效果取决于元素的position属性:
当position设置为absolute或fixed时,top属性指定了定位元素上外边距边界与其包含块上边界之间的偏移。
当position设置为relative时,top属性指定了元素的上边界离开其正常位置的偏移。
当position设置为sticky时,如果元素在viewport里面,top属性的效果和position为relative等同;如果元素在viewport外面,top属性的效果和position为fixed等同。
当position设置为static时,top属性无效。
当top和bottom同时指定时,并且 height没有被指定或者指定为auto的时候,top和bottom都会生效,在其他情况下,如果 height被限制,则top属性会优先设置,bottom属性则会被忽略。
right、bottom、left是一样的
3.1.5、注意点
注意:
top 和 bottom 不要同时使用;
left 和 right 不要同时使用。
参考文章
CSS系列之定位详解_css定位_老__L的博客-CSDN博客