Files
web/03-CSS进阶/03-CSS布局.md
2019-10-05 20:41:41 +08:00

74 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 前言
### 常见的布局属性
1`display` 确定元素的显示类型:
- block块级元素。
- inline行内元素。
- inline-block对外的表现是行内元素不会独占一行对内的表现是块级元素可以设置宽高
2`positon` 确定元素的位置:
- static默认属性值。
- relative相对定位。相对于元素本身进行偏移**不会改变它所占据的空间**。
- absolute绝对定位。相对于父元素中最近的 relative/absolute 进行偏移,会脱离文档流。音标:[ˈæbsəluːt]。
- fixed固定定位。相对于可视区域固定会脱离文档流。
`relative``absolute``fixed`这三个属性,可以结合 z-index 来设置层级。
### 常见的布局方法
1、**table 表格布局**:早期使用的布局,如今用得很少。
2、**float 浮动 + margin**:问题较多。
3、**inline-block 布局**:问题较多。
对外的表现是行内元素(不会独占一行),对内的表现是块级元素(可以设置宽高)。
4、**flex 布局**:为布局而生,非常灵活,是最为推荐的布局写法。
唯一的缺点是兼容性问题:
![](http://img.smyhvae.com/20191005_1200.png)
上图中可以看到, flex 布局不支持 IE9 及以下的版本。如果你的页面不需要处理 IE浏览器的兼容性问题则可以放心大胆地使用 flex 布局。
flex 是一种现代的布局方式,是 W3C 第一次提供真正用于布局的 CSS 规范。
5、响应式布局。
## float 属性
> 是 CSS 中比较麻烦的一种属性。
### float 属性的特点
- 元素浮动
- **脱离文档流,但不脱离文本流**
代码举例:
下面这两个并列的`div1``div2`,默认是在标准流中的:
![](http://img.smyhvae.com/20191005_2029.png)
在此基础之上,如果给`div1`增加`float: left`属性后,效果如下:
![](http://img.smyhvae.com/20191005_2035.png)
上图中,可以看到,`div1`设置为浮动后,会脱离文档流,不会对`div2`的布局造成影响;但是`div1`不会脱离文本流,它会影响`div2`中文字的排列。
其实,这正是 float 属性本身的含义。float 本身是用来做图文混排、文字环绕的效果。