文档流(normal flow)
首先理解浮动需要了解文档流。
网页是多层结构,一层叠着一层的,通过CSS可以控制每层的样式,而用户只能只看最上一层,底下无论有多少层都会被前面的那一层遮盖,而造成用户无法看见。
而最底下的一被称为文档流,创建的文档默认即是文档流中排列。
元素的两种状态
在文档流
不在文档流(脱离文档流)
元素在文档中有什么特点
- 块元素
块元素独占一行,从上往下垂直排列
默认宽度是低级的100%
默认高度由内容撑开 - 行内元素
不独占一行,在页面中自左向事排列
如果一行排列不下,则元素会换到第二行去展示
默认高度是由内容撑开
浮动样式
浮动是为了图片能被文字环绕而出现的特性
- img浮动元素
- p 块级元素代表(感觉不到浮动元素)
- 文字 inline/inline-block(感受不到浮动元素)
素有高低顺序,浏览器渲染从高到低的渲染,后写的层级比先写的高
背景层最低层级=》块级元素层级=》浮动层(块元素感受不到)=inline/inline-block
文本元素和块级元素天然排斥,不会重合。文本元素不会跑到浮动元素的下面,而块级是会跑到浮动元素的下面去。
浮动元素--float
可选参数:
none 默认值 元素不浮动
left 向左浮动
right 向右浮动
浮动元素的特性
- 文本环绕
- 多个盒子浮动会从左往右依次排列,如果当前排列不下,会“换行排列”
- 高度塌陷(大盒子如果不设置高度,内部所有元素浮动,他会高度塌陷,撑不开盒子)
解决办法:
1.父元素设定高度
2.bfc 块级格式化上下文
3.清除浮动解决高度塌陷 - 块级化 浮动会将元素强行转换为块元素
具有块元素所有性质,不具有独占一行和默认宽度父级100%的特性,而是由里面的元素撑开(此参考行内块元素特性 ) - 换行方式
原地向下缩到空间往前
开发尽量保证浮动元素等高
浮动的优点
1.没有解析空格,不存在垂直对齐的毛病(inline-block的毛病)
2.完美解析margin 没有垂直外边距合并问题
浮动元素不能margin:0 auto水平居中
清除浮动
不挨着浮动元素,遇到浮动元素之后换行,清除浮动元素对当前元素产生的影响。
可选值
clear:left; 清除左侧浮动元素对当前元素的影响
clear:right;清除右侧浮动元素对当前元素的影响
clear:both;有左浮动清除左浮动,有右浮动清除右浮动,两侧都有清除影响最大的那个
原理
设置清除浮动之后,游览器会自动会为元素添加一个上外边距,以使其位置不受其他浮动元素影响
有没有元素既可能是左浮动又是右浮动? 没有
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。