diff --git a/03-CSS进阶/03-CSS布局.md b/03-CSS进阶/03-CSS布局.md index 22b3435..a67846c 100644 --- a/03-CSS进阶/03-CSS布局.md +++ b/03-CSS进阶/03-CSS布局.md @@ -27,11 +27,11 @@ 1、**table 表格布局**:早期使用的布局,如今用得很少。 -2、**float 浮动 + margin**:问题较多。 +2、**float 浮动 + margin**:兼容性好。 -3、**inline-block 布局**:问题较多。 +为了兼容低版本的IE浏览器,很多网站(比如腾讯新闻、网易新闻、淘宝等)都会采用 float 布局。 -对外的表现是行内元素(不会独占一行),对内的表现是块级元素(可以设置宽高)。 +3、**inline-block 布局**:对外的表现是行内元素(不会独占一行),对内的表现是块级元素(可以设置宽高)。 4、**flex 布局**:为布局而生,非常灵活,是最为推荐的布局写法。 @@ -45,9 +45,9 @@ flex 是一种现代的布局方式,是 W3C 第一次提供真正用于布局 5、响应式布局。 -## float 属性 +## float 布局 -> 是 CSS 中比较麻烦的一种属性。 +是 CSS 中一种比较麻烦的属性,涉及到 BFC 和清除浮动(面试的重点)。 ### float 属性的特点 @@ -63,11 +63,116 @@ flex 是一种现代的布局方式,是 W3C 第一次提供真正用于布局 在此基础之上,如果给`div1`增加`float: left`属性后,效果如下: - + 上图中,可以看到,`div1`设置为浮动后,会脱离文档流,不会对`div2`的布局造成影响;但是`div1`不会脱离文本流,它会影响`div2`中文字的排列。 -其实,这正是 float 属性本身的含义。float 本身是用来做图文混排、文字环绕的效果。 +其实,这正是 float 属性的作用。float 本身是用来做图文混排、文字环绕的效果。 +### float 所带来的影响 +**1、对自身的影响**: +- 形成“块”(BFC) + +- 位置尽量靠上 + +- 位置尽量靠左/右 + +下面这两个并列的`div1`和`div2`,设置为浮动之后的效果:(都是尽量靠左显示的) + + + +在上方代码的基础之上,增加 `div2`的宽度之后,会发现,`div2`掉下来了: + + + +**2、对兄弟元素的影响**: + +- 不影响其他块级元素的位置 + +- 影响其他块级元素的内部文本 + +**3、对父级元素的影响**: + +- 从父级的布局中“消失” + +- 造成父级元素的高度塌陷:父级元素撑开 div1 之后(父级元素里没有其他元素的情况下),如果设置 div1 为 float 之后,,会让父级元素的高度变为0。 + +## inline-block 布局 + +对外的表现是行内元素(不会独占一行),对内的表现是块级元素(可以设置宽高)。 + +**思路**:像文本一样去排列 block 元素,没有清除浮动等问题。 + +**存在的问题**:需要处理间隙。代码举例如下: + +```html + + + +
+ + +