1.声明位于文档中的最前面,处于 标签之前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档。
2.严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行。
3.在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
4.DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。
2.
第二章 面试题基础篇
2.1 HTML面试题
面试题:行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
面试题:页面导入样式时,使用link和@import有什么区别?
面试题:title与h1的区别、b与strong的区别、i与em的区别?
面试题:img标签的title和alt有什么区别?
面试题:png、jpg、gif 这些图片格式解释一下,分别什么时候用?
2.2 CSS面试题
面试题:css背景纹路
面试题:介绍一下CSS的盒子模型
面试题:CSS选择符有哪些?哪些属性可以继承?
面试题:CSS优先级算法如何计算?
面试题:用CSS画一个三角形
面试题:一个盒子不给宽度和高度如何水平垂直居中?
面试题:display有哪些值?说明他们的作用。
面试题:对BFC规范(块级格式化上下文:block formatting context)的理解?
面试题:清除浮动有哪些方式?
面试题:在网页中的应该使用奇数还是偶数的字体?为什么呢?
面试题:写一个左中右布局占满屏幕,其中左、右俩块固定宽200,中间自适应宽,要求先加载中间块,请写出结构及样式。
面试题:什么是CSS reset?
面试题:css sprite是什么,有什么优缺点
面试题:display: none与visibility: hidden的区别
面试题:position有哪些值?有什么作用? 【特别多公司问】
面试题:line-height和height有什么区别?
面试题:opacity 和 rgba区别
2.3 JavaScript基础面试题
面试题:延迟加载JS有哪些方式?
面试题:JS数据类型有哪些?
面试题:null和undefined的区别
面试题:JS数据类型考题
面试题:==和===有什么不同
面试题:JS微任务和宏任务
面试题:JS作用域考题
面试题:JS对象考题
面试题:JS作用域+this指向+原型 考题
面试题:JS判断变量是不是数组,你能写出哪些方法?
面试题:slice是干嘛的、splice是否会改变原数组
面试题:JS数组去重
面试题:找出多维数组最大值
面试题:给字符串新增方法实现功能
面试题:找出字符串出现最多次数的字符以及次数
2.4 真正移动端 —— H5/C3面试题
面试题:什么是语义化标签
面试题:::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用。
面试题:如何关闭iOS键盘首字母自动大写
面试题:怎么让Chrome支持小于12px 的文字?
面试题:rem和em有什么样区别
面试题:ios系统中元素被触摸时产生的半透明灰色遮罩怎么去掉
面试题:webkit表单输入框placeholder的颜色值能改变吗?
面试题:禁止ios 长按时不触发系统的菜单,禁止ios&android长按时下载图片
面试题:禁止ios和android用户选中文字
面试题:自适应 [淘宝无线适配]
面试题:响应式
第三章 面试题进阶篇
3.1 JavaScript进阶面试题
面试题:new操作符具体做了什么
面试题:闭包 【必须会】
面试题:原型链 【必须会】
面试题: JS继承有哪些方式
面试题:说一下call、apply、bind区别
面试题:sort背后原理是什么?
面试题:深拷贝和浅拷贝
面试题:localstorage、sessionstorage、cookie的区别
3.2 ES6面试题
面试题:var、let、const区别
面试题:作用域考题
面试题:将下列对象进行合并
面试题:箭头函数和普通函数有什么区别?
面试题:Promise有几种状态
面试题:find和filter的区别 【大厂】
面试题:some和every的区别 【大厂】
3.3 webpack面试题
面试题:webpack插件
3.4 Git面试题
面试题:git常用命令
面试题:解决冲突
面试题:GitFlow
第四章 面试题框架篇
4.1 区分初中高级的 —— Vue面试题
面试题:Vue2.x 生命周期有哪些?
1.系统自带八个
2.当一旦进入到某个组件会执行哪些生命周期
3.$el和$data在哪个阶段有
4.如果使用keep-alive会多俩个生命周期
5.如果加入keep-alive第一次进入组件会执行哪些生命周期
6.如果加入keep-alive第二次或者第N进入该组件会执行哪些生命周期
面试题:谈谈你对keep-alive的了解
面试题:v-if和v-show区别
面试题:v-if和v-for优先级 2.x
面试题:ref是什么?
面试题:nextTick是什么?
面试题:Vue中如何做样式穿透
面试题:scoped原理
面试题:Vuex是单向数据流还是双向数据流?
面试题:讲一下MVVM
面试题:双向绑定原理
面试题:什么是虚拟DOM
面试题:key是干什么?
面试题:diff算法
面试题:Vue组件传值
面试题:props和data优先级谁高?
面试题:computed、methods、watch有什么区别?
面试题:Vuex
面试题:Vue路由
面试题:Vue项目打包后出现空白页
4.2 微信小程序面试题
面试题:如何自定义头部?
面试题:如何自定义底部?
4.3 uni-app面试题
面试题:生命周期
面试题:条件编译
第五章 面试题性能优化篇
CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。可以用简单的方式满足很多常见的复杂的布局需求。它的优势在于开发人员只是声明布局应该具有的行为,而不需要给出具体的实现方式。浏览器会负责完成实际的布局。该布局模型在主流浏览器中都得到了支持。
采用flex布局的元素,成为flex容器。它的所有子元素自动成为容器成员,称为flex项目。常用的,设置到容器上的属性有:
设置到项目上的属性:
(Block Formatting Context)块级格式化上下文。BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之也如此.并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。
上述方法都可以创建BFC,但是会带来一些负面影响:
::before是css3的写法,:before是css2的写法,用来设置对象前的内容
:before的兼容性要比::before好
更准确的说法
1、transition 是过渡,是样式值的变化的过程,只有开始和结束;animation 其实也叫关键帧,通过和 keyframe 结合可以设置中间帧的一个状态;
2、animation 配合 @keyframe 可以不触发时间就触发这个过程,而 transition 需要通过 hover 或者 js 事件来配合触发;
3、animation 可以设置很多的属性,比如循环次数,动画结束的状态等等,transition 只能触发一次;
4、animation 可以结合 keyframe 设置每一帧,但是 transition 只有两帧;
常规方法
不需要使用transform属性时
webkit内核
参考链接:
CSS实现不换行/自动换行/文本超出隐藏显示省略号
object-fit CSS 属性指定可替换元素的内容应该如何适应到其使用的高度和宽度确定的框。这个CSS属性可以达到最佳最完美的居中自动剪裁图片的功能
@import规则一定要先于除了@charset的其他任何CSS规则。
不推荐使用@import:
因为浏览器的兼容的问题,不同浏览器有些标签的默认值是不同的,如果没有CSS初始化往往会出现浏览器之间的页面显示差异。
伪元素和伪类的区别总结
css继承指的是被包在内部的标签将拥有外部标签的样式性,即子元素可以继承父元素的属性。
相关链接:
CSS 继承,哪些属性能继承,哪些不能
z-index可以改变元素层叠顺序,z-index较大的会叠加在z-index较小的元素上方。z-index值相同时,则按照文档流顺序,后面的覆盖前边的。
px就是pixel的缩写,意为像素。px就是一张图片最小的一个点,一张位图就是千千万万的这样的点构成的,比如常常听到的电脑像素是1024x768的,表示的是水平方向是1024个像素点,垂直方向是768个像素点。注意css中的1px并不一定是物理像素的一个像素块,需要根据DPR计算,对应多少物理像素块
设备像素比:dpr = 物理像素 / 逻辑像素(px),例如,iPhone6的dpr为2,物理像素750(x轴),则它的逻辑像素为375
参考物是父元素的font-size,具有继承的特点。如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。
css3新单位,相对于根元素html(网页)的font-size,不会像em那样,依赖于父元素的字体大小,而造成混乱。
css3新单位,viewpoint width的缩写,视窗宽度,1vw等于视窗宽度的1%。举个例子:浏览器宽度1200px, 1 vw = 1200px/100 = 12 px。
1英寸(inch)=2.54厘米(cm)
手机对角线的长度换算成英寸
屏幕横向和纵向的像素点
1px即代表一个物理像素点/像素块
PPI,是每英寸可以显示的像素点的英文缩写。如果说上面分辨率是一个质量总量的概念,那么,ppi就是密度的概念。我们可以通过屏幕的像素总量除以屏幕大小来计算屏幕的PPI,公式如下: a:横向像素数量,b:纵向像素数量,c:屏幕尺寸(英寸)
1px与多少厘米之间是不能直接划等号的,需要看分辨率。
一般电脑的像素分辨率是72ppi,计算公式: (((1**2 + 1**2)**0.5)/72)*2.54 ,此时1px=0.0498cm,1cm=25px;
很多手机是300ppi,计算公式: (((1**2 + 1**2)**0.5)/300)*2.54 ,此时1px=0.0119cm。
参考链接:
画一条0.5px的线
在继承性上:
一开始针对低版本的浏览器构建页面,满足最基本的功能,再针对高级浏 览器进行效果,交互,追加各种功能以达到更好用户体验,换句话说,就是以最低要求,实现最基础功能为基本,向上兼容。以css为例,以下这种写法就是渐进增强。
一开始针对一个高版本的浏览器构建页面,先完善所有的功能。然后针对各个不同的浏览器进行测试,修复,保证低级浏览器也有基本功能 就好,低级浏览器被认为“简陋却无妨 (poor, but passable)” 可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较 大的错误之外,其它的差异将被直接忽略。也就是以高要求,高版本为基准,向下兼容。同样以css为例,优雅降级的写法如下。
渐进增强,开发时间长,成本高,优雅降级,节约成本,开发周期短。