CSS—position

不知道,看我写 前端知识的程序员们,有没有和我一样的感觉,我每次写完html结构,然后写css样式内容时,心里有一个样子,但是实现后,ctrl+save确是另一个样子,心里真是不爽啊。
对于position这个属性,我每次设置他的时候,都会或多或少有点意外。
面试过两三次,但是却没有被问到这个,心里还是有侥幸的心理的。

  • position
    这个属性一共有四个值。
  • static 静态定位
    默认布局。如果是块级元素就会在页面中自上而下的堆叠起来。如果是行内元素就会在一行内由左至右延续,如果装不下就会换行,装下了继续。
  • relative 相对定位
    使得该元素相对于他原来在文档中的位置进行定位。通过top、left、bottom、left这四个属性值,来改变它的位置。
    以上还很好理解。
    ** “ ** 不好理解在这里:为元素进行相对定位,会保留该元素原来占据的文档流空间。当对该元素进行相对定位时,比如top:20px;使得该元素距离距离他原来占据的空间顶部20px。也就是该元素向下移动了20px,但是除了该元素移动了一段距离,页面上其他元素并没有发生任何变化。
  • absolute 绝对定位
    绝对定位会彻底从文档流中拿出来,元素之前占据的空间也被回收啦。绝对定位元素的定位依靠其定位上下文。
    需要注意的是:这里写过绝对定位可以将行内元素变为块级元素的表现形式。但是确定就是一旦将行内元素进行绝对定位后,该元素的位置不好掌握,(原因:如果该元素没有设置内外边距,且前后左右也没有绝对定位元素,那么该元素会暂时停留在自己原来的位置,但是如果该元素设置了外边距,那么该元素会暂时停留在距原来位置一个外边距的距离。如果他前后左右都是设置了绝对定位的元素,那么该元素会寻找最上面一个不是绝对定位的元素下面。<有没有后悔听原因啦>)所以,一点那设置了绝对定位需要马上为该元素进行top、left定位。

定位上下文的理解:
相对于另一个元素移动该定位元素的位置,那么“另一个元素”即为该元素的定位上下文。
绝对定位元素的任何祖先元素都可以成为他的定位上下文,只需把相应的祖先元素设置为position:relative;即可。
如果其祖先元素均没有设置相对定位的,那么该绝对元素的默认定位上下文为body。

  • fixed 固定定位
    绝对定位也是完全移除文档流。但是他的定位上下文为视口,即浏览器窗口。
    固定定位不常用,最常见的情况是,用它创建不随网页而滚动而移动的导航。

我在做练习是,最习惯的就是将父元素进行相对定位,然后对要其子元素需要定位的进行绝对定位。
虽然有些网页也有父元素绝对定位,子元素相对父元素再绝对定位,我不太喜欢这样写,因为父元素的位置还需要再定位一遍。

    原文作者:Miss____Du
    原文地址: https://www.jianshu.com/p/ff9fbab61fcd
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞