`, `
`
2. **收缩与包裹** : 代表是浮动 绝对定位 inline-block元素或table元素
3. **收缩到最小** : 容易出现在table-layout为auto的表格中 ( 表现为表格中的文字呈竖排被压缩为一列 )
4. **超出父容器限制** : 内容为很长的连续英文或数字 ( 汉字可以在任意位置截断 ) , 或者内联元素被设置了`white-space:nowrap`
##### 关于100%
对于display为block的元素 , 它的宽度如果是auto , 那么自然会表现为 **充分利用可用空间**
但是并不意味着指定width为100%会有同样的表现
比如这种情况
```html
```
```css
.box {
width: 150px;
height: 100px;
background: pink;
}
.box > .cell {
background: orange;
padding: 5px;
margin: 5px;
width: 100%;
}
```
子元素具备padding margin
设置了宽度100% , 反而会溢出父容器之外

更好的办法是借助流动性无宽度布局
例外的是`textarea`和`input`, 他们都自带border和padding, 并且如果强行清除padding, 内容会顶着边框, 并不美观
但是即使设置他们的display是block , 也不会自适应父容器宽度
这种情况下是 **必须**用到`box-sizing: border-box`的
```html
```
```css
.box {
width: 300px;
height: 150px;
border: 1px solid red;
}
.box > textarea, .box > input {
display: block;
width: 100%;
}
.box > textarea.border, .box > input.border {
box-sizing: border-box;
}
```

##### height:auto
与width相比, height就简单许多了, 因为CSS默认的流是水平方向的
宽度是稀缺的, 高度是无限的
多数情况下都是内部元素高度总和多高, 父元素就有多高 ( 子元素未脱离标准流 )
需要注意的一点就是
**高度的百分比值要想起作用, 父元素必须有可以生效的高度值**
#### 自适应性
简单来说就是内容越多 , 宽度越宽
如果这个宽度达到了父容器的宽度, 则会自动换行
> 前提是内容按照当前换行规则可以换行, 否则会溢出父容器
比如要实现内容为单行时居中 , 多行时最后未占满的一行居左 , 可以这样做
```html
这是一行文字
这是很多文字这是很多文字这是很多文字
```
```css
.box {
width:180px;
border:1px solid red;
padding:5px;
text-align:center;
}
.box > .content {
display:inline-block;
text-align:left;
border:1px solid blue;
}
```
