亚洲精品无码久久久久sm,亚洲人成电影网站色www,亚洲av无码片在线播放http://www.tkk7.com/Hafeyang/category/38429.html前端來源于不斷的點滴積累。我一直在努力。zh-cnThu, 31 Oct 2013 23:30:16 GMTThu, 31 Oct 2013 23:30:16 GMT60sublime text 2 (四) Emmet(之前叫Zencoding)的安裝以及新特征http://www.tkk7.com/Hafeyang/archive/2013/01/19/emmet_fomer_zencoding_in_sublime_text_2.html衡鋒衡鋒Sat, 19 Jan 2013 13:06:00 GMThttp://www.tkk7.com/Hafeyang/archive/2013/01/19/emmet_fomer_zencoding_in_sublime_text_2.htmlhttp://www.tkk7.com/Hafeyang/comments/394449.htmlhttp://www.tkk7.com/Hafeyang/archive/2013/01/19/emmet_fomer_zencoding_in_sublime_text_2.html#Feedback10http://www.tkk7.com/Hafeyang/comments/commentRss/394449.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/394449.html閱讀全文

衡鋒 2013-01-19 21:06 發表評論
]]>
smartcomb:用php實現的web模塊拼合器http://www.tkk7.com/Hafeyang/archive/2013/01/05/powerful_web_module_combination_tool_smartcomb.html衡鋒衡鋒Sat, 05 Jan 2013 06:47:00 GMThttp://www.tkk7.com/Hafeyang/archive/2013/01/05/powerful_web_module_combination_tool_smartcomb.htmlhttp://www.tkk7.com/Hafeyang/comments/393817.htmlhttp://www.tkk7.com/Hafeyang/archive/2013/01/05/powerful_web_module_combination_tool_smartcomb.html#Feedback0http://www.tkk7.com/Hafeyang/comments/commentRss/393817.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/393817.html閱讀全文

衡鋒 2013-01-05 14:47 發表評論
]]>
knockoutjs中使用10綁定checkboxhttp://www.tkk7.com/Hafeyang/archive/2012/12/12/using_knockoutjs_custom_binding_to_bind_10_to_checkbox.html衡鋒衡鋒Wed, 12 Dec 2012 09:14:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/12/12/using_knockoutjs_custom_binding_to_bind_10_to_checkbox.htmlhttp://www.tkk7.com/Hafeyang/comments/392886.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/12/12/using_knockoutjs_custom_binding_to_bind_10_to_checkbox.html#Feedback0http://www.tkk7.com/Hafeyang/comments/commentRss/392886.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/392886.html閱讀全文

衡鋒 2012-12-12 17:14 發表評論
]]>
基于raphaeljs的web圖實現-rgraph2http://www.tkk7.com/Hafeyang/archive/2012/12/11/rgraph2_an_graph_implementation_by_raphaeljs.html衡鋒衡鋒Tue, 11 Dec 2012 12:08:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/12/11/rgraph2_an_graph_implementation_by_raphaeljs.htmlhttp://www.tkk7.com/Hafeyang/comments/392832.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/12/11/rgraph2_an_graph_implementation_by_raphaeljs.html#Feedback0http://www.tkk7.com/Hafeyang/comments/commentRss/392832.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/392832.html閱讀全文

衡鋒 2012-12-11 20:08 發表評論
]]>
強大的管理web包管理工具-bowerhttp://www.tkk7.com/Hafeyang/archive/2012/12/11/an_introduction_of_powerfull_web_package_mange_tool_named_bower.html衡鋒衡鋒Tue, 11 Dec 2012 12:01:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/12/11/an_introduction_of_powerfull_web_package_mange_tool_named_bower.htmlhttp://www.tkk7.com/Hafeyang/comments/392831.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/12/11/an_introduction_of_powerfull_web_package_mange_tool_named_bower.html#Feedback1http://www.tkk7.com/Hafeyang/comments/commentRss/392831.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/392831.html閱讀全文

衡鋒 2012-12-11 20:01 發表評論
]]>
underscore中的function類函數解析http://www.tkk7.com/Hafeyang/archive/2012/11/08/undercore_function_uitlity.html衡鋒衡鋒Thu, 08 Nov 2012 05:14:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/11/08/undercore_function_uitlity.htmlhttp://www.tkk7.com/Hafeyang/comments/390932.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/11/08/undercore_function_uitlity.html#Feedback2http://www.tkk7.com/Hafeyang/comments/commentRss/390932.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/390932.html閱讀全文

衡鋒 2012-11-08 13:14 發表評論
]]>
sublime text 2 (三) 在sublime text 2 中寫coffeescripthttp://www.tkk7.com/Hafeyang/archive/2012/10/25/using_sublime_text_2_coffeescript_plugin_in_windows.html衡鋒衡鋒Thu, 25 Oct 2012 15:56:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/10/25/using_sublime_text_2_coffeescript_plugin_in_windows.htmlhttp://www.tkk7.com/Hafeyang/comments/390243.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/10/25/using_sublime_text_2_coffeescript_plugin_in_windows.html#Feedback3http://www.tkk7.com/Hafeyang/comments/commentRss/390243.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/390243.html閱讀全文

衡鋒 2012-10-25 23:56 發表評論
]]>
兼容AMD,nodejs/commonjs規范的模塊定義-讀knockoutjs源碼http://www.tkk7.com/Hafeyang/archive/2012/08/18/compatibility_with_AMD_and_commonjs_module_definition_exaction_of_knockoutjs_sourcecode.html衡鋒衡鋒Sat, 18 Aug 2012 08:51:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/08/18/compatibility_with_AMD_and_commonjs_module_definition_exaction_of_knockoutjs_sourcecode.htmlhttp://www.tkk7.com/Hafeyang/comments/385734.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/08/18/compatibility_with_AMD_and_commonjs_module_definition_exaction_of_knockoutjs_sourcecode.html#Feedback1http://www.tkk7.com/Hafeyang/comments/commentRss/385734.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/385734.html從knockoutjs源碼中讀到了一個很好的能兼容AMD,commonjs規范的模塊定義。看代碼
/閉包執行一個立即定義的匿名函數
!function(factory) {

    
//factory是一個函數,下面的koExports就是他的參數

    
// Support three module loading scenarios
    if (typeof require === 'function&& typeof exports === 'object' && typeof module === 'object') {
        
// [1] CommonJS/Node.js
        // [1] 支持在module.exports.abc,或者直接exports.abc
        var target = module['exports'] || exports; // module.exports is for Node.js
        factory(target);
    } 
else if (typeof define === 'function&& define['amd']) {
        
// [2] AMD anonymous module
        // [2] AMD 規范 
        //define(['exports'],function(exports){
           //    exports.abc = function(){}
        //});
        define(['exports'], factory);
    } 
else {
        
// [3] No module loader (plain <script> tag) - put directly in global namespace
        factory(window['ko'] = {});
    }
}(
function(koExports){

    
//ko的全局定義 koExports是undefined 對應著上面的[3] 這種情況
    var ko = typeof koExports !== 'undefined' ? koExports : {};

    
//定義一個ko的方法
    ko.abc = function(s){
        alert(s);
    }
});

//[3]中情況的調用
ko.abc("msg");

非常巧妙的閉包實現了。三種方式的兼容。摘出來mark一下。







衡鋒 2012-08-18 16:51 發表評論
]]>
sublime text 2學習(二):創建可復用的代碼片段http://www.tkk7.com/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_text_2.html衡鋒衡鋒Fri, 17 Aug 2012 05:30:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_text_2.htmlhttp://www.tkk7.com/Hafeyang/comments/385686.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_text_2.html#Feedback3http://www.tkk7.com/Hafeyang/comments/commentRss/385686.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/385686.html對于前端工程師來講,寫一個html頁面的基本結構是體力活,每次去拷貝一個也麻煩,sublime text 2 提供了一個很好的復用代碼片段。下面介紹一下創建一個html5的代碼片段的過程。

在菜單上點擊Tools -> New Snippet,會新建一個xml文件頁簽:
<snippet>
    
<content><![CDATA[
Hello, ${1:this} is a ${2:snippet}.
]]></content>
    
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    
<!-- <tabTrigger>hello</tabTrigger> -->
    
<!-- Optional: Set a scope to limit where the snippet will trigger -->
    
<!-- <scope>source.python</scope> -->
</snippet>

注釋已經說的比較詳細了。

content 里面就是代碼模版:${序號:默認值} ,序號相同的地方光標會同時停在那可以多處同時編輯。序號大小就是tabindex。在實際使用代碼的時候,可以使用tab切換光標位置。

tabTrigger是指輸入該字符串后tab就是在光標插入content中的內容。

scope是指在何種文件類型中使用。

下面是html5代碼片段的定義:

<snippet>
    
<content><![CDATA[
<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>${1}</title> 
</head>
<body>
    <h1>${1}</h1>
    Hello, ${2:this} is a ${3:snippet}.
</body>
</html>
]]></content>
    
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    
<tabTrigger>html5</tabTrigger>
    
<!-- Optional: Set a scope to limit where the snippet will trigger -->
    
<!-- <scope>source.python</scope> -->
</snippet>

編輯完之后保存為 C:\Users\[用戶]\AppData\Roaming\Sublime Text 2\Packages\User\html5.sublime-snippet  (Win7下) 默認的保存路徑就行。后綴必須是.sublime-snippet。

保存完重啟Sublime text 2,新建文件:輸入html5,tab會出現如下效果:



${1}出現了兩次,所以光標同時編輯圖中兩處。
${2:this},所以在2處出現this默認值。${1}處編輯完按tab就到${2}處。

OK, That's all。









衡鋒 2012-08-17 13:30 發表評論
]]>
sublime text 2 學習(一):快捷鍵,小技巧for前端工程師(持續更新)http://www.tkk7.com/Hafeyang/archive/2012/08/09/sublime_text_2_short_key_and_trick_for_frontend_engineer.html衡鋒衡鋒Thu, 09 Aug 2012 05:22:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/08/09/sublime_text_2_short_key_and_trick_for_frontend_engineer.htmlhttp://www.tkk7.com/Hafeyang/comments/384754.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/08/09/sublime_text_2_short_key_and_trick_for_frontend_engineer.html#Feedback5http://www.tkk7.com/Hafeyang/comments/commentRss/384754.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/384754.html
Ctrl+W 關閉當前頁簽,很通用。
Ctrl+Shift+W關閉所有頁簽,估計能猜到。

Ctrl+Shift+v 粘貼并且格式化,比較實用。

Ctrl+[ 減少縮進
Ctrl+] 增加縮進

Ctrl+k,Ctrl+u 先按Ctrl+K,再按Ctrl+U,大寫,這有點不習慣
Ctrl+k,Ctrl+l 小寫

ctrl+left,ctrl+right 先左/右移動一個單詞,VI中的W,B

Ctrl+Shift+up ,當前上上移一行,跟Eclipse一樣
Ctrl+Shift+down,不說了

Ctrl+Shift+K 刪除當前選中行,后來發現Ctrl+X也可以,Eclipse里面的Ctrl+D。
Ctrl+Shift+D 復制當前選中行,程序員的摯愛
Ctrl+D 是高亮光標所在詞,類似VIM中的#

Ctrl+M 到匹配的{[( 與vim 中的%一致
Ctrl+Shift+M 可以選中{[(內容,類似vim中的va( vi{

Ctrl+J join rows 合并選中行
Ctrl+Shift+J 打散行

Ctrl+Shift+T 旋轉功能這個標簽內容 vim中的vat
Ctrl+shift+a 選中匹配的標簽

Ctrl+T 可以選中多行,然后講這些行順序反轉。如果沒有選中多行,會講光標前后的字母換順序。

雙擊選中一個單詞,Ctrl+F3跳至下一個匹配處,F3上一個匹配處。

F11,我最喜歡的全屏快捷鍵。
Shift+F11更狠,只編輯當前的文件。免打擾模式。兩耳清靜。

alt+. 如果輸入<div> 然后alt+. 可以自動完成這個tag,變成<div></div>

Ctrl+/ Ctrl+Shift+/ 注釋/取消注釋,各種語言都行。

一個小技巧:選中一個單詞如abc ,然后輸入" 這樣 會變成"abc",同理還可以用( { [ '

Ctrl+shift+P 調出一個功能列表,可以探索一些好玩的功能,比如我找到了這個功能:HTML:Encoding Special Characters。選中 & 運行一下可以變成 &amp;

Ctrl+P 會調出一個對話框框,下拉選項中有當前打開的文件,可以切換,文本框非常強大,輸入@funcName 可以直接到函數定義處,輸入#key 可以直接查找,輸入:行數可以直接到某行,也可以用快捷鍵Ctrl+g

安裝了ZenCoding之后可以使用的快捷鍵: 安裝教程

Ctrl+alt+Enter,zencoding開始了
alt+shift+W 環繞選中內容


官方文檔中有快捷鍵列表:http://docs.sublimetext.info/en/latest/reference/keyboard_shortcuts_win.html







衡鋒 2012-08-09 13:22 發表評論
]]>
談談前端組件庫http://www.tkk7.com/Hafeyang/archive/2012/08/01/how_to_build_frontend_component_lib.html衡鋒衡鋒Tue, 31 Jul 2012 17:19:00 GMThttp://www.tkk7.com/Hafeyang/archive/2012/08/01/how_to_build_frontend_component_lib.htmlhttp://www.tkk7.com/Hafeyang/comments/384477.htmlhttp://www.tkk7.com/Hafeyang/archive/2012/08/01/how_to_build_frontend_component_lib.html#Feedback0http://www.tkk7.com/Hafeyang/comments/commentRss/384477.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/384477.html
1.基礎庫:

注意是庫,不是框架,基礎庫通常提供底層方法,它必須能夠屏蔽瀏覽器/終端的API差異。也許大家腦子里面會彈出一堆前端熱門的一些庫。在此不討論哪個庫哪個庫怎么樣,一個基礎庫必須提供的功能:
  • 基本類型的常見擴展:原生的javascript對象API往往在現實中不夠用,比如常見的Array.indexOf/remove/each,Date.parse/format,不管是怎么封裝都需要這類方法
  • DOM操作常見方法:DOM節點增刪改查,CSS selector,DOMReady,contains,add/remove/toggleClass,屏蔽瀏覽器之間的操作差異。不多說,人人都熟。
  • 一套瀏覽器檢測機制:以前大家都傾向于做瀏覽器類型和版本的檢測,現在傾向于做瀏覽器的特性檢測,這樣更有實際用處。
  • Ajax的封裝,對于組件庫來講可無。畢竟組件庫本身的實現不太會用得上Ajax。

2.事件機制:

addEventListener/removeEventListener/dispatchEvent 是常見的封裝方式,不應該只是DOM事件,而是任何對象都可以做一個事件機制。
對于DOM事件的封裝需要屏蔽IE/標準Event的差異提供為用戶使用,事件代理非常重要,不可小視。
  • 事件機制都無一例外的是基于第三方觀察者或者叫做沙箱(Sandbox)實現。
  • 事件機制更深的功能是提供一個模塊的通信機制。
  • 對于組件庫,組件實例之間的通信更加重要,組件實例之間最好不要存在相互引用的關系,互相不能感知對方的存在,有了事件機制,可以通過第三方有效的通知組件實例,減少組件實例間的耦合。

3.模板機制:

實際上寫組件的時候,拼裝html是一件很復雜的事情,模塊能夠從數據模型,對于組件庫來講通常是配置信息選項。將這些選項拼裝成html字符串。但是大家普遍的一個誤區是在追求語法的簡便的和性能。我倒覺得模板要做的事情遠不止如此。功能強大的模板不僅僅只完成字符串的拼接,而是要簡化整個DOM操作,從數據模型到DOM的雙向綁定,Model更新了DOM也隨之更新。甚至要解決動態DOM事件綁定的問題。


4.面向對象的機制

放在組件庫這個角度去談面向對象的時候,他是一個架構設計中的一個重要的一環。
面向對象的機制能有效的提升代碼的可復用性和擴展性,javascript靈活的語法諸如prototype/closure的方式,能構建出一個強大的類庫。
可以使用繼承機制擴展已有的組件。也可以用引用的方式裝飾(Facade)現有組件,個人更傾向于使用裝飾。因為繼承總會不可避免的直接或者間接去訪問父類的一些私有屬性方法。
這個機制其實決定了一個組件的代碼模型,通常需要解決的問題有:
  • 該組件繼承自哪些組件或者基礎類,或者依賴于那些類?
  • 組件實例的管理方式,因為每個組件實例都需要在一個容器中統一存放,理想的的存放模型應該是樹形的,在內存中存在類似DOM樹一樣的組件對象樹,是否可以通過類名找到相關實例,根據ID獲取實例,獲取子實例,父實例,父/子實例之間的通信父實例的resize是否能通知容器內的實例resize。
  • 插件機制:作為一個非常重要的擴展機制,插件能有效的解決組件間的復用部分,通常這部分會叫做行為(behavior),對于組件不能提供的甚至是個性化的功能,有沒有提供有效的,足夠多的擴展點。
  • 提供怎樣的實例化方式? new XXX() ?? 還是類似DOM的操作方式appendInstance??甚至有類似jq這種鏈式。我更覺得應該使用appendInstance的方式,這樣能更加有效的體現組件示例間的父/子關系。就像DOM操作一樣,最終組件實例也是樹形結構,如果我們直接new XXX() 這種方式,其實相當于聲明了一個游離態的 DOM節點。實際我寫代碼的時候發現要管理這些組件實例也是比較麻煩的地方,試想一個頁面如果有多個組件實例,需要聲明多少個實例變量,或者申明多少個對象去存放這些實例。
  • 組件提供的API,一個組件對外暴露的API會包括初始構造方法,公共方法(method),事件(event),對于event,提供怎樣的eventData也非常重要。

5.模塊化機制

如今模塊化的思想已經深入人心,模塊化帶來了很好的團隊多人完成一項大的任務的可能性,符合高內聚低耦合的思想。到了如今這個時代,萬物皆模塊。
組件庫通常是一個龐大的工程,單靠個人英雄主義很難做的完整全面。
詳細的來講,模塊化機制涉及:

  • 模塊本身的定義,注冊,直接影響一個組件的代碼模型,一個組件是一個模塊。
  • 模塊的依賴申明以及追朔機制:就像前面提到的,依賴于那些類,css文件,資源,數據。不僅僅需要聲明,還應該可追朔,依賴的父類,也能找到父類本身所依賴的資源,這樣為按需部署打包,在線調試提供居多方便。
  • 加載機制:因為在開發階段要么放一個整個組件庫代碼,要么是通過一個加載器按需加載,到了線上希望只部署引用到了模塊組件,這樣可以減少實際部署的文件大小。加載機制會涉及到瀏覽器的javascript/css文件的加載,尤其是需要盡可能的并行下載而且按照依賴關系先后執行。包括應用模塊,可以方便的通過這種加載機制延遲,按需,按時的加載到頁面中。
  • 打包部署機制:由于依賴可追朔,這樣實際項目中用到的那些組件可以分析出來,最終可以根據實際使用到的情況打包出適合大小的組件庫,減小冗余包的存在。
  • 模塊間的通信機制,由于模塊減輕耦合甚至是獨自孤立存在,組件之間的通信就非常重要,比如通常一個頁面上面的菜單組件實例點擊需要觸發下面組件的更新。如果直接監聽菜單事件去更新下面的組件,也許菜單是每個頁面都有。但是下面的組件不是每個頁面都有,這樣的事件監聽就顯然耦合較重,互相依賴對方的存在。如果菜單點擊這是告訴第三方我被點擊了。下面的組件只去監聽第三方的事件,這樣的代碼思路明顯要好過很多。
需要再次強調的是萬物皆模塊,這意味著通用組件本身實現是一個模塊,實際應用場景中的業務模塊也是模塊,都需要遵守模塊的約定。

6.前端的基本開發思想

取決于個人經驗:比如MVC的思想在組件實現過程中非常重要,Model通常是構造函數中那一堆配置信息,View通常是需要通過Model提供數據用戶呈現,實際上View上的操作的相應都需要Model來記住狀態。Controller用于操作二者。原理大家都知道,在開發中怎樣分清三者界限。保證思路清晰。

前端中javascript/css/html的角色也類似與MVC。下面的一些代碼方式就有違MVC的一些思想:
  • css Expression:不僅IE only,更重要是CSS中寫javascript這個風格不對,難以維護。
  • javascript直接修改style.xxx='xx'。能寫成css class的最好都寫成css class。
  • html中直接寫onxxx="foo()",沒有人能保證foo方法存在不被修改。

7.其他需要考慮的問題:
  • 測試用例:通用組件庫是一個龐大的工程,也許牽一發動全身,不知道哪個API的變動會影響多少調用者,有充足的單側用例,一定程度上能保證整個組件庫的穩定性。
  • 粒度:粒度是一個很值得思考的問題,其實html的標簽可以當做是一個小的組件,只是因為粒度很小,要完成一個復雜的應用,有很多的可復用組件都需要用到大片大片的重復html片段。另外一個極端,我們我們把整個頁面都寫成一個組件,顯然沒有復用性,跟沒封裝一樣。所以選擇一個合適的組件粒度,一個組件完成特定的功能,有利于搭建出有想象力的應用。
  • 一致性:需要有很好的代碼規范和約定。才能保證API的一致性,用戶也會理所當然的想到怎樣用API,降低學習成本,一個最常見的例子就事件監聽的參數,建議統一為(eventObject,eventData)。
  • 文檔&Demo:這個不用多說,沒有文檔和demo的東西沒有人去看代碼怎么使用。
  • 性能:DOM操作是組件庫的性能殺手,高效的DOM操作尤其重要,事件監聽也是非常耗時的,建議能采用代理的都用父節點來代理。
  • 資源釋放:組件的資源,引用是否能完全釋放?尤其是開發SPA,組件的資源內存釋放就非常重要了。

總結:
零零星星的提到了這么幾點,也是過去工作中的體會,當然會有不足,望大家補充,回頭可以check一下現在用到的一些框架/組件。歡迎討論。

衡鋒 2012-08-01 01:19 發表評論
]]>
如何判斷link標簽css文件加載完畢http://www.tkk7.com/Hafeyang/archive/2011/10/08/how_to_assert_dynamic_css_file_loaded.html衡鋒衡鋒Sat, 08 Oct 2011 03:44:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/10/08/how_to_assert_dynamic_css_file_loaded.htmlhttp://www.tkk7.com/Hafeyang/comments/360183.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/10/08/how_to_assert_dynamic_css_file_loaded.html#Feedback5http://www.tkk7.com/Hafeyang/comments/commentRss/360183.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/360183.html閱讀全文

衡鋒 2011-10-08 11:44 發表評論
]]>
使用css3畫"靜音"iconhttp://www.tkk7.com/Hafeyang/archive/2011/09/14/pure_css_mute_icon.html衡鋒衡鋒Tue, 13 Sep 2011 16:19:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/09/14/pure_css_mute_icon.htmlhttp://www.tkk7.com/Hafeyang/comments/358571.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/09/14/pure_css_mute_icon.html#Feedback2http://www.tkk7.com/Hafeyang/comments/commentRss/358571.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/358571.html閱讀全文

衡鋒 2011-09-14 00:19 發表評論
]]>
去掉頁面滾動條的兩種方法http://www.tkk7.com/Hafeyang/archive/2011/07/13/354232.html衡鋒衡鋒Wed, 13 Jul 2011 02:31:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/07/13/354232.htmlhttp://www.tkk7.com/Hafeyang/comments/354232.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/07/13/354232.html#Feedback1http://www.tkk7.com/Hafeyang/comments/commentRss/354232.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/354232.html閱讀全文

衡鋒 2011-07-13 10:31 發表評論
]]>
mark:webkit表格設置css table-layout:fixed的bughttp://www.tkk7.com/Hafeyang/archive/2011/06/30/table-layout-fixed-bug-in-webkit.html衡鋒衡鋒Thu, 30 Jun 2011 10:39:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/06/30/table-layout-fixed-bug-in-webkit.htmlhttp://www.tkk7.com/Hafeyang/comments/353455.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/06/30/table-layout-fixed-bug-in-webkit.html#Feedback1http://www.tkk7.com/Hafeyang/comments/commentRss/353455.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/353455.html通常使用table-layout:fixed用在表格上來使表格能準確的設置寬度。常見的例子莫過于
    <style type="text/css">
        table
{table-layout:fixed; border-collapse:collapse;border:1px solid #000; border-width:1px 0px 0px 1px;width:200px;}
         td
{text-align:left;overflow:hidden;padding:0px;margin:0px;white-space:nowrap; border:1px solid #000; 0px 1px 1px 0px;}
    
</style>
    
<table  border="0" cellspacing="0" cellpadding="0">
        
<tr>
            
<td style="width:100px;" nowrap="nowrap" >中文中文阿飛的房間薩芬;撒</td>
            
<td style="width:100px;" nowrap="nowrap" >saaaa</td>
        
</tr>
    
</table>

如果去掉table-layout:fixed,表格的寬度會根據內容自動調整,比如上面的例子,如果去掉table-layout:fixed。第一個單元格的寬度會超過100px;
但是最近發現,使用table-layout:fixed在webkit內核瀏覽器上(safari/chrome)。寬度顯示會出現問題。
看看下面的例子:
 <style type="text/css">

            

        #test

        
{

            border-collapse
:collapse;

        
}

        

        #test td, #test th

        
{

            border
:solid 1px black;

            padding
:3px;

        
}



    
</style>

<table style="width:736px;table-layout:fixed;margin:0;padding:0" id="test">

        
<thead>

            
<tr>

                
<th width="25">ID</th>

                
<th width="270">Name</th>

                
<th width="54">xx</th>

                
<th width="54">xx</th>

                
<th width="54">xx</th>

                
<th width="54">xx</th>

                
<th width="54">xx</th>

                
<th width="54">xx</th>

                
<th width="54">xx</th>

            
</tr>

        
</thead>

        
<tbody>

            
<tr>

                
<td>111</td>

                
<td></td>

                
<td>&nbsp;</td>

                
<td>&nbsp;</td>

                
<td>&nbsp;</td>

                
<td>&nbsp;</td>

                
<td>&nbsp;</td>

                
<td>&nbsp;</td>

                
<td>&nbsp;</td>

            
</tr>

        
</tbody>

    
</table>

瀏覽器上的截圖為:


搜了一番資料后。在webkit官網上有這么一個Bug

If a table has both "table-layout: fixed" and "width: 0", then cells with
borders have wrong width.
This occurs in both safari 3.x mac&win and linux svn 31841 (debian sid).
The expected behavior is rendered by IE6, IE7, Firefox 2, Firefox 3 beta and
Opera 9.2.

Consider a table with 3 columns, all with width 200px.
If one of the cells have "border-left: 50px; width: 150px;",
then according to the rules of "table-layout: fixed", the cell should still
have width 200px.
But webkit renders the cell with only width 150px.


就是設置了table-layout:fixed之后,table的td寬度style.width不再是內容的寬度,而是內容+邊框。而且是忽視padding。這讓人很郁悶。
總之一旦設置了table-layout:fixed之后,webkit瀏覽器的單元格寬度并不會像你想象的那樣準確的寬度。

參考資料:
webkit的bug描述:
https://bugs.webkit.org/show_bug.cgi?id=13339
https://bugs.webkit.org/show_bug.cgi?id=18565
stackoverflow的提問:
http://stackoverflow.com/questions/2943369/table-layoutfixed-rendering-differences-in-safari

http://lists.macosforge.org/pipermail/webkit-unassigned/2008-April/071125.html









衡鋒 2011-06-30 18:39 發表評論
]]>
使用div模擬出frameset效果http://www.tkk7.com/Hafeyang/archive/2011/06/17/div_as_frameset.html衡鋒衡鋒Fri, 17 Jun 2011 04:26:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/06/17/div_as_frameset.htmlhttp://www.tkk7.com/Hafeyang/comments/352501.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/06/17/div_as_frameset.html#Feedback5http://www.tkk7.com/Hafeyang/comments/commentRss/352501.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/352501.html閱讀全文

衡鋒 2011-06-17 12:26 發表評論
]]>
google chrome瀏覽器頁簽的css實現http://www.tkk7.com/Hafeyang/archive/2011/05/19/google_tab_css_implementation.html衡鋒衡鋒Thu, 19 May 2011 09:30:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/05/19/google_tab_css_implementation.htmlhttp://www.tkk7.com/Hafeyang/comments/350621.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/05/19/google_tab_css_implementation.html#Feedback2http://www.tkk7.com/Hafeyang/comments/commentRss/350621.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/350621.html閱讀全文

衡鋒 2011-05-19 17:30 發表評論
]]>
基于highcharts的系統監控模擬圖表http://www.tkk7.com/Hafeyang/archive/2011/05/17/350400.html衡鋒衡鋒Tue, 17 May 2011 07:28:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/05/17/350400.htmlhttp://www.tkk7.com/Hafeyang/comments/350400.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/05/17/350400.html#Feedback4http://www.tkk7.com/Hafeyang/comments/commentRss/350400.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/350400.html閱讀全文

衡鋒 2011-05-17 15:28 發表評論
]]>
position:fixed在IE6下不起作用的修正原理以及實現http://www.tkk7.com/Hafeyang/archive/2011/05/16/350318.html衡鋒衡鋒Mon, 16 May 2011 07:37:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/05/16/350318.htmlhttp://www.tkk7.com/Hafeyang/comments/350318.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/05/16/350318.html#Feedback1http://www.tkk7.com/Hafeyang/comments/commentRss/350318.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/350318.htmlposition:fixed能可以是元素不隨滾動條滾動而滾動,固定在視口中,在網頁設計中這種效果經常用到。通常不考慮IE6的代碼是:

<body>
<div id="" class="" style="position:fixed; right:20px; top:20px;border:solid 1px blue;">
	fixed??
</div>
<div style="height:1000px;">mock page content<div>
</body>

 

主流的做法有兩種,一種使用expression表達式,在頁面滾動時重新設計元素的top屬性:

<body>
<div id="" class="" style="position:fixed; right:20px; top:20px;border:solid 1px blue; _position:absolute;_top:expression(parseInt(document.documentElement.scrollTop,10)+20+'px');">
	fixed??
</div>
<div style="height:1000px;">mock page content<div>
</body>

這種方法比較直接,但是每次滾動都重新計算元素的位置很消耗性能,而且頁面比較復雜的時候,會出現“抖動”的現象。

另外一種方法當你弄明白是才發現奇妙無窮,是否可以改變頁面的滾動條滾動的元素呢?滾動條默認滾動的是body元素。如果滾動的是一個div,而需要固定定位的元素并不在這個div中的話,自然就不會隨著滾動條的滾動而滾動。

<body>
<style type="text/css">
		html,body,#content{height:100%;overflow:auto;padding:0px;margin:0px;}
		#fixed{position:fixed; right:20px; bottom:20px; border:solid 1px  blue;_position:absolute;}
	</style>
<div id="content" class="">
	<div id="" class="" style="background-color:#ccc;height:1000px;">
		mock page content
	</div>
</div>
<div id="fixed" class="">
	fixed content
</div>
</body>

設置一個div與body等高等寬,將頁面內容都放到這個div中。這樣頁面滾動條其實是這個div的滾動條。然后在body下放上position:fixed的元素。這樣就大功告成了。

這基本是一個白話版的解決辦法了。基本是原理和簡單實現,更多的細節可以參考:

http://www.qianduan.net/fix-ie6-dont-support-position-fixed-bug.html



衡鋒 2011-05-16 15:37 發表評論
]]>
textarea高度自動增加http://www.tkk7.com/Hafeyang/archive/2011/05/15/auto_height_of_textarea.html衡鋒衡鋒Sun, 15 May 2011 11:40:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/05/15/auto_height_of_textarea.htmlhttp://www.tkk7.com/Hafeyang/comments/350286.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/05/15/auto_height_of_textarea.html#Feedback1http://www.tkk7.com/Hafeyang/comments/commentRss/350286.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/350286.html 最初看到這個命題,覺得不是不是直接監聽事件然后設計高度么?于是我想當然的寫了這么一段代碼:

<script type="text/javascript">
function autoheight(){
this.height= this.scrollHeight+this.height+"px";
}

</script>
<textarea id="" rows="" cols="" onpropertychange="autoheight();" oninput="autoheight()" style="overflow:hidden;"></textarea>

這個代碼我沒有運行,因為一邊寫就發現不對勁,在propertychange函數中改變property會再次觸發propertychange事件,結果就可想而知了。stack overflow。

所以需要換一種思路,新建一個textarea,將同樣大的文本放到屬性一樣的textarea中計算其高度,然后把高度設置到目標textarea中。

<script type="text/javascript">

    
//基本函數*2
    var addHandler = window.addEventListener?
    
function(elem,event,handler){elem.addEventListener(event,handler);}:
    
function(elem,event,handler){elem.attachEvent("on"+event,handler);};

    
var $ = function(id){return document.getElementById(id);}

        
    
function autoTextArea(elemid){
        
//新建一個textarea用戶計算高度
        if(!$("_textareacopy")){
            
var t = document.createElement("textarea");
            t.id
="_textareacopy";
            t.style.position
="absolute";
            t.style.left
="-9999px";
            document.body.appendChild(t);
        }
        
function change(){
            $(
"_textareacopy").value= $(elemid).value;
            $(elemid).style.height
= $("_textareacopy").scrollHeight+$("_textareacopy").style.height+"px";
        }
        addHandler($(
"target"),"propertychange",change);//for IE
        addHandler($("target"),"input",change);// for !IE
        $(elemid).style.overflow="hidden";//一處隱藏,必須的。
        $(elemid).style.resize="none";//去掉textarea能拖拽放大/縮小高度/寬度功能
    }

    addHandler(window,
"load",function(){
        autoTextArea(
"target");
    });
</script>
<textarea id="target" rows="" cols=""></textarea>

搞清楚原理其實就簡單多了。要捕捉textarea的change事件在IE下可以使用propertychange,在!IE下可以使用input。

一些textarea資料做參考:

  1. textarea 的一些小技巧 http://css-tricks.com/textarea-tricks/
  2. 本文的直接資料來源:http://www.planeart.cn/?p=1489

 

 



衡鋒 2011-05-15 19:40 發表評論
]]>
jQuery中的stopImmediatePropagation與stopPropagation的區別http://www.tkk7.com/Hafeyang/archive/2011/05/06/stoppropagataion_vs_stopimmediatepropagation.html衡鋒衡鋒Fri, 06 May 2011 10:04:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/05/06/stoppropagataion_vs_stopimmediatepropagation.htmlhttp://www.tkk7.com/Hafeyang/comments/349697.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/05/06/stoppropagataion_vs_stopimmediatepropagation.html#Feedback2http://www.tkk7.com/Hafeyang/comments/commentRss/349697.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/349697.html 
<script type="text/javascript">
        $(
function(){
            $(
"#t").keyup(function(e){
                $(
"#s").html("keyup1");
                
//stopImmediatePropagation可以阻止在這之后綁定的事件
                //比較注釋和不注釋這一行的區別
                e.stopImmediatePropagation();
            });
            $(
"#t").keyup(function(e){
                $(
"#s").html("keyup2");
            });
        });
    
</script>
<input type="text" id="t" name="" value="" />
<span class="" id="s"></span>
 
如果在第一個事件中需要阻止第二個事件的執行可以在第一個事件中使用event.stopImmediatePropagation方法。jQuery的event的對象是增強的event對象,
stopImmediatePropagation就是jQuery獨有的一種阻止jQuery綁定事件機制。可以通過isImmediatePropagationStopped()來判斷是否阻止了jQuery立即冒泡。
 
stopImmediatePropagation的實現可以參見我之前的一篇文章,從jQuery的緩存到事件監聽 在這篇文章中提到jQuery將事件都緩存在一個數組中按照先后順序執行。如果stopImmediatePropagation就停止執行數組中的監聽函數。
 
stopPropagation是阻止默認事件監聽函數。不是jQuery獨有,阻止默認事件的冒泡,比如監聽了DOM節點和該節點的父節點的事件,默認是事件執行將從里到外,這就是所謂的冒泡。在IE9-瀏覽器中可以使用event.cancelBubble=false來做到,標準瀏覽器使用event.stopPropagation方法。jQuery也把stopPropagation擴展方式到IE上這樣有了一致的方法。
 
綜上所述,其實stopImmediatePropagation與stopPropagation就不是一個東西,所以也不存在什么區別了。
參考資料
http://api.jquery.com/event.stopImmediatePropagation/
http://stackoverflow.com/questions/5299740/jquery-stoppropagation-vs-stopimmediatepropagation
http://api.jquery.com/event.stopImmediatePropagation/
http://stackoverflow.com/questions/5299740/jquery-stoppropagation-vs-stopimmediatepropagation
 


衡鋒 2011-05-06 18:04 發表評論
]]>
jQuery中的delegate與live實現方式簡析http://www.tkk7.com/Hafeyang/archive/2011/04/19/the_implementation_of_jquery_delegate_and_live.html衡鋒衡鋒Tue, 19 Apr 2011 04:07:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/04/19/the_implementation_of_jquery_delegate_and_live.htmlhttp://www.tkk7.com/Hafeyang/comments/348563.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/04/19/the_implementation_of_jquery_delegate_and_live.html#Feedback3http://www.tkk7.com/Hafeyang/comments/commentRss/348563.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/348563.html閱讀全文

衡鋒 2011-04-19 12:07 發表評論
]]>
面包屑效果分析http://www.tkk7.com/Hafeyang/archive/2011/03/10/cool_breadcrumbs.html衡鋒衡鋒Thu, 10 Mar 2011 03:34:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/03/10/cool_breadcrumbs.htmlhttp://www.tkk7.com/Hafeyang/comments/346068.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/03/10/cool_breadcrumbs.html#Feedback0http://www.tkk7.com/Hafeyang/comments/commentRss/346068.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/346068.html閱讀全文

衡鋒 2011-03-10 11:34 發表評論
]]>
有史以來本人獲得的至高評價。http://www.tkk7.com/Hafeyang/archive/2011/01/25/proud_of_myself.html衡鋒衡鋒Tue, 25 Jan 2011 08:36:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/01/25/proud_of_myself.htmlhttp://www.tkk7.com/Hafeyang/comments/343505.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/01/25/proud_of_myself.html#Feedback3http://www.tkk7.com/Hafeyang/comments/commentRss/343505.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/343505.html

衡鋒 2011-01-25 16:36 發表評論
]]>
datagrid性能(一):性能問題何來?http://www.tkk7.com/Hafeyang/archive/2011/01/18/the_performance_challenge_of_datagrid_you_may_face.html衡鋒衡鋒Tue, 18 Jan 2011 02:25:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/01/18/the_performance_challenge_of_datagrid_you_may_face.htmlhttp://www.tkk7.com/Hafeyang/comments/343131.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/01/18/the_performance_challenge_of_datagrid_you_may_face.html#Feedback5http://www.tkk7.com/Hafeyang/comments/commentRss/343131.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/343131.html閱讀全文

衡鋒 2011-01-18 10:25 發表評論
]]>
javascript解析平鋪樹形數據http://www.tkk7.com/Hafeyang/archive/2011/01/13/how_to_parse_flat_tree_data_to_hierarchy.html衡鋒衡鋒Thu, 13 Jan 2011 08:40:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/01/13/how_to_parse_flat_tree_data_to_hierarchy.htmlhttp://www.tkk7.com/Hafeyang/comments/342937.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/01/13/how_to_parse_flat_tree_data_to_hierarchy.html#Feedback1http://www.tkk7.com/Hafeyang/comments/commentRss/342937.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/342937.html閱讀全文

衡鋒 2011-01-13 16:40 發表評論
]]>
使用table自帶方法和DOM方法操作HTML table的區別 http://www.tkk7.com/Hafeyang/archive/2011/01/04/difference_between_2_ways_of_table_operating.html衡鋒衡鋒Tue, 04 Jan 2011 08:37:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/01/04/difference_between_2_ways_of_table_operating.htmlhttp://www.tkk7.com/Hafeyang/comments/342289.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/01/04/difference_between_2_ways_of_table_operating.html#Feedback0http://www.tkk7.com/Hafeyang/comments/commentRss/342289.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/342289.html閱讀全文

衡鋒 2011-01-04 16:37 發表評論
]]>
從jQuery的緩存到事件監聽http://www.tkk7.com/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.html衡鋒衡鋒Tue, 04 Jan 2011 07:20:00 GMThttp://www.tkk7.com/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.htmlhttp://www.tkk7.com/Hafeyang/comments/342286.htmlhttp://www.tkk7.com/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.html#Feedback5http://www.tkk7.com/Hafeyang/comments/commentRss/342286.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/342286.html閱讀全文

衡鋒 2011-01-04 15:20 發表評論
]]>
怎樣高效的批量刪除javascript 數組中的元素?http://www.tkk7.com/Hafeyang/archive/2010/12/29/how_to_batch_remove_items_in_javascript_array.html衡鋒衡鋒Wed, 29 Dec 2010 07:58:00 GMThttp://www.tkk7.com/Hafeyang/archive/2010/12/29/how_to_batch_remove_items_in_javascript_array.htmlhttp://www.tkk7.com/Hafeyang/comments/341917.htmlhttp://www.tkk7.com/Hafeyang/archive/2010/12/29/how_to_batch_remove_items_in_javascript_array.html#Feedback4http://www.tkk7.com/Hafeyang/comments/commentRss/341917.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/341917.html閱讀全文

衡鋒 2010-12-29 15:58 發表評論
]]>
office web 2010 初次使用http://www.tkk7.com/Hafeyang/archive/2010/12/23/first_look_of_microsoft_web_app_2010.html衡鋒衡鋒Thu, 23 Dec 2010 04:20:00 GMThttp://www.tkk7.com/Hafeyang/archive/2010/12/23/first_look_of_microsoft_web_app_2010.htmlhttp://www.tkk7.com/Hafeyang/comments/341373.htmlhttp://www.tkk7.com/Hafeyang/archive/2010/12/23/first_look_of_microsoft_web_app_2010.html#Feedback2http://www.tkk7.com/Hafeyang/comments/commentRss/341373.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/341373.html閱讀全文

衡鋒 2010-12-23 12:20 發表評論
]]>
主站蜘蛛池模板: 一色屋成人免费精品网站| 亚洲一区二区三区在线网站| 欧美三级在线电影免费| 中国一级特黄高清免费的大片中国一级黄色片 | 亚洲级αV无码毛片久久精品| 最近中文字幕免费mv视频8| 久久大香香蕉国产免费网站| 黄视频在线观看免费| 污网站在线免费观看| 久久水蜜桃亚洲AV无码精品| 亚洲va在线va天堂成人| 亚洲人成综合在线播放| 久久亚洲AV成人无码电影| 亚洲韩国精品无码一区二区三区| 亚洲一本大道无码av天堂| 四虎永久免费观看| 国产大片51精品免费观看| 日韩a级毛片免费观看| 四虎www免费人成| 成年私人影院免费视频网站| 一本岛高清v不卡免费一三区| 91精品免费高清在线| 精品无码人妻一区二区免费蜜桃| 欧洲人成在线免费| 久久aⅴ免费观看| 一区二区三区福利视频免费观看| 无码人妻久久一区二区三区免费| 久久久久国产免费| 免费A级毛片无码A∨| 24小时在线免费视频| 成人女人A级毛片免费软件| 成人免费午夜无码视频| 一本无码人妻在中文字幕免费| 国产成人免费爽爽爽视频| 毛片a级毛片免费观看免下载| 黄网址在线永久免费观看| 免费永久国产在线视频| av在线亚洲欧洲日产一区二区| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲精品综合一二三区在线| 亚洲综合图片小说区热久久|