前端相似知识点

来源:互联网 发布:全国计算机二级vb题型 编辑:程序博客网 时间:2024/05/18 03:23
HTML类1、标准模式(严格模式)与怪异模式(混杂模式)相同:浏览器对文档的解析模式区别:(1)标准模式是指浏览器按 W3C 标准解析执行代码;怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式;(2) 声明位于文档的最前面,决定浏览器解析时到底使用标准模式还是怪异模式,DTD 声明定义了标准文档的类型,会使浏览器使用标准模式解析网页,忽略 DTD 声明 , 将使网页进入怪异模式。CSS类1、overflow:scroll;与overflow:auto;相同:都用于产生滚动条区别:参数是scroll时候,必会出现滚动条。参数是auto时候,子元素内容大于父元素时出现滚动条。2、display:none;与visibility:hidden;相同:都能隐藏对应的元素,但隐藏的内容都可以用js获取区别:(1)display:none;会让元素从渲染树中消失,渲染的时候不占据任何空间;visibility:hidden;不会让元素从渲染树中消失,渲染的时候仍然占据空间,只是内容不可见。(2)display:none;改变了dom的结构,所以产生了reflow(回流,回流会引起重绘),而visibility:hidden;没有改变dom结构,只产生repaint(重绘)。 (3)display:none;是非继承属性,子孙节点消失是由于元素从渲染树中消失造成,通过设置display:inline-block|block;均不能让子孙节点显示;visibility:hidden;是继承属性,子孙节点消失是由于继承了hidden,通过设置visibility:visible;,可以让子孙节点显示。(4)读屏器不会读取display:none;的元素内容,而会读取visibility:hidden;的元素内容。3、border:0;与border:none;相同:边框不显示区别:border:0; 被解析为 border-width:0; 表示边框宽度为0。border:none; 被解析为 border-style:none; 表示边框样式无。(1)性能差异 在标准浏览器中,border:0;浏览器对border-width进行渲染,占用内存。border:none;浏览器不进行渲染,不占用内存。 因此border:0;比border:none;多渲染了一个border-width:0;也就是说border:none;的性能要比border:0;高。(2)浏览器兼容IE7不支持border:none; 为了少渲染border-width:0,和不占用内存,这里我们写一个兼容所有浏览器的最优写法:border:0 none;前面的0是针对ie6和ie7的兼容,后面的none是针对标准浏览器的。tips:请始终把border-style属性声明到border-color属性之前,元素必须在改变颜色之前获得边框。 4、IE(6)盒子模型与标准盒子模型相同:都包括 margin、border、padding、content(按照盒模型的图,我理解为这里的content指我们css里设置的width和height,而下面的width和height指内容的默认宽高)区别:标准盒子模型 = margin + border + padding + content (content = width | height)IE盒子模型 = margin + content (content = border + padding + width | height)5、伪元素与伪类相同:都用于给某些选择器添加特殊的效果区别:伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。下面罗列写常见的伪类与伪元素——伪类种类:伪类伪元素种类:伪元素tips:CSS3要求对伪元素使用两个冒号以便与伪类进行区别。但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。JS类1、obj.offsetHeight与obj.style.height $(obj).height()与$(obj).css('height')相同:都可以获取obj的高度区别:(1)obj.offsetHeight可以获取外部、内嵌和内联中定义的高,而obj.style.height只能获取内联中定义的高;(2)obj.offsetHeight返回的是一个数值,而obj.style.height返回的是一个字符串,单位是“px”;(3)obj.offsetHeight是只读,而obj.style.height是可读写;(4)如果没有为元素设置高度,obj.offsetHeight会根据内容获取高度值,而obj.style.height会返回undefind或 (空字符串);(5)$(obj).height()返回的是一个数值,而$(obj).css('height')返回的是一个字符串,单位是“px”。tips:与其他三个$(obj).height()、$(obj).css('height')、obj.style.height不同的是,obj.offsetHeight的高度就是height+padding,其他则不把padding计入高度。2、call()与apply()相同:call与aplly都属于Function.prototype的一个方法,每个function实例都有call、apply属性,call()、apply()可改变函数执行环境,从而改变this指向区别:两者传递的参数不同——apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,即func.apply(func1,[var1,var2,var3])。call传入的则是直接的参数列表,即func.call(func1,var1,var2,var3)。 call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。3、undefined与null相同:都表示“无”,都为false区别:(1) undefined是一个表示"无"的原始值,转为数值时为NaN,null是一个表示"无"的对象,转为数值时为0;(2) 当声明的变量还未被初始化时,变量的默认值为undefined,null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象;undefined表示 “缺少值”,就是此处应该有一个值,但是还没有定义。典型用法是:1. 变量被声明了,但没有赋值时,就等于 undefined2. 调用函数时,应该提供的参数没有提供,该参数等于 undefined3. 对象没有赋值的属性,该属性的值为 undefined4. 函数没有返回值时,默认返回 undefinednull表示“没有对象”,即该处不应该有值。典型用法是:1. 作为函数的参数,表示该函数的参数不是对象2. 作为对象原型链的终点 4、this与$(this)相同:一般情况下,this指向(就近)调用对象(除了call()、apply()等会转向,查阅了网上各种讨论,感觉实际上更复杂,暂且这么理解了。。。)区别:alert(this); 弹出来的是[object HTMLXXXElement] (XXX表示元素名)=>this表示的上下文对象是一个html的DOM对象,可以调用对象所拥有的属性;alert($(this)); 弹出的结果是[object Object ] =>$(this)表示一个jquery的上下文对象,可以调用jquery的方法和属性值。例如,当获取文本框值时,this.value;或者$(this).val();
0 0
原创粉丝点击