CSS3 box-sizing的作用
设置CSS盒模型为标准模型或IE模型。标准模型的宽度只包括content,二IE模型包括border和padding
box-sizing属性可以为三个值之一:
content-box,默认值,border和padding不计算入width之内
padding-box,padding计算入width内
border-box,border和padding计算入width之内
介绍一下sass
定义变量 css嵌套 允许在代码中使用算式 支持if判断for循环
说说content-box和border-box,为什么看起来content-box更合理,但是还是经常使用border-box
content-box 是W3C的标准盒模型 元素宽度=内容宽度+padding+border
border-box 是ie的怪异盒模型 他的元素宽度等于内容宽度 内容宽度包含了padding和border
比如有时候在元素基础上添加内距padding或border会将布局撑破 但是使用border-box就可以轻松完成
display:none和visibility:hidden的区别?
display:none 隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,
就当他从来不存在。
visibility:hidden 隐藏对应的元素,但是在文档布局中仍保留原来的空间。
垂直居中有几种实现方式,分别是什么
单行行内元素 1.可以设置padding-top,padding-bottom 2.将height和line-height设为相等
多行行内元素 1.可以将元素转为table样式,再设置vertical-align:middle; 2.使用flex布局
块级元素
已知高度绝对定位负边距
未知高度transform: translateY(-50%);
flex布局
display: flex;
justify-content: center;
align-items: center;
如何用css实现单行文字省略和多行文字省略
清除浮动的几种方式,各自的优缺点1.使用空标签清除浮动 clear:both(理论上能清楚任何标签,,,增加无意义的标签)2.使用overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE)3.是用afert伪元素清除浮动(用于非IE浏览器)
rem和em的区别
em相对于父元素,rem相对于根元素
let和const的区别
let声明的变量可以改变,值和类型都可以改变,没有限制。
const声明的变量不得改变值
”==”和“===”的不同前者会自动转换类型后者不会
介绍一下HTML5的新特性
新的DOCTYPE声明 html>
完全支持css3
video和audio
本地存储
语义化标签
canvas
新事件 如ondrag onresize
编写一个数组去重的方法
DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
创建新节点
2. 添加、移除、替换、插入
3. 查找
JavaScript怎么清空数组?
如
var arrayList = ['a','b','c','d','e','f'];
怎么清空 arrayList
方法1
arrayList = [];
直接改变arrayList所指向的对象,原对象并不改变。
方法2
arrayList.length = 0;
这种方法通过设置length=0 使原数组清除元素。
方法3
arrayList.splice(0, arrayList.length);
和方法2相似
介绍一下你对webpack的理解,和gulp有什么不同
Webpack是模块打包工具,他会分析模块间的依赖关系,然后使用loaders处理它们,最后生成一个优化并且合并后的静态资源。
gulp是前端自动化工具 能够优化前端工作流程,比如文件合并压缩
javaScript中的this是什么,有什么用,它的指向是什么
全局代码中的this 是指向全局对象
作为对象的方法调用时指向调用这个函数的对象。
作为构造函数指向新创建的对象
使用apply和call设置this
跨域通信有哪些方案,各有什么不同
JSONP:由于同源策略的限制,XmlHttpRequest只允许请求当前源,script标签没有同源限制
通过动态元素使用,使用时为src指定一个跨域url。回调函数处理JSON数据 兼容性好 不支持post
简述原理与过程:首先在客户端注册一个callback, 然后把callback的名字传给服务器。此时,服务器先生成一个function , function 名字就是传递上来的参数。最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里
cors:通过设置Access-Control-Allow-Origin来允许跨域 cors可用ajax发请求获取数据 但是兼容性没有jsonp好
多页面通信有哪些方案,各有什么不同
localstorge在一个标签页里被添加、修改或删除时,都会触发一个storage事件,通过在另一个标签页里监听storage事件,即可得到localstorge存储的值,实现不同标签页之间的通信。
settimeout+cookie
offsetHeight, scrollHeight, clientHeight分别代表什么
clientHeight:包括内容可见部分的高度,可见的padding;不包括border,水平方向的scrollbar,margin。
offsetHeight:包括内容可见部分的高度,border,可见的padding,水平方向的scrollbar(如果存在);不包括margin。
scrollHeight:包括内容的高度(可见与不可见),padding(可见与不可见);不包括border,margin。
Vue中父子组件怎么通信的?
vue:父组件是通过props属性给子组件通信 在子组件里面emit,在父组件监听
前端性能优化有哪些方法
1.减少http请求 使用sprite图、合并js和css文件
2.使用cdn 将用户安排在近的服务器上
3.使用缓存 缓存ajax 使用外部的css和js以便缓存 使用expire cach-control etag
4.压缩资源 使用gzip压缩js和css文件
5.代码层面 避免使用样式表达式、通配符选择器、样式放在顶部、脚本放在底部
介绍一下事件模型和事件代理
事件三个阶段:事件捕获,目标,事件冒泡(低版本ie不支持捕获阶段)
w3c绑定事件target.addEventListener(event,handler,false)
解绑target.removeEventListener(eventType, handler, false)
ie绑定 target.attachEvent(on+event, handler)
解绑target.detachEvent("on"+eventType, handler)
事件代理优点:
可以大量节省内存占用,减少事件注册,比如在table上代理所有td的click事件就非常棒
可以实现当新增子对象时无需再次对其绑定事件,对于动态内容部分尤为合适
简单说一下浏览器本地存储是怎样的
在较高版本的浏览器中,js提供了sessionStorage和globalStorage。在HTML5中提供了localStorage来取代globalStorage。
html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
http状态码有那些?分别代表是什么意思?
1. 100-199 用于指定客户端应响应的某些动作
2. 200-299 用于表示请求成功
3. 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息
4. 400-499 用于指出客户端的错误
400:语义有误,当前请求无法被服务器理解
401:当前请求需要用户验证
403:服务器已经理解请求,但是拒绝执行它
5. 500-599 用于指出服务器错误
503:服务不可用
GET和POST的区别,何时使用POST?
GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符
POST:一般用于修改服务器上的资源,对所发送的信息没有限制
GET方式需要使用 Request.QueryString 来取得变量的值
POST方式通过 Request.Form 来获取变量的值
也就是说 Get 是通过地址栏来传值,而 Post 是通过提交表单来传值。
在以下情况中,请使用 POST 请求:
1. 无法使用缓存文件(更新服务器上的文件或数据库)
2. 向服务器发送大量数据(POST 没有数据量限制)
3. 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
小程序中有哪些参数传值的方法?答:一、给HTML元素添加data-*属性来传递我们需要的值,然后通过e.currentTarget.dataset或onload的param参数获取。但data-名称不能有大写字母和不可以存放对象二、设置id 的方法标识来传值通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递数值三、在navigator中添加参数传值
谈一下JS中的递归函数,并且用递归简单实现阶乘?
//递归 程序调用自身的编程技巧称为递归 自己调用自己function factorial(num) { return ( num <= 1 ) ? 1 : num * factorial(num - 1);}console.log(factorial(8));
平时是怎么学新技术的
伯乐在线 infoq 掘金 简书 慕课网
你常用哪些js框架
本文来源:https://www.2haoxitong.net/k/doc/c15fac766ad97f192279168884868762caaebb95.html
文档为doc格式