#1.1H5新增特性和css3新增特性?
答:1.先html5为了更好的实践web语义化,增加了header,footer,nav,aside,section等语义化标签,
2.在表单,为了增强表单,为input增加了color,email,data,range等类型,3.在存储,提供了sessionStorage,localStorage,和离线存储,通过这些存储式便数据在客户端的存储和获取,
4.在多媒体规定了频和视频元素audio和vedio,另外还有地理定位,canvas画布,拖放,多线程编程的webworker和websocket协议5.css3新增特性:CSS3边框如border-radius,box-shadow等;CSS3背景如background-size,background-origin等;CSS32D,3D转换如transform等;CSS3动画如animation等
1.2BFC的理解
答:1.BFC(BlockFormattingContext),即块级格式化上下,它是中的块渲染区域,并且有套属于的渲染规则:
-内部的盒会在垂直向上个接个地放置
-对于同个BFC的俩个相邻的盒的margin会发重叠,与向关。
-每个元素的左外边距与包含块的左边界相接触(从左到右),即使浮动元素也是如此
-BFC的区域不会与float的元素区域重叠-计算BFC的度时,浮动元素也参与计算
-BFC就是上的个隔离的独容器,容器的元素不会影响到外的元素,反之亦然BFC的是形成个相对于外界完全独的空间,让内部的元素不会影响到外部的元素
2.触发BFC的条件包含不限于:-根元素,即HTML元素-浮动元素:float值为left、right-overflow值不为visible,为auto、scroll、hidden-display的值为inline-block、inltable-cell、table-caption、table、inlinetable、flex、inline-flex、grid、inline-grid-position的值为absolute或fixed
3.利BFC的特性,我们将`BFC`应在以下场景:
防margin重叠(塌陷)
清除内部浮动
适应多栏布局
1.4如何实现元素平垂直居中
答:居中是个常基础但是常重要的应场景,实现居中的法存在很多,可以将这些法分成两个类:
居中元素(元素)的宽已知
居中元素宽未知
实现式:
利定位+margin:auto
style
.father{width:px;
height:px;
border:1pxsolid#0a3b98;
position:relative;
}
.son{width:px;
height:40px;
background:#f0a;
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
margin:auto;}
/style
divclass="father"
divclass="son"
/div
级设置为相对定位,级绝对定位,并且四个定位属性的值都设置了0,那么这时候如果级没有设置宽,则会被拉开到和级样宽
这元素设置了宽,所以宽会按照我们的设置来显示,但是实际上级的虚拟占位已经撑满了整个级,这时候再给它个margin:auto它就可以上下左右都居中了
利定位+margin:负值
绝多数情况下,设置元素为相对定位,元素移动身50%实现平垂直居中
.father{position:relative;
width:px;
height:px;
background:skyblue;
}
.son{position:absolute;
top:50%;
left:50%;
margin-left:-50px;
margin-top:-50px;
width:px;
height:px;
background:red;
}
divclass="father"
divclass="son"
初始位置为块1的位置
当设置left、top为50%的时候,内部元素为块2的位置
设置margin为负数时,使内部元素到块3的位置,即中间位置
这种案不要求元素的度,也就是即使元素的度变化了,仍然可以保持在元素的垂直居中位置,平向上是样的操作
但是该案需要知道元素身的宽,但是我们可以通过下transform属性进移动
利定位+transform
style
.father{
width:px;
height:px;
background:skyblue;
}
.son{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
width:px;
height:px;
}
translate(-50%,-50%)将会将元素位移宽度和度的-50%这种法其实和最上被否定掉的margin负值法样,可以说是margin负值的替代案,并不需要知道身元素的宽
table布局
设置元素为display:table-cell,元素设置display:inline-block。利vertical和text-align可以让所有的内块级元素平垂直居中
.father{display:table-cell;width:px;height:px;background:skyblue;vertical-align:middle;text-align:center;}.son{display:inline-block;
width:px;height:px;background:red;}/styledivclass="father"divclass="son"/div/div
flex弹性布局
.father{display:flex;
justify-content:center;
align-items:center;
width:px;
height:px;
background:skyblue
;}
.son{
width:px;
height:px;
css3中了flex布局,可以常简单实现垂直平居中
这可以简单看看flex布局的关键属性作:
display:flex时,表示该容器内部的元素将按照flex进布局
align-items:center表示这些元素将相对于本容器平居中
justify-content:center也是同样的道理垂直居中
grid格布局
.father{
display:grid;
align-items:center;
justify-content:center;height:px;
}
.son{width:10px;height:10px;border:1pxsolidred}
divclass="father"divclass="son"/div/div
这看到,gird格布局和flex弹性布局都简单粗暴
结
上述法中,不知道元素宽仍能实现平垂直居中的法有:
flex布局
grid布局
1.7说说em/px/rem/vh/vw区别?
答:em/px/rem/vh/vw区别如下:
px:绝对单位,按精确像素展示
em:相对单位,基准点为节点字体的,如果身定义了font-size按身来计算,整个内1em不是个固定的值
rem:相对单位,可理解为rootem,相对根节点html的字体来计算
vh、vw:主要于视布局,在布局上更加便简单