




免费预览已结束,剩余44页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、html+css部分、(1)css盒模型,可能会要求手写一个布局,这个布局基本上用到的css是margin的负值,boxing-sizing:border-box,布局尽量往这方面想。浏览器布局的基本元素是盒,在w3c的标准模式下,width=width,但是在怪异模式下,width=border*2+padding*2+width;其中后代元素的width:100%;参照的是右边的那个width,(2)html5的新特性1、标签语义化,比如header,footer,nav,aside,article,section等,新增了很多表单元素,入email,url等,除去了center等样式标签,还有除去了有性能问题的frame,frameset等标签2、音视频元素,video,audio的增加使得我们不需要在依赖外部的插件就可以往网页中加入音视频元素。3、新增很多api,比如获取用户地理位置的window.navigator.geoloaction,4、websocketwebsocket是一种协议,可以让我们建立客户端到服务器端的全双工通信,这就意味着服务器端可以主动推送数据到客户端,5、webstorage,webstorage是本地存储,存储在客户端,包括localeStorage和sessionStorage,localeStorage是持久化存储在客户端,只要用户不主动删除,就不会消失,sessionStorage也是存储在客户端,但是他的存在时间是一个回话,一旦浏览器的关于该回话的页面关闭了,sessionStorage就消失了,6、缓存html5允许我们自己控制哪些文件需要缓存,哪些不需要,具体的做法如下:1、首先给html添加manifest属性,并赋值为cache.manifest2、cache.manifest的内容为: CACHE MANIFEST #v1.2 CACHE : /表示需要缓存的文件 a.js b.js NETWORK: /表示只在用户在线的时候才需要的文件,不会缓存 c.js FALLBACK / /index.html /表示如果找不到第一个资源就用第二个资源代替7、web worker,web worker是运行在浏览器后台的js程序,他不影响主程序的运行,是另开的一个js线程,可以用这个线程执行复杂的数据操作,然后把操作结果通过postMessage传递给主线程,这样在进行复杂且耗时的操作时就不会阻塞主线程了。(3)对html5的语义话的理解html5的语义化指的是用正确的标签包含正确的内容,比如nav标签,里面就应该包含导航条的内容,而不是用做其他的用途,标签语义化的好处就是结构良好,便于阅读,方便威化,也有利于爬虫的查找,提高搜索率。(4)cookie,sessionStorage,localeStorage的区别cookie是存储在浏览器端,并且随浏览器的请求一起发送到服务器端的,它有一定的过期时间,到了过期时间自动会消失。sessionStorage和localeStorage也是存储在客户端的,同属于web Storage,比cookie的存储大小要大有8m,cookie只有4kb,localeStorage是持久化的存储在客户端,如果用户不手动清除的话,不会自动消失,会一直存在,sessionStorage也是存储在客户端,但是它的存活时间是在一个回话期间,只要浏览器的回话关闭了就会自动消失。(5)多个页面之间如何进行通信使用cookie,使用web worker,使用localeStorage和sessionStorage(6)浏览器的渲染过程1、首先获取html,然后构建dom树2、其次根据css构建render树,render树中不包含定位和几何信息3、最后构建布局数,布局是含有元素的定位和几何信息(7)重构、回流浏览器的重构指的是改变每个元素外观时所触发的浏览器行为,比如颜色,背景等样式发生了改变而进行的重新构造新外观的过程。重构不会引发页面的重新布局,不一定伴随着回流,回流指的是浏览器为了重新渲染页面的需要而进行的重新计算元素的几何大小和位置的,他的开销是非常大的,回流可以理解为渲染树需要重新进行计算,一般最好触发元素的重构,避免元素的回流;比如通过通过添加类来添加css样式,而不是直接在DOM上设置,当需要操作某一块元素时候,最好使其脱离文档流,这样就不会引起回流了,比如设置position:absolute或者fixed,或者display:none,等操作结束后在显示。二、JavaScript部分(1)JavaScript的数据类型基本数据类型:Number,String,Boolean,Undefined,Null复杂数据类型:Object,Array,Function,RegExp,Date,Error全局数据类型:Math(2)JavaScript的闭包闭包简单的说就是一个函数能访问外部函数的变量,这就是闭包,比如说:function a(x) var tem=3; function b(y) console.log(x+y+(+tem); a函数中的b函数就是闭包了,b函数可以使用a函数的局部变量,参数,最典型的闭包应该是下面这样,将定义在函数中的函数作为返回值function a(x) var tem=3; function b(y) console.log(x+y+(+tem); return b;闭包的另一种作用是隔离作用域,请看下面这段代码for(var i=0;i2;i+) setTimeout(function() console.log(i); ,0);上面这段代码的执行结果是2,2而不是0,1,因为等for循环出来后,执行setTimeout中的函数时,i的值已经变成了2,这就是没有隔离作用域所造成的,请看下面代码for(var i=0;i2;i+) (function(i) setTimeout(function() console.log(i); ,0) )(i);这样就会输出0,1,我们的立即执行函数创建了一个作用域,隔离了外界的作用域,闭包的缺点是,因为内部闭包函数可以访问外部函数的变量,所以外部函数的变量不能被释放,如果闭包嵌套过多,会导致内存占用大,要合理使用闭包。(3)new 操作符到底做了什么首先,new操作符为我们创建一个新的空对象,然后this变量指向该对象,其次,空对象的原型执行函数的原型,最后,改变构造函数内部的this的指向代码如下:var obj=;obj._proto_=totype;fn.call(obj);(4)改变函数内部this指针的指向函数call和apply,假设要改变fn函数内部的this的指向,指向obj,那么可以fn.call(obj);或者fn.apply(obj);那么问题来了,call和apply的区别是什么,其是call和apply的区别在于参数,他们两个的第一个参数都是一样的,表示调用该函数的对象,apply的第二个参数是数组,是arg1,arg2,arg3这种形式,而call是arg1,arg2,arg3这样的形式。还有一个bind函数,var bar=fn.bind(obj);那么fn中的this就指向obj对象了,bind函数返回新的函数,这个函数内的this指针指向obj对象。(5)JavaScript的作用域和作用域链JavaScript的作用域指的是变量的作用范围,内部作用域由函数的形参,实参,局部变量,函数构成,内部作用域和外部的作用域一层层的链接起来形成作用域链,当在在函数内部要访问一个变量的时候,首先查找自己的内部作用域有没有这个变量,如果没有就到这个对象的原型对象中去查找,还是没有的话,就到该作用域所在的作用域中找,直到到window所在的作用域,每个函数在声明的时候就默认有一个外部作用域的存在了,比如:var t=4;function foo() var tem=12; funciton bar() var temo=34; console.log(t+ +tem+ +temo); bar找t变量的过程就是,先到自己的内部作用域中找,发现没有找到,然后到bar所在的最近的外部变量中找,也就是foo的内部作用域,还是没有找到,再到window的作用域中找,结果找到了(6)JavaScript的继承function A(name) =name; A.prototype.sayName=function() console.log(); function B(age) this.age=age; 原型继承B.prototype=new A(mbj); /被B的实例共享var foo=new B(18);foo.age; /18,age是本身携带的属性; /mbj,等价于foo._proto_.namefoo.sayName(); /mbj,等价于foo._proto_.proto_.sayName()foo.toString(); /object Object,等价于foo._proto_._proto_._proto_.toString();这样B通过原型继承了A,在new B的时候,foo中有个隐藏的属性_proto_指向构造函数的prototype对象,在这里是A对象实例,A对象里面也有一个隐藏的属性_proto_,指向A构造函数的prototype对象,这个对象里面又有一个_proto_指向Object的prototype这种方式的缺第一个缺点是所有子类共享父类实例,如果某一个子类修改了父类,其他的子类在继承的时候,会造成意想不到的后果。第二个缺点是在构造子类实例的时候,不能给父类传递参数。构造函数继承function B(age,name) this.age=age;A.call(this,name); var foo=new B(18,wmy);; /wmyfoo.age; /18foo.sayName(); /undefined采用这种方式继承是把A中的属性加到this上面,这样name相当于就是B的属性,sayName不在A的构造函数中,所以访问不到sayName。这种方法的缺点是父类的prototype中的函数不能复用。原型继承+构造函数继承function B(age,name) this.age=age;A.call(this,name); B.prototype=new A(mbj);var foo=new B(18,wmy);; /wmyfoo.age; /18foo.sayName(); /wmy这样就可以成功访问sayName函数了,结合了上述两种方式的优点,但是这种方式也有缺点,那就是占用的空间更大了。(7)JavaScript变量提升请看下面代码var bar=1;function test() console.log(bar); /undeifned var bar=2; console.log(bar); /2test();为什么在test函数中会出现上述结果呢,这就是JavaScript的变量提升了,虽然变量bar的定义在后面,不过浏览器在解析的时候,会把变量的定义放到最前面,上面的test函数相当于function test() var bar; console.log(bar); /undefined bar=2; console.log(bar); /2再看var foo=function() console.log(1); function foo() console.log(2); foo(); /结果为1同样的,函数的定义也会到提升到最前面,上面的代码相当于function foo() console.log(2); var foo;foo=funciton() console.log(1); foo(); /1(8)JavaScript事件模型原始事件模型,捕获型事件模型,冒泡事件模型,原始事件模型就是ele.onclick=function()这种类型的事件模型冒泡事件模型是指事件从事件的发生地(目标元素),一直向上传递,直到document,捕获型则恰好相反,事件是从document向下传递,直到事件的发生地(目标元素)IE是只支持冒泡事件模型的,下面是兼容各个浏览器的事件监听代码EventUtil= addListener:function(target,type,handler) if(target.addEventListener) target.addEventListener(type,handler); else if(target.attachEvent) target.attach(on+type,function() handler.call(target); /让handler中的this指向目标元素 ); else targeton+type=handler; , removeListener:function(target,type,handler) if(target.removeEventListener) target.removeEventListener(type,handler); else if(target.detachEvent) target.detachEvent(on+type,handler); else targeton+type=null; , getEvent:function(e) /获取事件对象 var evt=window.event|e; return evt; , getTarget:function(e) /获得目标对象 var evt=EventUtil.getEvent(e); var target; if(evt.target) target=evt.target; else target=evt.srcElement; return target; , stopPropagation:function(e) /停止冒泡 var evt=EventUtil.getEvent(e); if(evt.stopPropagation) evt.stopPropagation(); else evt.cancelBubble=true; , preventDefault:function(e) /阻值默认行为的发生 var evt=EventUtil.getEvent(e); if(evt.preventDefault) evt.preventDefault(); else e.returnValue=false; (9)内存泄漏内存泄漏指的是浏览器不能正常的回收内存的现象(10)浏览器的垃圾回收机制垃圾收集器必须跟踪哪个变量有用哪个变量没用,对于不再有用的变量打上标记,以备将来收回其占用的内存,内存泄露和浏览器实现的垃圾回收机制息息相关, 而浏览器实现标识无用变量的策略主要有下两个方法:第一,引用计数法跟踪记录每个值被引用的次数。当声明一个变量并将引用类型的值赋给该变量时,则这个值的引用次数就是1。如果同一个值又被赋给另一个变量,则该值的引用次 数加1.相反,如果包含对这个值引用的变量又取得另外一个值,则这个值的引用次数减1.当这个值的引用次数变成0时,则说明没有办法访问这个值了,因此就 可以将其占用的内存空间回收回来。如: var a = ; /对象的引用计数为1 b = a; /对象的引用计数为 1+1 a = null; /对象的引用计数为2-1所以这时对象不会被回收;IE 6, 7 对DOM对象进行引用计数回收, 这样简单的垃圾回收机制,非常容易出现循环引用问题导致内存不能被回收, 进行导致内存泄露等问题,一般不用引用计数法。第二,标记清除法到2008年为止,IE,Firefox,Opera,Chrome和Safari的javascript实现使用的都是标记清除式的垃圾收集策略(或类似的策略),只不过垃圾收集的时间间隔互有不同。标记清除的算法分为两个阶段,标记(mark)和清除(sweep). 第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。(11)同源策略同源策略是浏览器有一个很重要的概念。所谓同源是指,域名,协议,端口相同。不同源的客户端脚本(javascript、ActionScript)在没明确授权的情况下,不能读写对方的资源。简单的来说,浏览器允许包含在页面A的脚本访问第二个页面B的数据资源,这一切是建立在A和B页面是同源的基础上。(12)跨域的几种方式jsonp(利用script标签的跨域能力)跨域、websocket(html5的新特性,是一种新协议)跨域、设置代理服务器(由服务器替我们向不同源的服务器请求数据)、CORS(跨源资源共享,cross origin resource sharing)、iframe跨域、postMessage(包含iframe的页面向iframe传递消息)(13)异步和同步同步指下一个程序的执行需要等到上一个程序执行完毕,也就是得出结果后下一个才能执行,异步指的是上一个程序指向后,下一个程序不用等到上一个程序出结果就能执行,等上一个出结果了调用回调函数处理结果就好。(14)JavaScript的值类型和引用类型JavaScript有两种类型的数据,值类型和引用类型,一般的数字,字符串,布尔值都是值类型,存放在栈中,而对象,函数,数组等是引用类型,存放在堆中,对引用类型的复制其实是引用复制,相当于复制着地址,对象并没有真正的复制。var a=5;var b=a;a=null; /那么b是5var a=,var b=a;=mbj;console.log(); /mbj,因为a,b指向同一个对象a=null;console.log(typeof b); /object,a=null,只是a不再指向该对象,但是这个对象还是在堆中确确实实的存在,b依然指向它。(15)优化下面代码var str=我喜欢我可爱的女朋友,;str=str+她叫喵喵,;str=str+她时而可爱,时而认真,;str=str+她那天真的笑声可以让人忘掉一切烦恼。;console.log(str);这里的优化主要是对加号操作符的优化,因为加号在JavaScript中非常耗时和耗内存,需要经过以下六步:1、首先开辟一块临时空间,存储字符串,2、然后在开辟一块空间3、把str中的字符串复制到刚刚开辟的空间4、在把需要连接的字符串复制到str后面5、str指向这块空间6、回收str原来的空间和临时空间优化的方法是使用数组的push方法,数组是连续的存储空间,可以省下很多步var res=;var str=我喜欢我可爱的女朋友,;res.push(str);res.push(她叫喵喵,);res.push(她时而可爱,时而认真,);res.push(她那天真的笑声可以让人忘掉一切烦恼。);console.log(res.join(); (16)封装cookie的添加,删除,查询方法cookie是存储在浏览器端的,可以用于存储sessionID,也可以用于自动登陆,记住密码等,但是在浏览器端并没有官方的操作cookie的方法,下面我们来封装一下:CookieUtil= addCookie:function(key,value,options) var str=key+=+escape(value); if(options.expires) var curr=new Date(); /options.expires的单位是小时 curr.setTime(curr.getTime()+options.expires*3600*1000); options.expires=curr.toGMTString(); for(var k in options) /有可能指定了cookie的path,cookie的domain str+=;+k+=+optionsk; document.cookie=str; , queryCookie:function(key) var cookies=document.cookie; /获得浏览器端存储的cookie,格式是key=value;key=value;key=value cookies+=; var start=cookies.indexOf(key); if(start=-1) return null; /说明不存在该cookie var end=cookies.indexOf(;,start); var value=cookies.slice(start+key.length+1,end); return unescape(value); , deleteCookie:function(key) var value=CookieUtil.queryCookie(key); if(value=null)return false; CookieUtil.addCookie(key,value,expires:0);/把过期时间设置为0,浏览器会马上自动帮我们删除cookie (17)事件委托机制事件委托指的是,不再事件的发生地设立监听函数,而是在事件发生地的父元素或者祖先元素设置监听器函数,这样可以大大提高性能,因为可以减少绑定事件的元素,比如: 要给li元素绑定click事件,使用事件委托机制的话,就只需要给ul绑定click事件就行了,这样就不需要给每个li绑定click事件,减小内存占用,提高效率,有兴趣的童鞋可以去看看jQuery的live,bind,on,delegate函数的区别,这几个函数就采用了事件委托机制。三、其他部分(1)http状态码http状态码是表示服务器对请求的响应状态,主要分为以下几个部分1*:这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束2*:表示请求成功,3*:表示重定向4*:表示客户端错误5*:表示服务器端错误100(continue),客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收200(OK),表示请求成功,请求所希望的响应头或数据体将随此响应返回。202(Accepted),服务器已接受请求,但尚未处理。204(No-Content),服务器成功处理了请求,但不需要返回任何实体内容205(Reset-Content),服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。该响应主要是被用于接受用户输入后,立即重置表单,以便用户能够轻松地开始另一次输入。206(Partial-Content),服务器已经成功处理了部分 GET 请求。301(Moved-Permanently),永久性重定向302(Moved-Temporarily),暂时性重定向304(Not-Modified),浏览器端缓存的资源依然有效400(Bad-Reques),请求有误,当前请求无法被服务器理解。401(Unauthorized),当前请求需要用户验证。403(Forbidden),服务器已经理解请求,但是拒绝执行它。404(Not-Found),请求的资源没有被找到500(Interval Server Error),服务器内部错误502(Bad GateWay),网关出错503(Service Unavailable),由于临时的服务器维护或者过载,服务器当前无法处理请求。504(Gateway Timeout),作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。(2)xss,csrf的概念以及防范方法大公司如bat在面试的时候,web安全问题是必问的问题,所以一定要懂,要彻底理解xss和csrf的概念和防范方式,最好在项目中有用到对这两种攻击的防范,这样会给你的面试加很多分。由xss和csrf涉及的东西比较多,我就不具体给出了,详情请看XSS攻击及防御,CSRF攻击(3)CommonJs,AMD,CMD规范对于前端模块化来说,这三个规范是必须要了解的,详情请看我的这篇文章CommonJS,AMD,CMD(4)谈谈对前端模块化的理解前端模块话就是把复杂的文件分成一个个独立的模块,比如js文件,分成独立的模块之后有利于代码的重用和维护,但是这样又会引来模块与模块之间的依赖问题,所以就有了CommonJS、AMD、CMD规范,最后出现了webpack,webpack就是前端模块话的一种解决方案,基本上大公司都会使用webpack,想要详细的学习webpack的话请看webpack简明使用教程(5)优雅降级和渐进增强优雅降级指的是一开始就构建功能完好的网站,然后在慢慢兼容低版本的浏览器,使得各个浏览器之间的差异不要太大。渐进增强是指在基本功能得到满足的情况下,对支持新特性的浏览器使用新特性,带给用户更换的体验。优雅降级和渐进增强的出发点不同,前者是慢慢向下兼容,是向后看,后着是慢慢向上,增强功能,是向前看。(6)前端优化(提高网页的加载速度)1、使用css sprites,可以有效的减少http请求数2、使用缓存3、压缩js,css文件,减小文件体积4、使用cdn,减小服务器负担5、懒加载图片6、预加载css,js文件7、避免dom结构的深层次嵌套8、给DOM元素添加样式时,把样式放到类中,直接给元素添加类,减少重构,回流说说你对闭包的理解使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。闭包有三个特性:1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变量不会被垃圾回收机制回收请你谈谈Cookie的弊端cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的。 第一:每个特定的域名下最多生成20个cookie1.IE6或更低版本最多20个cookie2.IE7和之后的版本最后可以有50个cookie。3.Firefox最多50个cookie4.chrome和Safari没有做硬性限制IE和Opera会清理近期最少使用的cookie,Firefox会随机清理cookie。cookie的最大大约为4096字节,为了兼容性,一般不能超过4095字节。IE 提供了一种存储可以持久化用户数据,叫做userdata,从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.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。浏览器本地存储在较高版本的浏览器中,js提供了sessionStorage和globalStorage。在HTML5中提供了localStorage来取代globalStorage。html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。web storage和cookie的区别Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可以跨域调用。除此之外,Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。但是cookie也是不可以或缺的:cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生浏览器的支持除了IE及以下不支持外,其他标准浏览器都完全支持(ie及FF需在web服务器里运行),值得一提的是IE总是办好事,例如IE7、IE6中的userData其实就是javascript本地存储的解决方案。通过简单的代码封装可以统一到所有的浏览器都支持web storage。localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem和removeItem等cookie 和session 的区别: 1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。 3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。 4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。 5、所以个人建议: 将登陆信息等重要信息存放为SESSION 其他信息如果需要保留,可以放在COOKIE中CSS 相关问题display:none和visibility:hidden的区别?display:none 隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,就当他从来不存在。visibility:hidden 隐藏对应的元素,但是在文档布局中仍保留原来的空间。CSS中 link 和import 的区别是?(1) link属于HTML标签,而import是CSS提供的; (2) 页面被加载的时,link会同时被加载,而import引用的CSS会等到页面被加载完再加载;(3) import只在IE5以上才能识别,而link是HTML标签,无兼容问题; (4) link方式的样式的权重 高于import的权重.position:absolute和float属性的异同A:共同点:对内联元素设置float和absolute属性,可以让元素脱离文档流,并且可以设置其宽高。B:不同点:float仍会占据位置,position会覆盖文档流中的其他元素。介绍一下box-sizing属性?box-sizing属性主要用来控制元素的盒模型的解析模式。默认值是content-box。 content-box:让元素维持W3C的标准盒模型。元素的宽度/高度由border + padding + content的宽度/高度决定,设置width/height属性指的是content部分的宽/高 border-box:让元素维持IE传统盒模型(IE6以下版本和IE67的怪异模式)。设置width/height属性指的是border + padding + content标准浏览器下,按照W3C规范对盒模型解析,一旦修改了元素的边框或内距,就会影响元素的盒子尺寸,就不得不重新计算元素的盒子尺寸,从而影响整个页面的布局。CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些?1.id选择器( # myid)2.类选择器(.myclassname)3.标签选择器(div, h1, p)4.相邻选择器(h1 + p)5.子选择器(ul li)6.后代选择器(li a)7.通配符选择器( * )8.属性选择器(arel = external)9.伪类选择器(a: hover, li:nth-child) 可继承的样式: font-size font-family color, text-indent; 不可继承的样式:border padding margin width height ; 优先级就近原则,同权重情况下样式定义最近者为准; 载入样式以最后载入的定位为准;优先级为:!important id class tag important 比 内联优先级高,但内联比 id 要高CSS3新增伪类举例:p:first-of-type 选择属于其父元素的首个 元素的每个 元素。p:last-of-type 选择属于其父元素的最后 元素的每个 元素。p:only-of-type 选择属于其父元素唯一的 元素的每个 元素。p:only-child 选择属于其父元素的唯一子元素的每个 元素。p:nth-child(2) 选择属于其父元素的第二个子元素的每个 元素。:enabled :disabled 控制表单控件的禁用状态。:checked 单选框或复选框被选中。position的值, relative和absolute分别是相对于谁进行定位的?absolute 生成绝对定位的元素, 相对于最近一级的 定位不是 static 的父元素来进行定位。fixed (老IE不支持) 生成绝对定位的元素,相对于浏览器窗口进行定位。 relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。 static 默认值。没有定位,元素出现在正常的流中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-imageXML和JSON的区别?(1).数据体积方面。JSON相对于XML来讲,数据的体积小,传递的速度更快些。(2).数据交互方面。JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。(3).数据描述方面。JSON对数据的描述性比XML较差。(4).传输速度方面。JSON的速度要远远快于XML。对BFC规范的理解? BFC,块级格式化上下文,一个创建了新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。在同一个BFC中的两个毗邻的块级盒在垂直方向(和布局方向有关系)的margin会发生折叠。 (W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行布局,以及与其他元素的关系和相互作用。)解释下 CSS sprites,以及你要如何在页面或网站中使用它。CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。这样可以减少很多图片请求的开销,因为请求耗时比较长;请求虽然可以并发,但是也有限制,一般浏览器都是6个。对于未来而言,就不需要这样做了,因为有了http2。html部分说说你对语义化的理解?1,去掉或者丢失样式的时候能够让页面呈现出清晰的结构2,有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;3,方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;4,便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?(1)、 声明位于文档中的最前面,处于 标签之前。告知浏览器以何种模式来渲染文档。 (2)、严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行。(3)、在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。(4)、DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。 你知道多少种Doctype文档类型? 该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。 HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。 XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而 Quirks (包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。HTML与XHTML二者有什么区别区别:1.所有的标记都必须要有一个相应的结束标记2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输电安全规程培训课件
- 小麦栽培种植学课件
- 小鸭子课件教学课件
- 股权激励与员工培训结合的协议模板
- 定制衣柜全屋设计与智能家居安全解决方案合同
- 小鬼当家课件
- 输入汉字的公开课课件
- 谈骨气课件教学课件
- 说明文探究题课件
- 小蝌蚪的秘密课件
- 华为IPD流程管理体系L1至L5最佳实践
- 医院费用优惠管理制度
- 守纪律小学生课件教学
- T/ZGSCJXH 1-2019陈年白酒收藏评价指标体系
- 农业企业技术创新与国际市场竞争研究-洞察阐释
- 设备操作安全培训与实践考核试卷
- 2025年环保行业从业者综合素质测试试卷及答案
- 电线、电缆专用生产机械企业ESG实践与创新战略研究报告
- 2025-2030中国边境经济合作区行业市场发展分析及经验案例与投资趋势研究报告
- TCECS24-2020钢结构防火涂料应用技术规程
- 血液透析病人饮食管理
评论
0/150
提交评论