248
248
249
249
浮动ie产生的双倍距离 #box{ float:left; width:10px; margin:0 0 0 100px;}
250
250
251
- 这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
251
+ 这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。
252
+ (_ 这个符号只有ie6会识别)
252
253
253
254
渐进识别的方式,从总体中逐渐排除局部。
254
255
@@ -331,12 +332,12 @@ HTML5?
331
332
332
333
- (写)描述一段语义的html代码吧。
333
334
334
- (HTML5中新增加的很多标签(如:<article>、<nav>、<header>和<footer>等)
335
- 就是基于语义化设计原则)
336
- < div id="header">
337
- < h1>标题< /h1>
338
- < h2>专注Web前端技术< /h2>
339
- < /div>
335
+ (HTML5中新增加的很多标签(如:<article>、<nav>、<header>和<footer>等)
336
+ 就是基于语义化设计原则)
337
+ < div id="header">
338
+ < h1>标题< /h1>
339
+ < h2>专注Web前端技术< /h2>
340
+ < /div>
340
341
341
342
342
343
- iframe有那些缺点?
@@ -476,7 +477,8 @@ HTML5?
476
477
*最简单的初始化方法就是: * {padding: 0; margin: 0;} (不建议)
477
478
478
479
淘宝的样式初始化:
479
- body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
480
+ body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt,
481
+ dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
480
482
body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
481
483
h1, h2, h3, h4, h5, h6{ font-size:100%; }
482
484
address, cite, dfn, em, var { font-style:normal; }
@@ -551,83 +553,83 @@ HTML5?
551
553
552
554
- 写一个通用的事件侦听器函数。
553
555
554
- // event(事件)工具集,来源:github.com/markyun
555
- markyun.Event = {
556
- // 页面加载完成后
557
- readyEvent : function(fn) {
558
- if (fn==null) {
559
- fn=document;
560
- }
561
- var oldonload = window.onload;
562
- if (typeof window.onload != 'function') {
563
- window.onload = fn;
564
- } else {
565
- window.onload = function() {
566
- oldonload();
567
- fn();
568
- };
569
- }
570
- },
571
- // 视能力分别使用dom0||dom2||IE方式 来绑定事件
572
- // 参数: 操作的元素,事件名称 ,事件处理程序
573
- addEvent : function(element, type, handler) {
574
- if (element.addEventListener) {
575
- //事件类型、需要执行的函数、是否捕捉
576
- element.addEventListener(type, handler, false);
577
- } else if (element.attachEvent) {
578
- element.attachEvent('on' + type, function() {
579
- handler.call(element);
580
- });
581
- } else {
582
- element['on' + type] = handler;
583
- }
584
- },
585
- // 移除事件
586
- removeEvent : function(element, type, handler) {
587
- if (element.removeEnentListener) {
588
- element.removeEnentListener(type, handler, false);
589
- } else if (element.datachEvent) {
590
- element.detachEvent('on' + type, handler);
591
- } else {
592
- element['on' + type] = null;
593
- }
594
- },
595
- // 阻止事件 (主要是事件冒泡,因为IE不支持事件捕获)
596
- stopPropagation : function(ev) {
597
- if (ev.stopPropagation) {
598
- ev.stopPropagation();
599
- } else {
600
- ev.cancelBubble = true;
601
- }
602
- },
603
- // 取消事件的默认行为
604
- preventDefault : function(event) {
605
- if (event.preventDefault) {
606
- event.preventDefault();
607
- } else {
608
- event.returnValue = false;
609
- }
610
- },
611
- // 获取事件目标
612
- getTarget : function(event) {
613
- return event.target || event.srcElement;
614
- },
615
- // 获取event对象的引用,取到事件的所有信息,确保随时能使用event;
616
- getEvent : function(e) {
617
- var ev = e || window.event;
618
- if (!ev) {
619
- var c = this.getEvent.caller;
620
- while (c) {
621
- ev = c.arguments[0];
622
- if (ev && Event == ev.constructor) {
623
- break;
624
- }
625
- c = c.caller;
556
+ // event(事件)工具集,来源:github.com/markyun
557
+ markyun.Event = {
558
+ // 页面加载完成后
559
+ readyEvent : function(fn) {
560
+ if (fn==null) {
561
+ fn=document;
562
+ }
563
+ var oldonload = window.onload;
564
+ if (typeof window.onload != 'function') {
565
+ window.onload = fn;
566
+ } else {
567
+ window.onload = function() {
568
+ oldonload();
569
+ fn();
570
+ };
571
+ }
572
+ },
573
+ // 视能力分别使用dom0||dom2||IE方式 来绑定事件
574
+ // 参数: 操作的元素,事件名称 ,事件处理程序
575
+ addEvent : function(element, type, handler) {
576
+ if (element.addEventListener) {
577
+ //事件类型、需要执行的函数、是否捕捉
578
+ element.addEventListener(type, handler, false);
579
+ } else if (element.attachEvent) {
580
+ element.attachEvent('on' + type, function() {
581
+ handler.call(element);
582
+ });
583
+ } else {
584
+ element['on' + type] = handler;
585
+ }
586
+ },
587
+ // 移除事件
588
+ removeEvent : function(element, type, handler) {
589
+ if (element.removeEnentListener) {
590
+ element.removeEnentListener(type, handler, false);
591
+ } else if (element.datachEvent) {
592
+ element.detachEvent('on' + type, handler);
593
+ } else {
594
+ element['on' + type] = null;
595
+ }
596
+ },
597
+ // 阻止事件 (主要是事件冒泡,因为IE不支持事件捕获)
598
+ stopPropagation : function(ev) {
599
+ if (ev.stopPropagation) {
600
+ ev.stopPropagation();
601
+ } else {
602
+ ev.cancelBubble = true;
603
+ }
604
+ },
605
+ // 取消事件的默认行为
606
+ preventDefault : function(event) {
607
+ if (event.preventDefault) {
608
+ event.preventDefault();
609
+ } else {
610
+ event.returnValue = false;
611
+ }
612
+ },
613
+ // 获取事件目标
614
+ getTarget : function(event) {
615
+ return event.target || event.srcElement;
616
+ },
617
+ // 获取event对象的引用,取到事件的所有信息,确保随时能使用event;
618
+ getEvent : function(e) {
619
+ var ev = e || window.event;
620
+ if (!ev) {
621
+ var c = this.getEvent.caller;
622
+ while (c) {
623
+ ev = c.arguments[0];
624
+ if (ev && Event == ev.constructor) {
625
+ break;
626
626
}
627
+ c = c.caller;
627
628
}
628
- return ev;
629
629
}
630
- };
630
+ return ev;
631
+ }
632
+ };
631
633
632
634
633
635
@@ -659,10 +661,10 @@ HTML5?
659
661
- 谈谈This对象的理解。
660
662
661
663
this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。
662
-
663
- 但是有一个总原则,那就是this指的是调用函数的那个对象。
664
664
665
- this一般情况下:是全局对象Global。 作为方法调用,那么this就是指这个对象
665
+ 但是有一个总原则,那就是this指的是调用函数的那个对象。
666
+
667
+ this一般情况下:是全局对象Global。 作为方法调用,那么this就是指这个对象
666
668
667
669
- 事件是?IE与火狐的事件机制有什么区别? 如何阻止冒泡?
668
670
@@ -673,7 +675,9 @@ HTML5?
673
675
- 什么是闭包(closure),为什么要用它?
674
676
675
677
676
- 执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在.使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源,因为say667()的内部函数的执行需要依赖say667()中的变量。这是对闭包作用的非常直白的描述.
678
+ 执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在.
679
+ 使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源,
680
+ 因为say667()的内部函数的执行需要依赖say667()中的变量。这是对闭包作用的非常直白的描述.
677
681
678
682
function say667() {
679
683
// Local variable that ends up within closure
@@ -836,7 +840,10 @@ jQuery中没有提供这个功能,所以你需要先编写两个jQuery的扩
836
840
837
841
838
842
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
839
- 垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
843
+
844
+ 垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。
845
+ 如果一个对象的引用数量为 0(没有其他对象引用过该对象),
846
+ 或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
840
847
841
848
setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
842
849
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
@@ -1034,3 +1041,4 @@ jQuery中没有提供这个功能,所以你需要先编写两个jQuery的扩
1034
1041
1035
1042
1036
1043
1044
+ 我的个人主页(http://www.wenjie.info)
0 commit comments