发表于: 2019-03-16 23:33:30
1 796
今天完成的事:
1.完成了任务八九的修改,通过了审核
2.学习了响应式导航栏的布置
3.深度学习了BFC的概念和应用
明天的计划:
1.开始任务十的学习
2.深度思考基础知识
遇到的问题:
1.今天在改导航栏,任务要求用bootstrap的导航栏,这是个响应式导航栏,在拉窄屏幕的时候会收缩成一个按键,然后以下拉菜单的样式展现。因为用的是bootstrap的组件,所以相对来说不难,但是我的下拉菜单就是无法显示。经过很久的排查,最后发现是因为我给header头部了一个height:50px的定高!导致导航栏无法自适应下拉,被我的高度卡死了。
收获:
1.今天深入探究了一下BFC盒子
BFC的F就是格式化的意思 formatting ,b就是最熟悉的block块级元素,c就是文本content。 所以全称是 块级格式化上下文本
一个与外部隔离,相对独立的盒子,但是存在于文档流中(absolute float这种都是脱离的)
想要触发BFC有以下几个条件
1.float: left
2.overflow 又分为 overflow-hidden 和 overflow-scroll
3.display:table
4.position的值,不是static或者relative ,也就是absolute和fixed也满足条件
BFC的特性
(1)在一个bfc盒子里,上下文本的margin值会被折叠, 如下面的栗子,在container盒子里,上下的p元素,margin值非常大,但是中间部分重叠了。但是我在p内部给了float:left,也就是内部再重新创建一个bfc之后,两个BFC之间重叠不再出现。
总结:利用BFC的折叠特性,我们可以灵活操控上下盒子的距离,假如我想让margin出现,就分别创建两个bfc,假如我想缩小上下文的距离,可以选择放在同一个bfc盒子里。当然如果你乐意,可以把上下盒子margin都设成0,不用管什么bfc,让他们亲密接触吧!



(2)BFC的包裹性,也可以称为 父级盒子清除内部子级浮动的特性
来个demo简洁明了,下面这个父级盒子没有高度,并且内部小盒子有浮动,这时候老爹降服不了熊孩子,只能让他们乱跑
但是如果给父级盒子一个float触发BFC,三个孩子就会乖乖回到老爹的怀抱,而且也是在没有给黑盒子height的情况
换句话说,只要触发BFC,父级就会包裹住子级,这就是包裹的特性,也可以成为清楚了内部的浮动(回到了文档流内)


(2)-2 继续讨论包裹性的问题,我们知道触发BFC不止只有float, 还有 overflow,absolute, table
下面就是用overflow-scroll触发BFC
同样的,黑老爹包住了娃娃们,但是问题来了,因为有两个娃特别高,这时候用overflow:scroll触发BFC就会出现滚动条,这就是弊端之一了

下面就是用overflow-hidden触发BFC
这个hidden一般来说还是比较稳的,没什么特别的不好的地方,但是如果我们给父级盒子设置了特定的高度,这时候触发BFC,那么娃娃们可能就会被咔嚓
,这就是hiddem的弊端之一,会把溢出的部分裁剪

(3)BFC的文字环绕特性
如图,我们都知道float浮动可以让文字环绕在身边,这也是BFC的特型之一,但是我们也同样能以其人之道,还治其人之身。
如果我们给右边的文字盒子触发BFC,那么就可以脱离环绕


评论