a、方法一 <div style="width: 500px;height: 500px;margin: 0 auto;"> <div style="width:200px;height: 200px;position: absolute;top:0;bottom:0;right:0;left:0;border: 1px solid #ddd;margin:auto;">上下左右居中测试</div> </div> b、方法二 <div style="width:500px;height:500px;border:1px solid green;display:flex;justify-content:center;align-items:center;"> <div style="">上下左右居中</div> </div>
a、方法一(我本身写的) <div style="display: flex;"> <div calss="left" style="width:200px;height:200px;">left</div> <div calss="center" style="flex:1;">center</div> <div calss="right" style="width:200px;height:200px;">right</div> </div> b、方法二
css:
<style> #left,#right {width: 200px; height: 200px;background-color: #ffe6b8;position: absolute;top: 120px;} #left { left: 0px;} #right {right: 0px;} #center {margin: 2px 210px;background-color: #eee;height: 200px;} </style> html: <div id="left">left</div> <div id="center">center</div> <div id="right">right</div>
a、方法一 直接给父元素设置高度(不推荐) b、方法二 (父元素设置overflow:hidden ;必须定义width或zoom:1,同时不能定义height) <div style="overflow:hidden;*zoom:1;"> <div style="float:left">test left</div> <div style="float:right;">test right</div> </div>
c、方法三 (父元素内部末尾添加空div 设置clear:both 属性) <div> <div style="float:left;">测试test文字阐述清楚浮动</div> <div style="float:right">测试test文字阐述清楚浮动的几种方式</div> <div style="clear:both;"></div> </div>
d、方法四 (css伪类::after实现清除浮动) 注:IE8以上和非IE浏览器才支持:after,zoom(IE专有属性)可解决ie6,ie7浮动问题 css: <style> .clearfix{ zoom: 1; } .clearfix::after{ content:"020"; height:0; display:block; visibility: hidden; clear: both; } </style> html: <div class="clearfix"> <div style="float:left;">left元素</div> <div style="float:right;">right 元素</div> </div>
CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position能够用数字能精确的定位出背景图片的位置。
CSS Sprites为一些大型的网站节约了带宽,让提升了用户的加载速度和用户体验,不须要加载更多的图片
html: <div id="btnClick">test 123</div> script: <script> var btn = document.getElementById("btnClick"); btn.addEventListener("click", myFun1); btn.addEventListener("click", myFun2); function myFun1() { alert("第一次"); } function myFun2() { alert("第二次"); } </script>
大体有:基本选择器、层次选择器、过滤选择器、表单选择器,下面作详细介绍:javascript
1、基本选择器
基本选择器是jQuery中最经常使用也是最简单的选择器,它经过元素的id、class和标签名等来查找DOM元素。
一、ID选择器 #id
描述:根据给定的id匹配一个元素, 返回单个元素(注:在网页中,id名称不能重复)
示例:$("#test") 选取 id 为 test 的元素
二、类选择器 .class
描述:根据给定的类名匹配元素,返回元素集合
示例:$(".test") 选取全部class为test的元素
三、元素选择器 element
描述:根据给定的元素名匹配元素,返回元素集合
示例:$("p") 选取全部的<p>元素
四、*
描述:匹配全部元素,返回元素集合
示例:$("*") 选取全部的元素
五、selector1,selector2,...,selectorN
描述:将每一个选择器匹配到的元素合并后一块儿返回,返回合并后的元素集合
示例:$("p,span,p.myClass") 选取全部<p>,<span>和class为myClass的<p>标签的元素集合
七、Javascript中的定时器有哪些?他们的区别及用法是什么?css
定时器:setTimeOut()和setInterval()html
区别:前端
var time=setTimeout(function(){ // do sth },500) setTimeout 只执行一次 ,须要用clearTimeout(time)终止 var timeSet=setInterval(function(){ //do sth },1000) setInterval 重复执行,一直到用clearTimeout(timeSet)终止
八、描述一下 cookies sessionStorage和localstorage区别vue
相同点:都存储在客户端
不一样点:
1.存储大小
2.有效时间
localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
sessionStorage 数据在当前浏览器窗口关闭后自动删除。
cookie
设置的cookie过时时间以前一直有效,即便窗口或浏览器关闭
3. 数据与服务器之间的交互方式
cookie的数据会自动的传递到服务器,服务器端也能够写cookie到客户端
sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
8.1.1 如何实现浏览器内多个标签页之间的通讯?html5
调用localstorge、cookies等本地存储方式
8.1.2 请你谈谈Cookie的弊端java
cookie
1.IE6或更低版本最多20个cookie
2.IE7和以后的版本最后能够有50个cookie。
3.Firefox最多50个cookie
4.chrome和Safari没有作硬性限制
Opera 会清理近期最少使用的Firefox会随机清理 4096字节,为了兼容性,通常不能超过 IE 提供了一种存储能够持久化用户数据,叫作IE5.0就开始支持。每一个数据最多128K,每一个域名下最多1M。这个持久化数据放在缓存中,若是缓存没有清理,那么会一直存在。
优势:极高的扩展性和可用性
1.经过良好的编程,控制保存在cookie中的session对象的大小。
2.经过加密和安全传输技术(SSL),减小cookie被破解的可能性。
3.只在cookie中存放不敏感数据,即便被盗也不会有重大损失。
4.控制cookie的生命期,使之不会永远有效。偷盗者极可能拿到一个过时的cookie。
缺点:
1.`Cookie`数量和长度的限制。每一个domain最多只能有20条cookie,每一个cookie长度不能超过4KB,不然会被截掉。
2.安全性问题。若是cookie被人拦截了,那人就能够取得全部的session信息。即便加密也与事无补,由于拦截者并不须要知道cookie的意义,他只要原样转发cookie就能够达到目的了。
3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,咱们须要在服务器端保存一个计数器。若是咱们把这个计数器保存在客户端,那么它起不到任何做用。
8.1.3 浏览器本地存储react
在较高版本的浏览器中,sessionStorage和HTML5中提供了globalStorage。
Web Storage包括了两种存储方式:localStorage。
sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
九、计算一个数组arr全部元素的和jquery
方法一:
var arr=[1,2,3,4,5,6,7,8,9]; var totalNum=0; for(var i=0;i<arr.length;i++){ if (typeof arr[i]=="number") { totalNum+=arr[i] } }// console.log(totalNum)
方法二:
function sumNum(arr){
var totalNum=0;
for(var i=0;i<arr.length;i++){
if (typeof arr[i]=="number") {
totalNum+=arr[i]
}
}
return totalNum;
}//console.log(sumNum(arr))
十、编写一个方法去掉数组里面重复的内容 var arr=[1,2,3,4,5,1,2,3]webpack
方法一: var arr2=[1,2,3,4,5,1,2,3] var arrNew=[]; for(var i=0;i<arr2.length;i++){ if(arrNew.indexOf(arr2[i])==-1){ arrNew.push(arr2[i]) } } //console.log(arrNew) 定义新的数组去接收 方法二: 双层循环,外层循环元素,内层循环时比较值 若是有相同的值则跳过,不相同则push进数组 var arr = [1,2,3,4,4,1,1,2,1,1,1]; Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(arr[i]); } return result; }//console.log(arr.distinct())
十一、document.write和innerHTML的区别
document.write是直接写入到页面的内容流,若是在写以前没有调用document.open, 浏览器会自动调用open。每次写完关闭以后从新调用该函数,会致使页面被重写。
innerHTML则是DOM页面元素的一个属性,表明该元素的html内容。你能够精确到某一个具体的元素来进行更改。若是想修改document的内容,则须要修改document.documentElement.innerElement。
innerHTML将内容写入某个DOM节点,不会致使页面所有重绘
十二、box-sizing经常使用的属性有哪些?分别有什么做用?
属性
box-sizing:content-box | box-sizing:border-box、 | box-sizing:inherit
content-box
宽度和高度分别应用到元素的内容框。在宽度和高度以外绘制元素的内边距和边框(元素默认效果)。
在CSS中定义的宽度和高度就对应到元素的内容框
border-box
元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。经过从已设定的宽度和高度分别减去边框和内边距才能获得内容的宽度和高度。
通俗解释
content-box 是W3C的标准盒模型 元素宽度=内容宽度+padding+border
border-box 是ie的怪异盒模型 他的元素宽度等于内容宽度 内容宽度包含了padding和border
好比有时候在元素基础上添加内距padding或border会将布局撑破 可是使用border-box就能够轻松完成
1三、css选择器有哪些,选择器的权重的优先级
选择器类型
1.标签选择器(如:body,div,p,ul,li)
2.类选择器(如:class="head",class="head_logo")
3.ID选择器(如:id="name",id="name_txt")
4.全局选择器(如:*号)
5.组合选择器(如:.head .head_logo,注意两选择器用空格键分开)
6.后代选择器 (如:#head .nav ul li 从父集到子孙集的选择器)
7.群组选择器 div,span,img {color:Red} 即具备相一样式的标签分组显示
8.继承选择器(如:div p,注意两选择器用空格键分开)
9.伪类选择器(如:就是连接样式,a元素的伪类,4种不一样的状态:link、visited、active、hover。)
10.字符串匹配的属性选择符(^ $ *三种,分别对应开始、结尾、包含)
11.子选择器 (如:div>p ,带大于号>)
12.CSS 相邻兄弟选择器器 (如:h1+p,带加号+)
优先级
一、优先级相同时,则采用就近原则,选择最后出现的样式;
二、继承得来的属性,其优先级最低;
!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
1四、js有几种数据类型,其中基本数据类型有哪些
五种基本类型: Undefined、Null、Boolean、Number和String。
1中复杂的数据类型————Object,Object本质上是由一组无序的名值对组成的。
Object、Array和Function则属于引用类型
1五、undefined 和 null 区别
null: Null类型,表明“空值”,表明一个空对象指针,使用typeof运算获得 “object”,因此你能够认为它是一个特殊的对象值。
undefined: Undefined类型,当一个声明了一个变量未初始化时,获得的就是undefined。
null是javascript的关键字,能够认为是对象类型,它是一个空对象指针,和其它语言同样都是表明“空值”,不过 undefined 倒是javascript才有的。
undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预约义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。
1六、如何进行网站性能优化
页面级优化
1. JavaScript 压缩和模块打包
2. 按需加载资源
3. 在使用 DOM 操做库时用上 array-ids
4. 缓存
5. 启用 HTTP/2
6. 应用性能分析
7. 使用负载均衡方案
8. 为了更快的启动时间考虑一下同构
9. 使用索引加速数据库查询
10. 使用更快的转译方案
11. 避免或最小化 JavaScript 和 CSS 的使用而阻塞渲染
12. 用于将来的一个建议:使用 service workers + 流
13. 图片编码优化
1七、什么是mvvm mvc是什么区别 原理
1、MVC(Model-View-Controller)
MVC是比较直观的架构模式,用户操做->View(负责接收用户的输入操做)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。
MVC使用很是普遍,好比JavaEE中的SSH框架
3、MVVM(Model-View-ViewModel)
若是说MVP是对MVC的进一步改进,那么MVVM则是思想的彻底变革。它是将“数据模型数据双向绑定”的思想做为核心,所以在View和Model之间没有联系,经过ViewModel进行交互,
并且Model和ViewModel之间的交互是双向的,所以视图的数据的变化会同时修改数据源,而数据源数据的变化也会当即反应view。
1八、px和em rem的区别
px实际上就是像素,用PX设置字体大小时,比较稳定和精确。可是px不支持用户进行浏览器缩放或者不一样移动端的兼容,由于像素是固定的,屏幕大小是变化的。由此引入了em和rem。
em是根据父元素来对应大小,是一种相对值,并非绝对值,em值 = 1/父元素的font-size*须要转换的像素值。进行任何元素设置,都有可能须要知道他父元素的大小,这很不方便因此又有了rem。
rem是根据根元素html的font-size来对应大小,1rem = 100px,能够在根元素html中写固定像素也能够写百分比,而后在具体的标签上设置rem
1九、优雅降级和渐进加强
渐进加强(Progressive Enhancement):一开始就针对低版本浏览器进行构建页面,完成基本的功能,而后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。
优雅降级(Graceful Degradation):一开始就构建站点的完整功能,而后针对浏览器测试和修复。好比一开始使用 CSS3 的特性构建了一个应用,而后逐步针对各大浏览器进行 hack 使其能够在低版本浏览器上正常浏览
20、html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
* HTML5 如今已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增长。 * 拖拽释放(Drag and drop) API 语义化更好的内容标签(header,nav,footer,aside,article,section) 音频、视频API(audio,video) 画布(Canvas) API 地理(Geolocation) API 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失; sessionStorage 的数据在浏览器关闭后自动删除 表单控件,calendar、date、time、email、url、search 新的技术webworker, websocket, Geolocation * 移除的元素 纯表现的元素:basefont,big,center,font, s,strike,tt,u; 对可用性产生负面影响的元素:frame,frameset,noframes; 支持HTML5新标签: * IE8/IE7/IE6支持经过document.createElement方法产生的标签, 能够利用这一特性让这些浏览器支持HTML5新标签, 浏览器支持新标签后,还须要添加标签默认的样式: * 固然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架 <!--[if lt IE 9]> <script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script> <![endif]-->
如何区分: DOCTYPE声明\新增的结构元素\功能元素
新特性:
新的DOCTYPE声明 <!DOCTYPE html>
彻底支持css3
video和audio
本地存储
语义化标签
canvas 新事件 如ondrag onresize
2一、在一个ul里有10个li,实现点击对应的li,输出对应的下标
var lis = document.querySelectorAll('li'); for(var i=0;i<lis.length;i++){ lis[i].onclick = (function(a) { return function() { alert(a) } })(i) }//(如如有不理解 请自行查阅javascript 当即执行函数相关知识)
2二、http 和 https 有何区别?如何灵活使用?
http是HTTP协议运行在TCP之上。全部传输的内容都是明文,客户端和服务器端都没法验证对方的身份。
https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。全部传输的内容都通过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端能够验证服务器端的身份,若是配置了客户端验证,服务器方也能够验证客户端的身份
2三、常见的HTTP状态码
2开头 (请求成功)表示成功处理了请求的状态代码。
200 (成功) 服务器已成功处理了请求。 一般,这表示服务器提供了请求的网页。
3开头 (请求被重定向)表示要完成请求,须要进一步操做。 一般,这些状态代码用来重定向。
4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
400 (错误请求) 服务器不理解请求的语法。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
405 (方法禁用) 禁用请求中指定的方法。
5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误多是服务器自己的错误,而不是请求出错。
500 (服务器内部错误) 服务器遇到错误,没法完成请求。
502 (错误网关) 服务器做为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前没法使用(因为超载或停机维护)。 一般,这只是暂时状态。
504 (网关超时) 服务器做为网关或代理,可是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
2四、react和vue有哪些不一样,说说你对这两个框架的见解
相同点
· 都支持服务器端渲染
· 都有Virtual DOM,组件化开发,经过props参数进行父子组件数据的传递,都实现webComponent规范
· 数据驱动视图
· 都有支持native的方案,React的React native,Vue的weex
不一样点
· React严格上只针对MVC的view层,Vue则是MVVM模式
· virtual DOM不同,vue会跟踪每个组件的依赖关系,不须要从新渲染整个组件树.而对于React而言,每当应用的状态被改变时,所有组件都会从新渲染,因此react中会须要shouldComponentUpdate这个生命周期函数方法来进行控制
· 组件写法不同, React推荐的作法是 JSX + inline style, 也就是把HTML和CSS全都写进JavaScript了,即'all in js'; Vue推荐的作法是webpack+vue-loader的单文件组件格式,即html,css,jd写在同一个文件;
· 数据绑定: vue实现了数据的双向绑定,react数据流动是单向的
· state对象在react应用中不可变的,须要使用setState方法更新状态;在vue中,state对象不是必须的,数据由data属性在vue对象中管理
2五、Vue双向数据绑定的实现
vue.js 则是采用数据劫持结合发布者-订阅者模式的方式,经过Object.defineProperty()来劫持各个属性的setter,getter,在数据变更时发布消息给订阅者(文本节点则是做为订阅者),在收到消息后执行相应的更新操做。
compile主要作的事情是解析模板指令,将模板中的变量替换成数据,而后初始化渲染页面视图,并将每一个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变更,收到通知,更新视图
MVVM做为数据绑定的入口,整合Observer、Compile和Watcher三者,经过Observer来监听本身的model数据变化,经过Compile来解析编译模板指令,最终利用Watcher搭起Observer和Compile之间的通讯桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据model变动的双向绑定效果。
AngularJS 采用“脏值检测”的方式,数据发生变动后,对于全部的数据和视图的绑定关系进行一次检测,识别是否有数据发生了改变。
2六、什么是Vue的生命周期
Vue 实例从建立到销毁的过程,就是生命周期。也就是从开始建立、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,咱们称这是 Vue 的生命周期。
理解:
总共分为8个阶段建立前/后,载入前/后,更新前/后,销毁前/后。
建立前/后: 在beforeCreated阶段,vue实例的挂载元素$el和数据对象data都为undefined,还未初始化。在created阶段,vue实例的数据对象data有了,$el尚未。
载入前/后:在beforeMount阶段,vue实例的$el和data都初始化了,但仍是挂载以前为虚拟的dom节点,data.message还未替换。在mounted阶段,vue实例挂载完成,data.message成功渲染。
更新前/后:当data变化时,会触发beforeUpdate和updated方法。
销毁前/后:在执行destroy方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,可是dom结构依然存在
2七、eval()的做用
把字符串参数解析成JS代码并运行,并返回执行的结果;
eval("2+3");//执行加运算,并返回运算值。
eval("varage=10");//声明一个age变量
eval的做用域
function a(){
eval("var x=1"); //等效于 var x=1;
console.log(x); //输出1
}
a();
console.log(x);// x is not defined
2八、JS那些操做能形成内存泄漏(参阅地址:https://blog.csdn.net/michael8512/article/details/77888000 || https://blog.csdn.net/li2274221/article/details/25217297)
一、意外的全局变量引发的内存泄露
function leak(){
leak="xxx";//leak成为一个全局变量,不会被回收
}
二、闭包引发的内存泄露
例: function bindEvent(){
var obj=document.createElement("XXX");
obj.onclick=function(){
//Even if it's a empty function
}
}
闭包能够维持函数内局部变量,使其得不到释放。 上例定义事件回调时,因为是函数内定义函数,而且内部函数--事件回调的引用外暴了,造成了闭包。
解决之道,将事件处理函数定义在外部,解除闭包,或者在定义事件处理函数的外部函数中,删除对dom的引用。
解决法一:
//将事件处理函数定义在外部
function onclickHandler(){
//do something
}
function bindEvent(){
var obj=document.createElement("XXX");
obj.onclick=onclickHandler;
}
解决法二:
//在定义事件处理函数的外部函数中,删除对dom的引用
function bindEvent(){
var obj=document.createElement("XXX");
obj.onclick=function(){
//Even if it's a empty function
}
obj=null;
}
解决方法三:
//采用事件委托
<div id="myDiv"> <input type="button" value="Click me" id="myBtn"> </div>
<script type="text/javascript"> document.onclick = function(event){ event = event || window.event; if(event.target.id == "myBtn"){ document.getElementById("myDiv").innerHTML = "Processing..."; } } </script>
三、没有清理的DOM元素引用
四、子元素存在引发的内存泄露
五、被遗忘的定时器或者回调
六、IE7/8引用计数使用循环引用产生的问题
2九、什么是闭包,如何使用它,为何要使用它?
闭包就是可以读取其余函数内部变量的函数。因为在Javascript语言中,只有函数内部的子函数才能读取局部变量,所以能够把闭包简单理解成“定义在一个函数内部的函数”。
因此,在本质上,闭包就是将函数内部和函数外部链接起来的一座桥梁。闭包能够用在许多地方。它的最大用处有两个,一个是前面提到的能够读取函数内部的变量,另外一个就是让这些变量的值始终保持在内存中。
使用闭包的注意点:
· 因为闭包会使得函数中的变量都被保存在内存中,内存消耗很大,因此不能滥用闭包,不然会形成网页的性能问题,在IE中可能致使内存泄露。解决方法是,在退出函数以前,将不使用的局部变量所有删除。
· 闭包会在父函数外部,改变父函数内部变量的值。因此,若是你把父函数看成对象(object)使用,把闭包看成它的公用方法(Public Method),把内部变量看成它的私有属性(private value),这时必定要当心,不要随便改变父函数内部变量的值。
30、行内元素有哪些?块级元素有哪些?CSS的盒模型?可继承的样式有哪些
行内元素:span,a,var ,em,input,img,img,textarea,var,em,strong,select,
块级标签:div,p,h1-h3,ul,ol,dl,li,dd,dt,table,td,tr,form
CSS的盒模型:
1)有两种, IE 盒子模型、标准 W3C 盒子模型;IE的content部分包含了 border 和 pading;
2)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border).
可继承的样式: font-size font-family color, UL LI DL DD DT; 不可继承的样式:border padding margin width height ;
3一、CSS引入的方式有哪些? link和@import的区别是?
内联 内嵌 外链 导入
区别 :
(1) link属于HTML标签,而@import是CSS提供的;
(2) 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
(3) import只在IE5以上才能识别,而link是HTML标签,无兼容问题; (4) link方式的样式的权重 高于@import的权重.
前者无兼容性,后者CSS2.1如下浏览器不支持
Link 支持使用javascript改变样式,后者不可
3二、前端页面有哪三层构成,分别是什么?做用是什么?
结构层 Html 表示层 CSS 行为层 js
3三、什么是语义化的HTML
直观的认识标签 对于搜索引擎的抓取有好处
1,去掉或者丢失样式的时候可以让页面呈现出清晰的结构
2,有利于SEO:和搜索引擎创建良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来肯定上下文和各个关键字的权重;
3,方便其余设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
4,便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,能够减小差别化。
3四、split() join() 的区别
前者是切割成数组的形式,后者是将数组转换成字符串
3五、数组方法pop() push() unshift() shift()
Push()尾部添加 pop()尾部删除
Unshift()头部添加 shift()头部删除
3六、如何阻止事件冒泡和默认事件
canceBubble return false
3七、添加 删除 替换 插入到某个接点的方法
obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild
3八、document load 和document ready的区别
Document.onload 是在结构和样式加载完才执行js
Document.ready原生种没有这个方法,jquery中有 $().ready(function)
3九、”==”和“===”的不一样
前者会自动转换类型
后者不会
40、position的absolute与fixed共同点与不一样点
A:共同点:
1.改变行内元素的呈现方式,display被置为block;2.让元素脱离普通流,不占据空间;3.默认会覆盖到非定位元素上 B不一样点:
absolute的”根元素“是能够设置的,而fixed的”根元素“固定为浏览器窗口。当你滚动网页,fixed元素与浏览器窗口之间的距离是不变的。
补充:display的值,说明他们的做用。position的值, relative和absolute分别是相对于谁进行定位的
1.
block 象块类型元素同样显示。 inline 缺省值。象行内元素类型同样显示。 inline-block 象行内元素同样显示,但其内容象块类型元素同样显示。 list-item 象块类型元素同样显示,并添加样式列表标记。 2. *absolute 生成绝对定位的元素,相对于 static 定位之外的第一个祖先元素进行定位。 *fixed (老IE不支持) 生成绝对定位的元素,相对于浏览器窗口进行定位。 *relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。 * static 默认值。没有定位,元素出如今正常的流中 *(忽略 top, bottom, left, right z-index 声明)。 * inherit 规定从父元素继承 position 属性的值。
40.1 display:none和visibility:hidden的区别?
display:none 隐藏对应的元素,在文档布局中再也不给它分配空间,它各边的元素会合拢,就当他历来不存在。
visibility:hidden 隐藏对应的元素,可是在文档布局中仍保留原来的空间。
4一、为何要初始化CSS样式?CSS3有哪些新特性?
初始化样式:
由于浏览器的兼容问题,不一样浏览器对有些标签的默认值是不一样的,若是没对CSS初始化每每会出现浏览器之间的页面显示差别。
固然,初始化样式会对SEO有必定的影响,但鱼和熊掌不可兼得,但力求影响最小的状况下初始化。
*最简单的初始化方法就是: * {padding: 0; margin: 0;} (不建议)
CSS3新特性:
CSS3实现圆角(border-radius),阴影(box-shadow),
对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform)
transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋转,缩放,定位,倾斜
增长了更多的CSS选择器 多背景 rgba
在CSS3中惟一引入的伪元素是::selection.
媒体查询,多栏布局
border-image
4二、Doctype做用? 严格模式与混杂模式如何区分?它们有何意义?
(1)、<!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签以前。告知浏览器以何种模式来渲染文档。 (2)、严格模式的排版和 JS 运做模式是 以该浏览器支持的最高标准运行。 (3)、在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点没法工做。 (4)、DOCTYPE不存在或格式不正确会致使文档以混杂模式呈现。
你知道多少种Doctype文档类型?
该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。 HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。 XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。 Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而 Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。
4三、HTML与XHTML——两者有什么区别
1.全部的标记都必需要有一个相应的结束标记 2.全部标签的元素和属性的名字都必须使用小写 3.全部的XML标记都必须合理嵌套 4.全部的属性必须用引号""括起来 5.把全部<和&特殊符号用编码表示 6.给全部属性赋一个值 7.不要在注释内容中使“--” 8.图片必须有说明文字
4四、常见兼容性问题?
* png24位的图片在iE6浏览器上出现背景,解决方案是作成PNG8.也能够引用一段脚本处理. * 浏览器默认的margin和padding不一样。解决方案是加一个全局的*{margin:0;padding:0;}来统一。 * IE6双边距bug:块属性标签float后,又有横行的margin状况下,在ie6显示margin比设置的大。 * 浮动ie产生的双倍距离(IE6双边距问题:在IE6下,若是对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。) #box{ float:left; width:10px; margin:0 0 0 100px;} 这种状况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别) * 渐进识别的方式,从整体中逐渐排除局部。 首先,巧妙的使用“\9”这一标记,将IE游览器从全部状况中分离出来。 接着,再次使用“+”将IE8和IE七、IE6分离开来,这样IE8已经独立识别。 css .bb{ background-color:#f1ee18;/*全部识别*/ .background-color:#00deff\9; /*IE六、七、8识别*/ +background-color:#a200ff;/*IE六、7识别*/ _background-color:#1e0bd1;/*IE6识别*/ } * IE下,可使用获取常规属性的方法来获取自定义属性, 也可使用getAttribute()获取自定义属性; Firefox下,只能使用getAttribute()获取自定义属性. 解决方法:统一经过getAttribute()获取自定义属性. * IE下,event对象有x,y属性,可是没有pageX,pageY属性; Firefox下,event对象有pageX,pageY属性,可是没有x,y属性. * 解决方法:(条件注释)缺点是在IE浏览器下可能会增长额外的HTTP请求数。 * Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可经过加入 CSS 属性 -webkit-text-size-adjust: none; 解决. * 超连接访问事后hover样式就不出现了 被点击访问过的超连接样式不在具备hover和active了解决方法是改变CSS属性的排列顺序: L-V-H-A : a:link {} a:visited {} a:hover {} a:active {} * 怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式。为避免怪异模式给咱们带来没必要要的麻烦,最好养成书写DTD声明的好习惯。如今可使用[html5](http://www.w3.org/TR/html5/single-page.html)推荐的写法:`<doctype html>` * 上下margin重合问题 ie和ff都存在,相邻的两个div的margin-left和margin-right不会重合,可是margin-top和margin-bottom却会发生重合。 解决方法,养成良好的代码编写习惯,同时采用margin-top或者同时采用margin-bottom。 * ie6对png图片格式支持很差(引用一段脚本处理)
4五、iframe的优缺点?
优势: 解决加载缓慢的第三方内容如图标和广告等的加载问题 Security sandbox 并行加载脚本 缺点: *iframe会阻塞主页面的Onload事件; *即时内容为空,加载也须要时间 *没有语意
cookie
1.IE6或更低版本最多20个cookie 2.IE7和以后的版本最后能够有50个cookie。 3.Firefox最多50个cookie 4.chrome和Safari没有作硬性限制
Opera
会清理近期最少使用的Firefox
会随机清理
4096
字节,为了兼容性,通常不能超过 IE 提供了一种存储能够持久化用户数据,叫作
IE5.0
就开始支持。每一个数据最多128K,每一个域名下最多1M。这个持久化数据放在缓存中,若是缓存没有清理,那么会一直存在。
1.经过良好的编程,控制保存在cookie中的session对象的大小。 2.经过加密和安全传输技术(SSL),减小cookie被破解的可能性。 3.只在cookie中存放不敏感数据,即便被盗也不会有重大损失。 4.控制cookie的生命期,使之不会永远有效。偷盗者极可能拿到一个过时的cookie。
1.`Cookie`数量和长度的限制。每一个domain最多只能有20条cookie,每一个cookie长度不能超过4KB,不然会被截掉。 2.安全性问题。若是cookie被人拦截了,那人就能够取得全部的session信息。即便加密也与事无补,由于拦截者并不须要知道cookie的意义,他只要原样转发cookie就能够达到目的了。 3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,咱们须要在服务器端保存一个计数器。若是咱们把这个计数器保存在客户端,那么它起不到任何做用。