摘要:中的代碼中的代碼除外都可識別所有的可識別只有可以識別僅與可以識別以及以上版本都可以識別僅可識別以及以下版本可識別以及以上版本可識別僅可識別以及以下版本可識別以及以上版本可識別開發工具相關書籍前端性能與優化
Markdown語法說明:http://www.appinn.com/markdown/
1、前端碎片知識總結篇 1.1 關于瀏覽器IE的內核是Trident、Mozilla的內核是Gecko、Chrome的內核是Blink(Webkit的一個分支,谷歌和Opera合作推出)、Opera的內核是Blink(原內核是Presto,現已廢棄。)
1.2 jQuery中this與$(this)的區別是什么?$(#textbo.hover(){ function() { this.title = "Test"; }, fucntion() { this.title = "OK”; } })
這里的this其實是一個Html 元素(textbox),textbox有text屬性,所以這樣寫是完全沒有什么問題的。
但是如果將this換成$(this)就不是那回事了,Error–報了。this與$(this)的區別在此。
錯誤代碼:
//Error Code: $("#textbox").hover( function() { $(this).title = "Test"; }, function() { $(this).title = "OK"; } );
這里的$(this)是一個JQuery對象,而jQuery對象沒有title 屬性,因此這樣寫是錯誤的。
JQuery擁有attr()方法可以get/set DOM對象的屬性,所以正確的寫法應該是這樣:
$("#textbox").hover( function() { $(this).attr(’title’, ‘Test’); }, function() { $(this).attr(’title’, ‘OK’); } );1.3 有關于閉包的理解。
請看下面一段代碼:
(function(x){ return function(y){ return function(z){ alert(123); return x+y+z;//結果彈出123,并返回6 } } }(1)(2)(3));
這就是一個典型的閉包
定義匿名函數后立刻執行,并且不會引起window屬性的變化,例如:
for (var i=0; i<10; i++) { alert(window.i); // window.i=10 }
換成匿名函數調用,如下代碼:
(function(){ for (var i=0; i<10; i++) {} alert(window.i); // window.i = undefined })();
這樣子就不會引起window屬性的增加。
1.4 Jquery 中文Api 地址:http://jquery.org.cn/jqapi
1.5 查詢字符串參數/*************************************** ***********查詢字符串參數**************** ***************************************/ function getQueryStringArgs(){ //取得查詢字符串并去掉開頭的問號 var gs = (location.search.length > 0 ?location.search.substring(1) : ""), //substring(start,stop) 查詢字符串介于兩個指定下標之間的字符 //保存數據的對象 args = {}, //取得每一項 items = gs.length ? gs.split("&") : [],//split("&") 將字符串分隔成字符串數組 item = null, name = null, value = null, //for循環中使用 i = 0, len = items.length; //逐個將每一項添加到args對象中去 for (i=0; i1.6 居中顯示的一些方法 1.6.1 寬高固定的盒子居中
結構:
樣式:
/*寬高固定 居中顯示核心代碼*/ .sl-hvalign{position:relative} .sl-hvslign-inner { width: 530px; height: 320px; position: absolute; top: 50%; left: 50%; margin: -160px 0 0 -265px; /* 向上偏移高度1/2 向左偏移寬度1/2 */ }也可以使用 transform 偏移,樣式:
.sl-hvslign-inner{ transform: translate(-50%, -50%); }因為使用百分比值定位,參考點在盒子的中心。
寬高未知的情況下,由此方法可延伸,使用javascript動態獲取。1.6.2 模板化居中顯示:(以下方法可供模板化的CSS class)
結構:
<--! you Code... -->樣式:
.sl-hvalign{ display:table; overflow:hidden; margin:0 auto; height:100%; *position:relative } .sl-hvalign-cnt{ dispaly:table-cell; vertical-align:middle; *position:absolute; top:50% } .sl-hvalign-cnt-inner{ *position:absolute; *top:-50% }來自:餓了么前端工程師 sofish
1.7 《javascript 高級程序設計》的一些代碼/*************************************** ***********查詢字符串參數**************** ***************************************/ function getQueryStringArgs(){ //取得查詢字符串并去掉開頭的問號 var gs = (location.search.length > 0 ?location.search.substring(1) : ""), //substring(start,stop) 查詢字符串介于兩個指定下標之間的字符 //保存數據的對象 args = {}, //取得每一項 items = gs.length ? gs.split("&") : [],//split("&") 將字符串分隔成字符串數組 item = null, name = null, value = null, //for循環中使用 i = 0, len = items.length; //逐個將每一項添加到args對象中去 for (i=0; i2 關于移動Web開發: 2.1 關于PPI PPI全稱為Pixel Per Inch,譯為每英寸像素取值,更確切的說法應該是像素密度,也就是衡量單位物理面積內擁有像素值的情況。PPI中的pixel指的應該是物理像素。
2.2 webkit內核中的一些私有的meta標簽
顯示器上的像素我們就稱之為物理像素(physical pixel)或者設備像素(device pixel)。
CSS像素從來都只是一個相對值。在高PPI的設備上,CSS像素甚至在默認狀態下就相當于多個物理像素的尺寸。2.3 CSS基礎交互設置全局的CSS樣式,避免圖中的長按彈出菜單與選中文本的行為
69b05e0ajw1evlphajoosj20hs0qoadd.jpg代碼如下:
a, img { -webkit-touch-callout: none; /* 禁止長按鏈接與圖片彈出菜單 */ } html, body { -webkit-user-select: none; /* 禁止選中文本(如無文本選中需求,此為必選項) */ user-select: none; } img { vertical-align:bottom; /* 解決移動端圖片的父元素高度多出3.5px */ }3 關于前端兼容性的儲備 3.1 一句話儲備:瀏覽器默認的margin值和padding值等不統一樣式,可以使用重置樣式,如*{margin:0;*padding:0;}
PNG24位圖片在IE6瀏覽器上出現背景,可使用PNG8位來替代,或使用成熟js濾鏡方案。
IE6元素在浮動后產生雙邊距問題,在浮動后添加 _display:inline,使該元素轉換成行內元素。
3.2 css中的hack代碼
.hack { background-color:red