面试指南
HTML
html5语义化
- 为什么需要语义化
- 易修改、易维护
- 无障碍阅读支持
- 搜索引擎友好,利于 SEO
- 面向未来的 HTML,浏览器在未来可能提供更丰富的支持
- 结构语义化
- 语义元素均有一个共同特点——他们均不做任何事情。换句话说,语义元素仅仅是页面结构的规范化,并不会对内容有本质的影响
- eg:
- 标准盒模型与低版本IE盒模型
- 标准盒模型 宽度 = 内容的宽度(content)+ border+ padding + margin
- 低版本IE盒模型 宽度 = 内容的宽度(content+ border+ padding)+ margin
- box-sizing属性
- 用来控制元素的盒子模型的解析模式,默认为content-box
- context-box:W3C的标准盒子模型,设置元素的 height/width 属性指的是content部分的高/宽
- border-box:IE传统盒子模型。设置元素的height/width属性指的是border + padding + content部分的高/宽
- CSS选择器有哪些?哪些属性可以继承?
- CSS选择符:id选择器(#myid)、类选择器(.myclassname)、标签选择器(div, h1, p)、相邻选择器(h1 + p)、子选择器(ul > li)、后代选择器(li a)、通配符选择器(*)、属性选择器(a[rel=”external”])、伪类选择器(a:hover, li:nth-child)
- 可继承的属性:font-size, font-family, color
- 不可继承的样式:border, padding, margin, width, height
- 优先级(就近原则):!important > [ id > class > tag ]
- !important 比内联优先级高
CSS优先级算法如何计算?
- 元素选择符: 1
- class选择符: 10
- id选择符:100
- 元素标签:1000
- !important声明的样式优先级最高,如果冲突再进行计算
- 如果优先级相同,则选择最后出现的样式
- 继承得到的样式的优先级最低
CSS3新增伪类有那些?
- p:first-of-type 选择属于其父元素的首个元素
- p:last-of-type 选择属于其父元素的最后元素
- p:only-of-type 选择属于其父元素唯一的元素
- p:only-child 选择属于其父元素的唯一子元素
- p:nth-child(2) 选择属于其父元素的第二个子元素
- :enabled :disabled 表单控件的禁用状态
- :checked 单选框或复选框被选中
如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?(更优方法flexbox)
1
2
3
4border: 1px solid red;
margin: 0 auto;
height: 50px;
width: 80px;
1 | border: 1px solid red; |
1 | border: 1px solid black; |
display有哪些值?说明他们的作用?
- inline(默认)–内联
- none–隐藏
- block–块显示
- table–表格显示
- list-item–项目列表
- inline-block
- flex grid
position的值?
- static(默认):按照正常文档流进行排列;
- relative(相对定位):不脱离文档流,参考自身静态位置通过 top, bottom, left, right 定位;
- absolute(绝对定位):参考距其最近一个不为static的父级元素通过top, bottom, left, right 定位;
- fixed(固定定位):所固定的参照对像是可视窗口。
more…
JS
js常见面试题
浅拷贝和深拷贝的区别
浅拷贝:一般指的是把对象的第一层拷贝到一个新对象上去,比如
1
2
3
4let a = { count: 1, deep: { count: 2 } };
let b = Object.assign({}, a);
// 或者
let b = {...a};深拷贝:一般需要借助递归实现,如果对象的值还是个对象,要进一步的深入拷贝,完全替换掉每一个复杂类型的引用。
1
2
3
4
5
6
7
8let deepCopy = (obj) => {
let ret = {};
for (let key in obj) {
let value = obj[key];
ret[key] = typeof value === 'object' ? deepCopy(value) : value;
}
return ret;
}