1、rem与em的区别是什么?
答:1)rem是基于html大小来决定的,一般主流浏览器默认为16px。2)em是根据使用它的元素大小来决定的。
原文链接:http://caibaojian.com/rem-vs-em.html
rem 单位翻译为像素值是由 html 元素的字体大小决定的。 此字体大小会被浏览器中字体大小的设置影响,除非显式重写一个具体单位。
em 单位转为像素值,取决于他们使用的字体大小。 此字体大小受从父元素继承过来的字体大小,除非显式重写与一个具体单位。
来源:前端开发博客
2、两种盒模型分别说一下?
答:标准盒模型:width宽度等于自身content内容区的宽度,可视区的宽度等于border+padding+width。
怪异盒模型:width宽度等于border+padding+content
css3属性可设置模型选择:box-sizing:content-box(标准盒模型)/border-box(怪异盒模型)
3、如何垂直居中?
答:字体:text-aligin:center,line-height:height。
div:1) position:absolut; top:50%;left:50%;margin-top:-height/2;margin-left:-width/2;
2)position:absolut;top:50%;left:50%;transform:translate(-50%,-50%)
3)flex布局:display:flex;flex-direction:row;justify-content:center;align-items:center;
4、flex怎么用?常用的属性有哪些?
flex一般用于布局,好处是可自适应。一般分为容器属性和项目属性
容器属性:flex-direction(元素排列方向):row、row-reverse、column、column-reverse
flex-wrap(换行):nowrap、wrap、wrap-reverse
flex-flow(元素排列方向和换行的简写):flex-direction || flex-wrap
justify-content(主轴对齐方式):flex-start、flex-end、center、space-between、sapce-around
align-items(交叉轴对齐方式):stretch(元素被拉伸以适应容器)、flex-start、flex-end、center、baseline
align-content(多行交叉轴对齐方式):stretch、flex-start、flex-end、center、space-between、space-around
项目属性:order(排列顺序)数值类型默认为0,数值越小越靠前。
flex-grow(放大比例):定义了放大比例,默认为0,即如果存在剩余空间也不会放大。但是如果所有的项目flex-grow的属性都为1,则剩余的空间将会被等分(如果存在剩余空间的话)。如果其中一个项目的flex-grow为2,其他的为1,则为2的项目将是其他项目的2倍大小。
flex-shrink(缩小比例):定义了项目的缩小比例,默认值为1,即如果空间不足,项目都等比例缩小。但是如果其中一个flex-shrink的值为0,空间不足缩小时,其空间大小不会变其他项目按相对比例缩小。
flex-basis:定义项目占据的主轴空间,默认auto。会根据flex-direction定义的主轴(水平或者垂直),定义项目本来的大小,跟width或者height一样。如果项目同时设置具体的flex-basis和width,则flex-basis将覆盖width,但是如果flex-basis属性是auto,width是具体数值,则以width为主。
flex:flex-grow、flex-shrink、flex-basis的缩写
align-self(定义自己的对齐方式):单个项目有与其他项目不一样的对齐方式,可覆盖align-items,默认值auto。
属性值有:auto(元素继承了它的父容器的 align-items 属性,如果没有父容器则为 "stretch")、stretch、flex-start、flex-end、baseline
(参考链接https://www.cnblogs.com/lixuemin/p/6110434.html)
5、BFC是什么?举例说明
BFC全称为格式化上下文(Block Formatting Context)
BFC就是一个作用范围。可以把它理解成是一个独立的容器,并且这个容器的里box的布局,与这个容器外的毫不相干。
BFC的形成:
1)浮动,float:left(除了none以外的浮动元素)
2)定位,position(除了relative和static)
3)overflow,除了visible
4)display:inline-block,table-cell(单元格),table-caption(标题头)
BFC的特性:
1)两个相邻的普通流中的块框(div)在垂直位置的空白边会发生折叠现象。也就是处于同一个BFC中的两个垂直窗口的margin会重叠。生成 block formatting context 的元素不会和在流中的子元素发生空白边折叠。所以解决这种问题的办法是要为两个容器添加具有BFC的包裹容器。
2) 在 Block Formatting Context 中,每一个元素左外边与包含块的左边相接触, 即使存在浮动也是如此,除非这个元素也创建了一个新的 Block Formatting Context
3) Block Formatting Context就是页面上的一个隔离的独立容器,容器里面的子元素不会在布局上影响到外面的元素,反之也是如此。
4) Block Formatting Context 的元素不能与浮动元素重叠(可用于清除浮动)
5) 当容器有足够的剩余空间容纳 BFC 的宽度时,所有浏览器都会将 BFC 放置在浮动元素所在行的剩余空间内。(可以想象成两个具有浮动元素的div,因为具有浮动元素它就是BFC)
6) 当 BFC 的宽度介于 "容器剩余宽度" 与 "容器宽度" 之间或大于 "容器宽度" 时,BFC 会显示在浮动元素的下一行(fireFox除外,它会显示在同一行,溢出状态)
BFC的作用:
1)不和浮动元素重叠(一个浮动元素后面跟着一个非浮动元素的现象)
2)清除浮动
3)margin塌陷