1.css选择器
1 CSS选择符有哪些 2 3 通配符选择器(*) 4 id选择器(#classId) 5 类选择器(.className) 6 标签选择器(div,h1,p,span,table) 7 子选择器(ul > li) 8 后代选择器(li a) 9 伪类选择器(a:hover,li:nth-child)
1 优先级权重计算 2 important的权重为 1,0,0,0 3 ID的权重为 0,1,0,0 4 类的权重为 0,0,1,0 5 伪类的权重为 0,0,1,0 6 属性的权重为 0,0,1,0 7 标签的权重为 0,0,0,1 8 伪对象的权重为 0,0,0,1 9 通配符的权重为 0,0,0,0 10 11 就近原则,同权重情况下以样式定义最近者为准; 12 载入样式以最后载入的定位为准; 13 优先级: 14 //!important > id > class > tag 15 //important 比 内联优先级高 16 important > 内联样式 > ID > 类 | 伪类 | 属性选择 > 标签 | 伪元素 > 继承 > 通配符
2.盒子模型
(1)是什么:每个元素被表示为一个矩形的盒子,由四部分组成:内容(content)、内边距(padding)、边框(border)、外边距(margin)。它在页面中所占的实际大小(宽高)是content+padding+border+margin之和。
(2)盒模型有两种:标准盒模型(W3C盒模型)、IE盒模型。
(3)两种盒模型的区别:标准盒模型内容大小就是content大小,而IE盒模型内容大小则是content+padding+border总的大小。 (4)怎么设置两种盒模型:通过设置box-sizing属性为content-box(默认值,标准盒模型)、border-box(IE盒模型)。 (5)JS怎么获取和设置box的宽高 (6)box-sizing使用场景:若设置子元素的margin或border时可能会撑破父元素的尺寸,就需要使用box-sizing:border-box来将border包含进元素的尺寸中。
行内元素有哪些?块级元素有哪些? (1)行内元素:a,b,span,img,input,strong,label,button,select,textarea,em (2)块级元素:div,ul(无序列表),ol,li,dl(自定义列表),dt(自定义列表项),dd(自定义列表项的定义),p,h1-h6,blockquote(块引用)
3.常用浏览器,内核
(1)Trident内核:(国产的绝大部分浏览器)IE,360,搜狗 Gecko内核:Firefox,NetScape6及以上 Presto内核:Opera7及以上 Webkit内核:(国产大部分双核浏览器其中一核)Safari(苹果),Chrome (2)浏览器内核:主要分成两部分:渲染引擎和JS引擎。最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立, 内核就倾向于只指渲染引擎 (3)渲染引擎:负责取得网页内容(HTML,XML,图像等)、整理讯息(加入CSS等),以及计算网页的显示方式,后会输出至 显示器或打印机。 (4)JS引擎:解析和执行JavaScript来实现网页的动态效果。
4.如何居中div?如何让绝对定位的div居中?
1 div: 2 border: 1px solid red; 3 margin: 0 auto; 4 height: 50px; 5 width: 80px; 6 7 绝对定位的左右居中: 8 border: 1px solid black; 9 position: absolute; 10 width: 200px; 11 height: 100px; 12 margin: 0 auto; 13 left: 0; 14 right: 0;
5.如何检查一个数字是否为整数?
1 function isInt(num) { 2 return num % 1 === 0; 3 } 4 console.log(isInt(4)); // true 5 console.log(isInt(12.2)); // false 6 console.log(isInt(0.3)); // false
6.js 字符串操作函数
1 concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串。 2 3 indexOf() – 返回字符串中一个子串第一处出现的索引。如果没有匹配项,返回 -1 。 4 5 charAt() – 返回指定位置的字符。 6 7 lastIndexOf() – 返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 。 8 9 match() – 检查一个字符串是否匹配一个正则表达式。 10 11 substr() 函数 -- 返回从string的startPos位置,长度为length的字符串 12 13 substring() – 返回字符串的一个子串。传入参数是起始位置和结束位置。 14 15 slice() – 提取字符串的一部分,并返回一个新字符串。 16 17 replace() – 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。 18 19 search() – 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。 20 21 split() – 通过将字符串划分成子串,将一个字符串做成一个字符串数组。 22 23 length – 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。 24 25 toLowerCase() – 将整个字符串转成小写字母。 26 27 toUpperCase() – 将整个字符串转成大写字母。
7.变量的作用域
1 1、函数内部可以读取函数外部的全局变量;在函数外部无法读取函数内的局部变量。 2 3 2、函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量! 4 5 5、使用闭包的注意点 6 7 1)滥用闭包,会造成内存泄漏:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。 8 9 2)会改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。
8.null和undefined的区别 1 null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
2 3 当声明的变量还未被初始化时,变量的默认值为undefined。 null用来表示尚未存在的对象 4 5 undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是: 6 7 (1)变量被声明了,但没有赋值时,就等于undefined。 8 9 (2)调用函数时,应该提供的参数没有提供,该参数等于undefined。 10 11 (3)对象没有赋值的属性,该属性的值为undefined。 12 13 (4)函数没有返回值时,默认返回undefined。 14 15 null表示"没有对象",即该处不应该有值。典型用法是: 16 17 (1) 作为函数的参数,表示该函数的参数不是对象。 18 19 (2) 作为对象原型链的终点
9. javascript语言特性中,有很多方面和我们接触的其他编程语言不太一样,请举例
1 javascript语言实现继承机制的核心就是 2 1 (原型),而不是Java语言那样的类式继承。Javascript解析引擎在读取一个Object的属性的值时,会沿着 3 2 (原型链)向上寻找,如果最终没有找到,则该属性值为 4 3 undefined;如果最终找到该属性的值,则返回结果。与这个过程不同的是,当javascript解析引擎执行“给一个Object的某个属性赋值”的时候,如果当前Object存在该属性,则改写该属性的值,如果当前的Object本身并不存在该属性,则赋值该属性的值。
10.冒泡排序算法
1 var array = [5, 4, 3, 2, 1]; 2 var temp = 0; 3 for (var i = 0; i <array.length; i++){ 4 for (var j = 0; j <array.length - i; j++){ 5 if (array[j] > array[j + 1]){ 6 temp = array[j + 1]; 7 array[j + 1] = array[j]; 8 array[j] = temp; 9 } 10 } 11 }