CSS布局--浮动与定位

每个网页都可以看成是由一层一层页面堆叠起来的,如下图所示。

元素堆叠

把元素往 Z 轴方向移了一层,元素将脱离普通流,不再占据原本文档流那层的空间,还会覆盖下层的元素。

  • 相对定位,设置了 position:relative 的元素;会发生:

    • position 设置为 relative 的时候,元素依然在普通流中,可以通过 left right 等属性相对于以前位置移动元素,偏移前的位置仍然保留(即同一文档流的其他元素无法占据原位置)。
  • 设置了 position: absolute 或 fixed 的元素;会发生:

    1. 设置了 position: absolute/fixed 的元素,将脱离文档流,不再占据原本文档流那层的空间;
    2. 设置了* *position: absolute/fixed 的元素,会让元素变成行内块状元素,相当于给该元素设置了 display: inline-block;
  1. 设置了 position: absolute 的元素在定位时将忽略其相对定位的元素的 padding。
  2. 设置了 position: absolute 的元素设置的百分比的宽和高将针对其相对于定位的元素进行计算。

应用了position: relative/absolute/fixed的元素,margin属性仍然有效。

  • 设置了 float : left/right 浮动的元素:

    1. 浮动元素会让父元素的高度缺失。
    2. 浮动就是个带有方位的 display:inline-block 属性。
  • 同时设置了浮动和定位:

    1. 元素同时应用了position: relative(top / left / bottom / right)和 float: left/right 属性后,则元素先浮动到相应的位置,然后再根据(top / left / bottom / right)所设置的距离来发生偏移;父元素仍无法获得此元素的高度;
    2. 元素同时应用了position: absolute和float: right/left 属性,则float失效。
    3. 第一个元素应用了 position 之后会覆盖着接下来的float: right/left 元素(如果两个元素所处的位置相同)。只有将float的元素的position设置成relative同时并设置较大得z-index值才能覆盖处于同一位置的position元素
  • 总结:

    1. position: absolute/fixed和 float: left/right 都会让元素 inline-block 化。
    2. float: left/right 致使父元素高度塌陷;position: absolute 致使父元素高度、宽度都塌陷(即脱离文档流)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 13,240评论 0 8
  • 学习建议 定位、浮动是 CSS 核心知识点,必须熟练掌握。 1.文档流的概念指什么?有哪种方式可以让元素脱离文档流...
    饥人谷_任磊阅读 4,756评论 0 3
  • 一、文档流的概念指什么?有哪些方式可以让元素脱离文档流? 文档里指元素在文档中的位置由元素在html里的位置决定,...
    dengpan阅读 3,523评论 0 3
  • 一回到家,感觉家里气氛沉闷了好多。以往一听到我下班开门的声音就会欢呼雀跃过来迎接的儿子也没有动静。于是走进他卧室看...
    药山阅读 4,026评论 0 50