码字仓颉

CSS定位

2017-07-28

CSS定位

1. 默认值 (static)

  • 没有定位,元素出现在正常的流中
  • 会忽略 top, bottom, left, right 或者 z-index 声明

2. 相对定位(relative)

  • 相对定位,就是微调元素位置的。让元素相对自己原来的位置,进行位置调整
  • 相对定位不脱标,真实位置是在老家,只不过影子出去了,可以到处飘
  • 使用场景:
    • 微调元素
    • 做绝对定位的参考,子绝父相

3. 绝对定位 (absolute)

  • 绝对定位比相对定位更灵活
  • 脱离标准文档流,所有标准文档流的性质,绝对定位之后都不遵守了(绝对定位之后,标签就不区分所谓的行内元素、块级元素了,不需要 display:block; 就可以设置宽、高了)
  • 参考点
    • 绝对定位的参考点,如果用top描述,那么定位参考点就是页面的左上角,而不是浏览器的左上角
    • 如果用bottom描述,那么就是浏览器首屏窗口尺寸,对应的页面的左下角
  • 以盒子为参考点
    • 一个绝对定位的元素,如果父辈元素中出现了也定位了的元素(static除外),那么将以父辈这个元素,为参考点。
    • 要听最近的已经定位的祖先元素的,不一定是父亲,可能是爷爷。
    • 不一定是相对定位,任何定位,都可以作为参考点。子绝父绝、子绝父相、子绝父固,都是可以给儿子定位的。但是,工程上子绝父绝,没有一个盒子在标准流里面了,所以页面就不稳固,没有任何实战用途。工程上,“子绝父相”才有意义,父亲没有脱标,儿子脱标在父亲的范围里面移动。
    • 绝对定位的儿子,无视参考的那个盒子的padding。
  • 绝对定位的盒子居中问题
    绝对定位之后,所有标准文档流的规则,都不适用了。所以margin:0 auto; 失效。可使用以下方式使之居中。
    1
    2
    left: 50%;
    margin-left: 负的盒子宽度的一半。

4. 固定定位 (fixed)

  • 固定定位,就是相对浏览器窗口定位。无论页面如何滚动,这个盒子显示的位置都不变。
  • 脱标

5. 粘性定位 (sticky)

  • 基于用户滚动的位置定位
  • 它的行为就像 position:relative;,而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置
  • 目前还是实验属性
  • 常见的一种使用场景是绝对底部(Sticky Footer)
Tags: CSS
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章