发表于: 2019-09-26 09:26:03
1 853
今天完成的事情:
认识bfc
BFC概念
BFC 即 Block Formatting Contexts (块级格式化上下文),它属于上述布局模式的流动模型。是W3C CSS2.1规范中的一个概念,决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。具有BFC特性的元素可以看做是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且BFC具有普通容器所没有的的一些特性。通俗一点来讲,可以把BFC理解为一个封闭的大箱子,箱子内部的元素无论如何翻江倒海,都不会影响到外部。
形成BFC的条件
只要元素满足下面任一条件即可触发BFC特性:
body 根元素
浮动元素:float 除 none 以外的值
绝对定位元素:position (absolute、fixed)
display 为 inline-block、table-cells、flex
overflow 除了 visible 以外的值 (hidden、auto、scroll)
BFC常见作用
1、阻止外边距折叠
问题案例:margin塌陷问题:在标准文档流中,块级标签之间竖直方向的margin会以大的为准,这就是margin的塌陷现象。可以用overflow:hidden产生bfc来解决。


从效果上看,因为两个div元素都处于同一个BFC容器下(这里指body元素),所以第一个div的下边距和第二个div的上边距发生了重叠,所以两个盒子之间距离只有100px,而不是200px。
首先这不是 CSS 的 bug,可以理解为一种规范,如果想要避免外边距的重叠,可以将其放在不同的 BFC 容器中。


2、包含浮动元素
问题案列:高度塌陷问题,在通常情况下父元素的高度会被子元素撑开,而在这里因为其子元素为浮动元素所以父元素发生了高度坍塌,上下边界重合,这时就可以用BFC来清除浮动了。

由于容器内元素浮动,脱离了文档流,所以容器只剩下2px的边距高度。如果触发容器的BFC,那么容器将会包裹浮动元素。

3、阻止元素被浮动元素覆盖
问题案例:由于左侧块级元素发生了浮动,所以和右侧未发生浮动的块级元素不在同一层内,所以会发生div遮挡问题。可以给右侧元素添加 overflow: hidden,触发BFC来解决遮挡问题。


这时候其实第二个元素有部分被浮动元素所覆盖,但是文本信息不会被浮动元素所覆盖,如果想避免元素被覆盖,可触发第二个元素的BFC特性,在第二个元素中加入overflow:hidden,就会变成:


bfc链接:
两个链接,配合观看,初步认识bfc特性
思考:由此得出,之前header_center部分的颜色问题与bfc无关,就是最下方为整体的父元素添加了87px的高度,但是根据需要又向上移动的97px的高度,
因此,背景颜色填充反而上移了10px,这点从后面添加元素紧跟之前颜色的分割区域也可以看出.
但是,如果不用这种做法,第二种方法使用绝对定位,就需要是否受到bfc的影响
了解了bfc资料,继续完成task7
header_bootom如图所示

遇到问题:在浮动布局部分,脱出文档流,父元素高度塌陷,为父元素设置的外边距,也没撑开;
解决:可以刚学到的bfc,触发容器的bfc,让容器包裹浮动元素

头部布局结束
主体布局
为主体布局设置一个大盒子main包裹
因为头部固定定位,脱离文档流,根绝bfc,用绝对定位为main设置header内容高度的外边距
如果不用绝对定位,直接用


main顶部会紧贴header顶部,为main设置的顶边距,会作用于header的顶边,所以需要为main设置绝对定位,脱离文档流
思考:有没有什么更好办法实现范例效果?
方法:方向,让下方的文档识别上方固定定位的文档,
为下方文档设置脱离文档流属性,让它自动识别,失败
所以,为main添加bfc属性
其中有三个小盒子
在小盒子中添加文本,设计样式
遇到问题:在布局过程中,因为理解错误,导致本该是滚动布局的main的一部分,出现在了固定定位布局的header部分,
删改样式
思考:没有经过严禁的思考,就开始布局,导致的结果,没有想过作为使用者的感受,应该多角度的去思考该,如果我是观看这个页面的人,
我是怎样的感受,怎么做我的感受会最好
运用flex布局做main底部文字布局
footer部分
固定在底部,
颜色设置透明度
添加两个按钮属性
运用弹性布局,两边居中,
收获:学到了bfc的用法
任务7结果页面的切图,不能合在一起切,有白色边框
需要分开切,怕与任务记载有冲突,更改玩的任务7,链接在明天
明天计划:
开始任务8
评论