CSS定位

119 阅读1分钟

布局与定位的区别:定位是垂直于屏幕,布局是屏幕平面的。

div分层

  • 一个div可以分成多层。文字内容在最上面,然后是浮动div,正常div,然后是border,background在最下面。 (浮动元素向上浮起,脱离文档流)

div分层结构.png

position的五个取值

  1. static:默认值,在文档流中,可不写。

  2. relative:相对定位,升起来但不脱离文档流;相对位置改变,但是绝对位置还是不变的。

    • 使用场景:做位移,给absolute元素做父元素
    • 配合z-index(xyz轴中Z轴定位),层叠上下文
  3. absolute:绝对定位,定位基准是祖先里的非static

    • 使用场景:脱离原来的位置,另起一层。
    • (white-space:nowrap:文字内容不换行)
    • 配合z-index
    • ⭐absolute相对于祖先元素中最近的一个定位元素(非static属性)定位的。偏移值由top,bottom,left,right确定。
    • 善用left:50%; left:100%;以及-margin;
  4. fixed:固定定位

    • 使用场景:相对于屏幕视口(viewport)定位,元素在页面滚动时位置不会改变。
    • 尽量别用,坑
  5. sticky:粘滞定位,适用于导航。

  • 经验:
    1. 写了absolute一般都会补一个relative。
    2. 写了absolute或者fixed一定要补top和left。

层叠上下文

⭐如z-index正负数效果相反,正数越大浮的越高,负数越小,浮的最低。

div分层2.png

处于同一个小世界的z-index才可以相互比较。

  • 哪些不正交的元素可以创建层叠上下文?

    • MDN
    • 需要记忆的:z-index,flex,opacity小于1时,transform