笔记(给作者自己看的,详情请看链接)--浮动与定位

148 阅读2分钟

参考链接

一篇全面的CSS布局学习指南 [译]

CSS浮动和定位

浮动(Float)

  • 脱离正常文档流
  • 想要在浮动元素和环绕的文本之间创建边距,需要给浮动元素设置外边距。在文本元素上设置外边距只会让其相对于容器缩进,因为浮动元素已经脱离正常文档流
  • 如果容器太窄无法容纳水平排列的全部浮动元素,那么其它浮动元素会向下移动,直到有足够的空间,而如果浮动元素的高度不同,那么向下移动的时候可能会被卡住。
  • 容器内有了一个浮动元素,同时容器文本内容过短(即是文本高度小于浮动元素高度)时就会出现浮动元素被绘制在容器外的问题(这问题包括容器子元素都是浮动元素导致容器失去高度的状况)。解决办法是在容器最后添加一个空元素并设置clear属性。最常见的hack方案是:为容器添加一个块级CSS伪元素(一般用::after),并将其clear属性设置为both:
<!--.container代表容器元素-->
.container::after {
  content: "";<!--一定要有的-->
  display: block;<!--块级元素-->
  clear: both;
}
  • 解决上一个问题的办法还有:把容器元素变成BFC元素,BFC元素会完全包裹住了它内部的所有元素。这里介绍创建BFC的两种方法:
.container {
    overflow: auto;<!--为元素设置除visible(默认)之外的overflow属性值-->
}
.container {
    display: flow-root;<!--display: flow-root做的唯一的一件事就是去创建一个BFC,无副作用-->
}

定位(Positioning)

理解定位的不同的关键是参照点,不同的position值会产生不同的参照点。下面就参照点和是否脱离正常文档流进行对比。

  • 相对定位(relative postioning)

  • 绝对定位(absolute postioning)

  • 固定定位(fixed positioning)

  • STICKY 定位