Web前端工程师应该懂的的知识点——HTML/CSS

优雅升级 vs 渐进加强

优雅升级:先知足全部功能,再想尽办法去兼容全部浏览器。
渐进加强:先知足基本功能,保证网页的可访问性,注重标签的语言化;而后再为高级浏览器和高带宽用户提供高级功能与效果。css

doctype是神马

<!doctype>不是HTML标签,是用来告诉浏览器用怎样的规范去解析当前文档。
HTML4.01的<!doctype>中指向一个DTD(Document Type Definition),而HTM5中不须要,是由于HTMTL5不是基于SGML(Standard Generalized Markup Language) 标准通用标记语言。
HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。浏览器

img标签的title和alt有什么区别

title:是globale attributes之一,当鼠标划上去时显示的内容;
alt:是img的特有属性,是图片的等价内容描述,有三重意思:
1.当图片没法加载时就显示alt的内容;
2.屏幕阅读器“阅读”图片时,读的就是这个alt值;
3.对搜索引擎友好。布局

display: none VS visibility: hidden

1.display:none; 不占空间;visibility:hidden;占空间;
2.visibility:hidden;是继承的,因此如何子孙节点修改visibility:visible
;能够显示;但display:none;不能够。
3.修改display属性会致使整个文档重排,但修改visibility属性只会致使元素重绘。
4.读屏器不会读display:none的元素,但会读visibility:hidden的元素。测试

display: block; VS display: inline;

block:
1.在常规流中,若是没有设置width,会填充满父容器;
2.margin,padding有效;
3.忽略vertical-align;
inline:
1.在水平方向,根据direction依次布局;
2.margin和padding在垂直方向无效,水平方向有效;
3.浮动或绝对定位时会转换成block;
4.vertical-align属性生效;动画

什么是FOUC?如何避免

FOUC:Flash Of Unstyled Content。意识是先显示了无样式的文档内容,后又加载了样式文件,致使从新渲染,出现闪烁的现象。
解决方法:1.样式文件放在文档的head标签中;2.尽量避免用@import来引入css文件,由于这样会无法同步加载样式文件,可能致使FOUC现象。搜索引擎

解释下浮动和它的工做原理?清除浮动的技巧

浮动元素脱离文档流,不占据空间,浮动元素碰到包含它的边框或者浮动元素的边框才停留。
清除方法:
1.使用空标签清除浮动:在全部浮动标签后面加一个空标签,定义样式clear:both;弊端就是增长了无心义的标签。
2.使用after伪对象清除浮动,注意要设置height:0;不然该元素会比实际多出若干像素。
3.使用oveflow:给包含浮动元素的父元素增长样式:overfow:auto;zoom:1;(兼容IE6)。spa

CSS3中的transition是什么意思

transition:过渡。
意思是容许CSS的属性在必定时间内平滑地过渡。
语法:transition:[<'transition-property'>||<'transition-duration'>||<'transition-timing-function'>||<'transition-delay'>,~~]
transition-property: none|all|color|width|...
transition-duration: 持续时间
transition-timing-function: linear(匀速)|ease(逐渐慢)|ease-in(加速)|ease-out(减速)|ease-in-out(先加速后减速)|cubic-bezier(x1,y1,x2,y2)这里的两对坐标实际上是贝塞尔曲线的那两个杠杆点。
transition-delay: 动画的延迟执行事件3d

CSS3中的transform是什么意思

transform:改变。
意思是:让元素执行什么变化,如旋转/缩放/移动/倾斜等orm

none 定义不进行转换。
matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate(x,y) 定义 2D 转换。
translate3d(x,y,z) 定义 3D 转换。
translateX(x) 定义转换,只是用 X 轴的值。
translateY(y) 定义转换,只是用 Y 轴的值。
translateZ(z) 定义 3D 转换,只是用 Z 轴的值。
scale(x[,y]?) 定义 2D 缩放转换。
scale3d(x,y,z) 定义 3D 缩放转换。
scaleX(x) 经过设置 X 轴的值来定义缩放转换。
scaleY(y) 经过设置 Y 轴的值来定义缩放转换。
scaleZ(z) 经过设置 Z 轴的值来定义 3D 缩放转换。
rotate(angle) 定义 2D 旋转,在参数中规定角度。
rotate3d(x,y,z,angle) 定义 3D 旋转。
rotateX(angle) 定义沿着 X 轴的 3D 旋转。 测试
rotateY(angle) 定义沿着 Y 轴的 3D 旋转。
rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。
skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。
skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。
skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。
perspective(n) 为 3D 转换元素定义透视视图。对象

比较有意思的是matrix这个属性,基本上其余属性的效果都能经过这个matrix实现。

CSS中的伪类与伪元素

伪类:
clipboard.png

伪元素:
clipboard.png