发表于: 2018-06-14 22:34:12

1 498


2018.6.14


今天完成的事情:

1.BFC

2.背景属性


明天计划的事情:

1.雪碧图

2.css编码规范


遇到的问题:


收获:

五.BFC(边距重叠解决方案)

1.BFC的概念

BFC(Block Formatting Context):块级格式化上下文。你可以把它理解成一个独立的区域。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

2.BFC 的原理/BFC的布局规则【非常重要】

BFC 的原理,其实也就是 BFC 的渲染规则

(1)BFC中的盒子会按照垂直方向一个个放置

(2)BFC 里面的元素,在垂直方向,边距会发生重叠。

(3)每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

(4)BFC区域不与旁边的float box区域重叠。(可以用来清除浮动带来的影响)。(稍后看举例2)

(5)BFC在页面中是独立的容器,外面的元素不会影响里面的元素,反之亦然。(稍后看举例1)

(6)计算BFC的高度时,浮动的子元素也参与计算。(稍后看举例3)

3.如何生成BFC

方法1:根元素

方法2:浮动中:float的属性值不为none。意思是,只要设置了浮动,当前元素就创建了BFC。

方法3:定位中:只要posiiton的值不是 static或者是relative即可,可以是absolute或fixed,也就生成了一个BFC。

方法4:display为inline-block, table-cell, table-caption, flex, inline-flex

方法5:overflow: 不为vidible,可以让属性是 hidden、auto。【最常用】

4.举个例子:

4.1 自适应两栏布局

根据原理3:每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

因此,虽然存在浮动的元素box1,但box2的左边依然会与包含块的左边相接触。

根据原理4:BFC区域不与旁边的float box区域重叠。

所以可以通过触发box2生成BFC, 来实现自适应两栏布局。

.box2{

    overflow: hidden;

}

当触发box2生成BFC后,这个新的BFC不会与浮动的aside重叠。因此会根据包含块的宽度,和aside的宽度,自动变窄。

4.2清除内部浮动

根据原理6:计算BFC的高度时,浮动的子元素也参与计算

为达到清除内部浮动,触发father生成BFC,那么father在计算高度时,father内部的浮动元素son也会参与计算。

.father{

    overflow: hidden;

}

效果如下:

4.3垂直 margin 重叠

Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠

可以在p外面包裹一层容器,并触发该容器生成一个BFC。那么两个P便不属于同一个BFC,就不会发生margin重叠了。


九、背景属性

CSS样式中,常见的背景属性有以下几种:(经常用到,要记住)

1.background-color:#ff99ff; 设置元素的背景颜色。——一般用16进制

2.background-image:url(images/2.gif); 将图像设置为背景。

3.background-repeat: no-repeat; 设置背景图片是否重复及如何重复,默认平铺满。(重要)

不加这个属性时,默认平铺满;

no-repeat不要平铺;

repeat-x横向平铺;

repeat-y纵向平铺。

4.background-position:center top; 设置背景图片在当前容器中的位置。

用像素值描述属性值:background-position:向右偏移量 向下偏移量;

属性值可以是正数,也可以是负数

用单词描述属性值:background-position:描述左右的词 描述上下的词;

描述左右的词:left、center、right

描述上下的词:top 、center、bottom

5.background-attachment:scroll; 设置背景图片是否跟着滚动条一起移动。

scroll(背景图片不动)、

fixed(背景图片跟着滚动条一起移动)

6.还有一个简写属性叫做background,它的作用是:将上面的多个属性写在一个声明中。

background:red url(1.jpg) no-repeat 100px 100px fixed;



返回列表 返回列表
评论

    分享到