面试题汇总

2018-09-06  本文已影响0人  A落儿

谈谈浏览器的兼容性

1.html部分

H5新标签在IE9以下的浏览器识别

<!--[if lt IE 9]>
 <script type="text/javascript" src="js/html5shiv.js"></script>
<![endif]-->

html5shiv.js下载地址
https://github.com/aFarkas/html5shiv/releases

.ul标签内外边距问题ul标签在IE6\IE7中,有个默认的外边距,但是在IE8以上及其他浏览器中有个默认的内边距。解决方法:统一设置ul的内外边距为0

2.CSS样式的兼容性

<!--[if IE 6]>此处内容只有IE6.0可见<![endif]-->          
 <!--[if IE 7]>此处内容只有IE7.0可见<![endif]-->
p{
font-size:10px;
-webkit-transform:scale(0.8);
}

标准盒子模型:宽度=内容的宽度(content)+ border + padding +margin
低版本IE盒子模型:宽度=内容宽度(content+border+padding)+ margin

CSS选择符:id选择器(#myid)、类选择器(.myclassname)、标签选择器(div, h1, p)、相邻选择器(h1 + p)、子选择器(ul > li)、后代选择器(li a)、通配符选择器(*)、属性选择器(a[rel="external"])、伪类选择器(a:hover, li:nth-child)
可继承的属性:font-size, font-family, color
不可继承的样式:border, padding, margin, width, height
优先级(就近原则):!important > [ id > class > tag ]
!important 比内联优先级高

元素选择符: 1
class选择符: 10
id选择符:100
元素标签:1000

//一般的div居中
border: 1pxsolid red;margin: 0auto; height: 50px;width: 80px;

//浮动居中(已知宽高)
border: 1px solid red;
float: left;
position:absolute;
width: 200px;
height: 100px;
left: 50%; 
top: 50%;
margin: -50px 0 0 -100px;

//绝对定位的左右居中:
border: 1px solid black;
position: absolute;
width: 200px;
height: 100px;
margin: 0 auto;
left: 0;
right: 0;

//使用bootstrap或者element等栅格系统
前者是分成12,后者是24

//display:table
//父级设置:
display:table
//需要居中的div元素
display:table-cell;
verticle-align:middle;
width: 0;
height: 0;
border-top: 40px solid transparent;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
border-bottom: 40px solid #ff0000;

3.js的兼容性

4.闭包和作用域

闭包的理解与使用
作用域相关
我把闭包和作用域放在一起理解.要理解闭包,首先要理解变量作用域.变量的的作用域无非就是两种:全局变量和局部变量.JavaScript的特殊之处就在于函数内部可以直接读取全局变量,
var n=999;
  function f1(){
    alert(n);
  }
  f1(); // 999
  另一方面,在函数外部自然无法读取函数内的局部变量.
  function f1(){
    var n=999;
  }
  alert(n); // error
  处于种种原因,我们有时候需要得到函数内的局部变量.但是,正常情况下,这是办不到的,只有通过变通方法才能实现.在函数内部,再定义一个函数:
  function f1(){
    var n=999;
    function f2(){
      alert(n); // 999
    }
    return f2;
  }
  var result=f1();
  result(); // 999
  由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成”定义在一个函数内部的函数”。所以本质上,闭包就是将函数内部和函数外部连接起来一座桥梁

GET和POST的区别

区别一:
GET重点从服务器上获取资源,POST重点向服务器发送数据.
区别二:
get传输数据是通过URL请求,置于URL后,并用”?”连接,多个请求数据间用”&”连接.post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
区别三:
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
区别四:
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
区别五:
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。

面向对象的理解

es6

字符串拼接

startsWith(jspang)
endsWith(jspang);

document.write('jspang|'.repeat(3))

二进制的开始是0(零),然后第二个位置是b(注意这里大小写都可以实现),然后跟上二进制的值就可以了。
也是以0(零)开始的,然后第二个位置是O(欧),然后跟上八进制的值就可以了。

for of

forEach,fiflter,map(替换)

上一篇 下一篇

猜你喜欢

热点阅读