针对这几天的前端面试,学到了很多东西,对还有印象的作个记录:css
解答:一、给父元素加一个overflow:hidden;二、将父元素也一块儿浮动(这个比较复杂,会影响到父元素的同级元素);三、在父元素的最后一个子元素(也就是你的ul标签)后边再增长多一个非浮动的子元素,而后将这个子元素加个clear(例:<div style="clear:both"></div>);四、使用伪元素清除浮动: html
.clearfix:after { content: ""; /*设置内容为空*/ height: 0; /*高度为0*/ line-height: 0; /*行高为0*/ display: block; /*将文本转为块级元素*/ visibility: hidden; /*将元素隐藏*/ clear: both; /*清除浮动*/ } .clearfix { zoom: 1; /*为了兼容IE*/ }
或者前端
.clearfix:before, .clearfix:after { content: ""; display: table; } .clearfix:after { clear: both; } .clearfix { zoom: 1; }
解答:html5
一、content-box(宽度和高度分别应用到元素的内容框。在宽度和高度以外绘制元素的内边距和边框。);jquery
二、border-box(为元素设定的宽度和高度决定了元素的边框盒。经过从已设定的宽度和高度分别减去边框和内边距才能获得内容的宽度和高度。);程序员
三、inherit(规定应从父元素继承 box-sizing 属性的值。)es6
var name="aaa"; function echo(){ alert(name); var name="bbb"; alert(name); alert(age); } echo();
解答:在我实际运行出来后,alert出来的结果依次是:undefined,bbb,第三个没有alert(由于会报not defined错误)web
ps:echo()函数中的name前面不定义var时,第二个alert的name值为aaa面试
解答:详见另外一篇博客http://www.cnblogs.com/minozMin/p/8376614.htmlajax
解答:async:false
解答:##########
解答:css中,用nth便可;
(2)jquery中,用odd和even:
<style type="text/css"> .odd { background-color:yellow; } .even { background-color:red; } </style>
<script> $(document).ready(function() { $('tr:odd').addClass('odd'); $('tr:even').addClass('even'); }); </script>
overflow:auto
1 $(function(){ 2 $('ul').each(function(){ 3 $('li:lt(3) em',this).addClass('emClass'); 4 }); 5 });
选择器 | 实例 | 选取 |
---|---|---|
* | $("*") | 全部元素 |
#id | $("#lastname") | id="lastname" 的元素 |
.class | $(".intro") | 全部 class="intro" 的元素 |
element | $("p") | 全部 <p> 元素 |
.class.class | $(".intro.demo") | 全部 class="intro" 且 class="demo" 的元素 |
:first | $("p:first") | 第一个 <p> 元素 |
:last | $("p:last") | 最后一个 <p> 元素 |
:even | $("tr:even") | 全部偶数 <tr> 元素 |
:odd | $("tr:odd") | 全部奇数 <tr> 元素 |
:eq(index) | $("ul li:eq(3)") | 列表中的第四个元素(index 从 0 开始) |
:gt(no) | $("ul li:gt(3)") | 列出 index 大于 3 的元素 |
:lt(no) | $("ul li:lt(3)") | 列出 index 小于 3 的元素 |
:not(selector) | $("input:not(:empty)") | 全部不为空的 input 元素 |
:header | $(":header") | 全部标题元素 <h1> - <h6> |
:animated | 全部动画元素 | |
:contains(text) | $(":contains('W3School')") | 包含指定字符串的全部元素 |
:empty | $(":empty") | 无子(元素)节点的全部元素 |
:hidden | $("p:hidden") | 全部隐藏的 <p> 元素 |
:visible | $("table:visible") | 全部可见的表格 |
s1,s2,s3 | $("th,td,.intro") | 全部带有匹配选择的元素 |
[attribute] | $("[href]") | 全部带有 href 属性的元素 |
[attribute=value] | $("[href='#']") | 全部 href 属性的值等于 "#" 的元素 |
[attribute!=value] | $("[href!='#']") | 全部 href 属性的值不等于 "#" 的元素 |
[attribute$=value] | $("[href$='.jpg']") | 全部 href 属性的值包含以 ".jpg" 结尾的元素 |
:input | $(":input") | 全部 <input> 元素 |
:text | $(":text") | 全部 type="text" 的 <input> 元素 |
:password | $(":password") | 全部 type="password" 的 <input> 元素 |
:radio | $(":radio") | 全部 type="radio" 的 <input> 元素 |
:checkbox | $(":checkbox") | 全部 type="checkbox" 的 <input> 元素 |
:submit | $(":submit") | 全部 type="submit" 的 <input> 元素 |
:reset | $(":reset") | 全部 type="reset" 的 <input> 元素 |
:button | $(":button") | 全部 type="button" 的 <input> 元素 |
:image | $(":image") | 全部 type="image" 的 <input> 元素 |
:file | $(":file") | 全部 type="file" 的 <input> 元素 |
:enabled | $(":enabled") | 全部激活的 input 元素 |
:disabled | $(":disabled") | 全部禁用的 input 元素 |
:selected | $(":selected") | 全部被选取的 input 元素 |
:checked | $(":checked") | 全部被选中的 input 元素 |
Object.keys()
:返回对象自身的全部可枚举的属性的键名解答:
<form enctype="multiple/form-data"> </form>
解答:冒泡型事件流:事件的传播是从最特定的事件目标到最不特定的事件目标。即从DOM树的叶子到根。(推荐)
捕获型事件流:事件的传播是从最不特定的事件目标到最特定的事件目标。即从DOM树的根到叶子。
解答:详见另外一篇博客http://www.cnblogs.com/minozMin/p/8093551.html
解答:详见另外一篇博客http://www.cnblogs.com/minozMin/p/8328028.html
var a="string"; console.log(a); //string var a=1; console.log(a); //number var a=false; console.log(a); //boolean var a; console.log(typeof a); //undfined var a = null; console.log(typeof a); //object var a = document; console.log(typeof a); //object var a = []; console.log(a); //object var a = function(){}; console.log(typeof a) //function 除了能够判断数据类型还能够判断function类型
var a = new Object(); a.value = 1; b = a; b.value = 2; alert(a.value);
结果为:2
解答:参见另外一篇博客 http://www.cnblogs.com/minozMin/p/8022869.html
解答:$就是jQuery的别称,是jQuery库提供的一个函数。
(1)能够经过$ () 里的参数进行查找和选择html文档中的元素
$('#tmp');//这是查找dom的id等于tmp的元素
(2)访问$中定义的函数
$.ajax(options)
解答:
(1)Cookie 是小甜饼的意思。顾名思义,cookie 确实很是小,它的大小限制为4KB左右,是网景公司的前雇员 Lou Montulli 在1993年3月的发明。它的主要用途有保存登陆信息,好比你登陆某个网站市场能够看到“记住密码”,这一般就是经过在 Cookie 中存入一段辨别用户身份的数据来实现的。
(2)localStorage 是 HTML5 标准中新加入的技术,它并非什么划时代的新东西。早在 IE 6 时代,就有一个叫 userData 的东西用于本地存储,而当时考虑到浏览器兼容性,更通用的方案是使用 Flash。而现在,localStorage 被大多数浏览器所支持,若是你的网站须要支持 IE6+,那以 userData 做为你的 polyfill 的方案是种不错的选择。
特性 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
localStorage | 4 | 3.5 | 8 | 10.50 | 4 |
sessionStorage | 5 | 2 | 8 | 10.50 | 4 |
特性 | Cookie | localStorage | sessionStorage |
---|---|---|---|
数据的生命期 | 可设置失效时间,默认是关闭浏览器后失效 | 除非被清除,不然永久保存 | 仅在当前会话下有效,关闭页面或浏览器后被清除 |
存放数据大小 | 4K左右 | 通常为5MB | 通常为5MB |
与服务器端通讯 | 每次都会携带在HTTP头中,若是使用cookie保存过多数据会带来性能问题 | 仅在客户端(即浏览器)中保存,不参与和服务器的通讯 | 仅在客户端(即浏览器)中保存,不参与和服务器的通讯 |
易用性 | 须要程序员本身封装,源生的Cookie接口不友好 | 源生接口能够接受,亦可再次封装来对Object和Array有更好的支持 | 源生接口能够接受,亦可再次封装来对Object和Array有更好的支持 |
解答:参考两篇不错的博客http://www.cnblogs.com/yuezk/archive/2013/01/11/2855698.html和http://www.cnblogs.com/yuezk/archive/2013/01/11/2856540.html
解答:
(1)http是HTTP协议运行在TCP之上。全部传输的内容都是明文,客户端和服务器端都没法验证对方的身份。
(2)https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。全部传输的内容都通过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端能够验证服务器端的身份,若是配置了客户端验证,服务器方也能够验证客户端的身份。解答:<img alt="" src="" />
<div> <div> <div> </div> </div> </div>
解答:
(1)适用范围不一样 @import能够在网页页面中使用,也能够在css文件中使用,用来将多个css文件引入到一个css文件中;而link只能将css文件引入到网页页面中。
(2)功能范围不一样 link属于XHTML标签,而@import是CSS提供的一种方式,link标签除了能够加载CSS外,还能够定义RSS,定义rel链接属性等,@import就只能加载CSS。
(3)加载顺序不一样 当一个页面被加载的时候,link引用的CSS会同时被加载,而@import引用的CSS会等到页面所有被下载完再被加载。因此有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢的时候还挺明显。
(4) 兼容性 因为@import是css2.1提出的,因此老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。
(5)控制样式时的差异 使用link方式可让用户切换CSS样式.现代浏览器如Firefox,Opera,Safari都支持rel=”alternate stylesheet”属性(便可在浏览器上选择不一样的风格),固然你还可使用Javascript使得IE也支持用户更换样式
(1)GET请求,请求的数据会附加在URL以后,以?分割URL和传输数据,多个参数用&链接。URL的编码格式采用的是ASCII编码,而不是uniclde,便是说全部的非ASCII字符都要编码以后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。
所以,GET请求的数据会暴露在地址栏中,而POST请求则不会。
(2)传输数据的大小
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。可是在实际开发过程当中,对于GET,特定的浏览器和服务器对URL的长度有限制。所以,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,因为不是URL传值,理论上是不会受限制的,可是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。
(3)安全性
POST的安全性比GET的高。这里的安全是指真正的安全,而不一样于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。好比,在进行登陆操做,经过GET请求,用户名和密码都会暴露再URL上,由于登陆页面有可能被浏览器缓存以及其余人查看浏览器的历史记录的缘由,此时的用户名和密码就很容易被他人拿到了。除此以外,GET请求提交的数据还可能会形成Cross-site request frogery攻击
(4)HTTP中的GET,POST,SOAP协议都是在HTTP上运行的
(1)DOCTYPE是document type(文档类型)的简写,在Web设计中用来讲明你用的XHTML或者HTML是什么版本.
(2)要创建符合标准的XHTML网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML肯定了一个正确的DOCTYPE,不然你的标识和CSS都不会生效。
(3)通常放置在html网页代码最顶部
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//CN" "http://www.w3. org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
(4)小结,一般html DOCTYPE声明是必须的,并且使用div+css更是必不可少,若是缺乏或错误document将会形成你的CSS失效或半失效,即由于css失效,网页布局变乱,有的css属性不能体现。
(5)若是你不能记住和正确输入DOCTYPE长串英文,不要紧,DIVCSS5建议你使用DW软件直接新建html便可获得完整结构最基本html。
(1)HTML框架简述
(3)框架的缺点(iframe的缺点与frame相似)
(1)同步:
同步的思想是:全部的操做都作完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感受(就是系统迁移中,点击了迁移,界面就不动了,可是程序还在执行,卡死了的感受)。这种状况下,用户不能关闭界面,若是关闭了,即迁移程序就中断了。
(2)异步:
将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你能够关闭浏览器了。而后程序再慢慢地去写入数据库去。这就是异步。可是用户没有卡死的感受,会告诉你,你的请求系统已经响应了。你能够关闭界面了。
(3)总结:
a、同步,是全部的操做都作完,才返回给用户结果。即写完数据库以后,在相应用户,用户体验很差。
b、异步,不用等全部操做等作完,就相应用户请求。即先相应用户请求,而后慢慢去写数据库,用户体验较好。