饥人谷技术博客

8. CSS浮动和定位

2017-07-13  本文已影响0人  Joey的企鹅

浮动元素的特征及影响

覆盖和挤开.png 2.png 高度塌陷.png

清除浮动

4.png
优点:简单,代码少,浏览器兼容性好。
缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。
属性
float left ; right
overflow hidden ; auto ; scroll
display table-cell ; table-caption ; inlin-block
position absolute ; fixed

而具有BFC属性的父元素具有包含浮动元素的能力,即达到清除浮动的目的。
优点:不存在结构和语义化问题,代码量极少。
缺点:根据使用属性的不同可能会出现一些预期之外的其他情况,或多或少有副作用。

.clearfix:after {
  content: "\200B";
  display: block;
  clear: both;
  height: 0;
}
.clearfix {
  *zoom:1; 
}
伪元素法.png

优点:结构和语义化完全正确,代码量居中。
缺点:复用方式不当会造成代码量增加。
PS:

  1. display:block 使生成的元素以块级元素显示,占满剩余空间;
  2. height:0 避免生成内容破坏原有布局的高度。
  3. 通过 content:" "生成内容作为最后一个元素,在一些浏览器(firefox直到7.0)仍然会产生额外的空隙。Unicode字符里有一个“零宽度空格”,也就是\200B,这个字符本身是不可见的,因此我们可以使用这个字符。或,最后加个属性(visibility:hidden)。
    参考:
  4. https://segmentfault.com/a/1190000004865198
  5. http://www.iyunlu.com/view/css-xhtml/55.html

定位方式

Z-Index

不引入Z-Index时的情况:(1-5依次从最底部到顶部)
  1. 根元素的背景与边框
  2. 位于普通流中的后代块元素按照它们在 HTML 中出现的顺序层叠
  3. 浮动块元素
  4. 常规流中的后代行内元素
  5. 后代中的定位元素按照它们在 HTML 中出现的顺序层叠
不引入时.png
注:图中"no position"在左边a(红色)块之上,d(橘色)之下,完全符合3 4 5的顺序。

JSBin地址

引入Z-Index后

注:z-index只对指定了 [position]属性为非static的元素有效。

引入Z-Index后.png
如何形成层叠上下文

文档中的层叠上下文由满足以下任意一个条件的元素形成:

总结
层叠顺序.png
  1. http://www.zhangxinxu.com/wordpress/2016/01/understand-css-stacking-context-order-z-index/
  2. https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Understanding_z_index
  3. https://github.com/norvca/blog/issues/11

Position:relative和负Margin的区别

relative和负margin.png

BFC

BFC(Block Format Context):块级格式化上下文,是Web页面的可视化CSS渲染的一部分。它是块盒子的布局发生,浮动互相交互的区域。

属性
float left ; right (即不为none)
overflow hidden ; auto ; scroll (不可为visible)
display table-cell ; table-caption ; inlin-block ; flow-foot
position absolute ; fixed

元素拥有这些属性后,便会建立块级格式化上下文。

阻止外边距合并.png 不重叠浮动元素.png 包含浮动.png

外边距合并

父子外边距合并.png

代码

  1. alert效果
  2. 信息收集表
  3. 模态框
  4. 导航栏
上一篇下一篇

猜你喜欢

热点阅读