原帖地址: 轉載的緣由是我學習前端和php已經4個多月了。看看本身還有那些不足。本身得努力學習,牛人太多。紅色是我會的,或者學過的。但願今天把大部分飄紅。javascript
屬性名和標籤名稱必須小寫
屬性值必須加引號
屬性不能簡寫
用 Id 屬性代替 name 屬性
XHTML 元素必須被正確地嵌套
XHTML 元素必須被關閉
3. 標籤的語義化
爲表達語義而標記文檔,而不是爲了樣式,結構良好的文檔能夠向瀏覽器傳達儘量多的語義,不管是瀏覽器位於掌上電腦仍是時髦的桌面圖形瀏覽器。結構良好的文檔都能向用戶傳達可視化的語義,即便是在老的瀏覽器,或是在被用戶關閉了 CSS 的現代瀏覽器中。同時結構良好的HTML代碼也有助於搜索引擎索引你的網站。php
不要使用table佈局,table是用來表格顯示的。
不要處處濫用div標籤,div是用來分塊用的。
不要使用樣式標籤,如font, center, big, small, b, i,樣式能夠用CSS來控制,b和i能夠用strong和em來代替。
不要使用換行標籤
和空格來控制樣式,請用CSS。
儘可能不要使用內聯CSScss
CSS基礎知識
層疊和繼承
優先級
盒模型
定位
浮動html
CSS進階
CSS Sprite
瀏覽器兼容性
IE HasLayout和Block Format Content
CSS Frameworks
CSS3
CSS性能優化
LESS and SASS
CSS Sprite
CSS Sprite主要用於前端性能優化的一種技術,原理是經過將多張背景圖片合成在一張圖片上從而減小HTTP請求,加快載入速度前端
瀏覽器兼容性java
絕大部分狀況下咱們須要考慮瀏覽器的兼容性,目前正在使用的瀏覽器版本很是多,IE6, IE7, IE8, IE9, IE10, Chrome, Firefox, Safari。git
IE HasLayout和Block Format Contentgithub
IE HasLayout是一個 Internet Explorer for Windows的私有概念,它決定了一個元素如何顯示以及約束其包含的內容、如何與其餘元素交互和創建聯繫、如何響應和傳遞應用程序事件、用戶事件等。這種渲染特性能夠經過某些 CSS 屬性被不可逆轉地觸發。而有些 HTML 元素則默認就具備」layout」。目前只有IE6和IE7有這個機率。BFC是 W3C CSS 2.1 規範中的一個概念,它決定了元素如何對其內容進行定位,以及與其餘元素的關係和相互做用。這個其實和瀏覽器的兼容性有關,由於絕大部分的兼容性問題都是它們引發的。參考:CSS BFC和IE Haslayout介紹web
CSS Framework正則表達式
CSS框架是一系列CSS文件的集合體,包含了基本的元素重置,頁面排版、網格佈局、表單樣式、通用規則等代碼塊,用於簡化web前端開發的工做,提升工做效率。目前常見框架有:
960 Grid System
Blueprint CSS
Bluetrip
Minimum Page
仍是一個比較出名和特殊的框架是Twitter的Bootstrap。Bootstrap是快速開發Web應用程序的前端工具包。它是一個CSS和HTML的集合,它使用了最新的瀏覽器技術,給你的Web開發提供了時尚的版式,表單,buttons,表格,網格系統等等。它是基於Less開發的。不支持IE6,在IE7和IE8裏效果也不咋地。
CSS3
雖然CSS3尚未正式成爲標準,可是包括IE9+, chrome, Firefox等現代瀏覽器都支持CSS3。CSS提供了好多之前須要用JavaScript和切圖才能搞定的功能,目前主要功能有:
圓角
多背景
@font-face
動畫與漸變
漸變色
Box陰影
RGBa-加入透明色
文字陰影
CSS性能優化
CSS 代碼是控制頁面顯示樣式與效果的最直接「工具」,可是在性能調優時他們一般被 Web 開發工程師所忽略,而事實上不規範的 CSS 會對頁面渲染的效率有嚴重影響,尤爲是對於結構複雜的 Web 2.0 頁面,這種影響更是不可磨滅。因此,寫出規範的、高性能的 CSS 代碼會極大的提升應用程序的效率。參考CSS性能優化探討
LESS和SASS
LESS和SASS都是 CSS 預處理器,用來爲 CSS 增長一些編程的的特性,無需考慮瀏覽器的兼容性問題,例如你能夠在 CSS 中使用變量、簡單的程序邏輯、函數等等在編程語言中的一些基本技巧,可讓你的 CSS 更見簡潔,適應性更強,代碼更直觀等諸多好處。
SASS基於Ruby開發。LESS既能夠在客戶端運行,也能夠藉助Node.js或者Rhino在服務端運行。
JSON
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於人閱讀和編寫,同時也易於機器解析和生成。是目前事實上數據交換的標準格式,幾乎全部語言都支持JSON,比XML強太多了。
AJAX
AJAX即「Asynchronous JavaScript and XML」(異步JavaScript和XML),AJAX並不是縮寫詞,而是由Jesse James Gaiiett創造的名詞,由Google發揚光大。用於建立更好更快以及交互性更強的 Web 應用程序的技術。
JavaScript Frameworks
JavaScript Frameworks能夠極大簡化咱們JavaScript編程的工做量,它主要提供瞭如下幾個主要功能: DOM操做,跨瀏覽器兼容性,以及程序架構。固然像jQuery它自己其實並非一個框架,它是一個庫(lib)。目前主流的框架或庫有以下幾個:
jQuery
YUI
DOJO
Mootoolos
ExtJS
Prototype
以上都是一些重量級的框架或者庫,仍是小巧的庫也是強烈推薦的,好比Underscore
HTML5
HTML5同CSS3相似,即雖然沒有成爲標準,可是主流的瀏覽器都支持了。HTML5不是HMTL,雖然也提供了一些新標籤,可是它的主要用途仍是JavaScript。HTML5主要提供如下功能:
本地音頻視頻播放
Canvas/SVG
地理信息
硬件加速
本地運行
本地存儲
從桌面拖放文件到瀏覽器上傳
語義化標籤,Form表單
前端模板
前端模板主要是爲了解決複雜的數據拼接問題,能夠將模板語言轉換化爲HTML結構,能夠大大簡化工做量,同時代碼的可維護性獲得很大的提升。目前比較主流前端模板有:
MustCache
JsRender
前端MVC
Web應用的功能愈來愈強,Javascript代碼也愈來愈多,大量的JS代碼要以何種架構來組織就成了一個亟待解決的問題,因而就有人把傳統的MVC架構移植到前端來解決這些問題。目前主流前端MVC框架主要有如下這些:
Backbone.js
Spine
KnockoutJS
YUI
Agility.js
Ember.js
Batman.js
AngularJS(Google)
Dojo
TodoMVC用上面全部的MVC框架寫了同一個示例代碼「Todo List」,是個學習對比MVC框架的好地方。
模塊化開發
其實如今JavaScript模塊化是個很熱門的東西了,主要特色是「模塊化開發,按需加載「。這其中CommonJS組織定義了AMD的規範用來規範瀏覽器端的模塊定義。RequireJS和SeaJS是實現了AMD的兩個優秀的框架。詳見:http://www.weakweb.com/articles/341.html
JavaScript單元測試
可是隨着單元測試的普及,尤爲是敏捷開發的推進,涌現了許多優秀的JavaScript單元測試框架,見詳細列表。全部的這些框架基本上都能對Javascript代碼進行很好的測試,固然UI部分的代碼測試同樣比較麻煩,可是咱們能夠經過精心構造咱們的測試代碼來測試部分UI代碼。主流的測試框架以下:
QUnit
Jasmine
JsTestDriver
目前jQuery的全部代碼都是經過QUnit進行測試的,而且將測試代碼放在Github上了,你們感興趣能夠參考一下。詳見:JavaScript單元測試框架介紹
JavaScript設計模式
好多設計模式是能夠應用於JavaScript的,好比常常用到的事件處理的觀察者模式,所以設計模式是提高編碼層次的必學技術。
NodeJS
NodeJS如今是比較火熱的,其最大的貢獻就是把JavaScript移植到服務器端了,這樣前端和後端就可使用一樣的技術,方便統一開發。並且NodeJS是非阻塞調用的,在特定領域性能是很是強勁的。並且這是前端開發人員進軍後臺開發的好機會,進而先後端統一開發,但又不用去學習其它後臺開發語言。
ES5
ES5就是ECMAScript 5,也就是最新的JavaScript規範,對以前的JavaScript做了不少改進,增長了好多新的特性,好比JSON,並且現代主流瀏覽器都開始支持ES5了,仍是很是有必要學習一下的。
Others
下面是一些和HTML, CSS, JavaScript沒有直接關係,可是對於前端開發一樣很是重要的一些技術。
Http1.1
Web移動開發
前端安全
跨域處理
調試工具
SEO
A/B test
可用性/可訪問性
前端流程/部署
正則表達式
編輯器
瀏覽器插件開發
瀏覽器原理
響應式設計
伴隨着各類智能設備的流行,響應式設計如今是很是火熱。之前作網頁只要面向PC機的瀏覽器,頁面直接固定寬度就行,好比960px,而如今經過手機的訪問量已經超過PC機,而且設備的尺寸多種多樣,將來會更多。在這種背景下,網頁支持全部設備進行訪問是基本要求了,而響應式設計能很好的解決這些問題。
Http1.1
HTTP對於前端開發來講仍是很重要的,好比最簡單的GET,POST方式,Request/Response 頭部,狀態碼等。
Web移動開發
如今移動開發很是很是流行了,而開發方式通常是native的方式或者Web方式,做爲前端開發人員來講天然是去學習Web移動開發了。PhoneGap是必學的,前端層面的框架如jQueryMobile, Sencha Touch, jQTouch等都是不錯的選擇。
前端安全
隨着前端技術的發展,安全問題已經從服務器悄然來到了每個用戶的的面前,盜取用戶數據, 製造惡意的能夠自我複製的蠕蟲代碼,讓病毒在用戶間傳播,使服務器當掉. 更有甚者可能會在用戶不知以爲狀況下,讓用戶成爲攻擊者,這絕對不是駭人聽聞。富客戶端的應用愈來愈廣,前端的安全問題也隨之增多。常見的攻擊方法有:
XSS,跨站腳本攻擊(Cross Site Script)。它指的是惡意攻擊者往Web頁面裏插入惡意html代碼,當用戶瀏覽該頁之時,嵌入的惡意html代碼會被執行,從而達到惡意用戶的特殊目的。
CSRF(Cross Site Request Forgery),跨站點僞造請求。顧名思義就是 經過僞造鏈接請求在用戶不知情的狀況下,讓用戶以本身的身份來完成攻擊者須要達到的一些目的。
cookie劫持,經過獲取頁面的權限,在頁面中寫一個簡單的到惡意站點的請求,並攜帶用戶的cookie 獲取cookie後經過cookie 就能夠直以被盜用戶的身份登陸站點。
跨域處理
同源策略規定跨域之間的腳本是隔離的,一個域的腳本不能訪問和操做另一個域的絕大部分屬性和方法。所謂的跨域處理就是處於不用域之間的腳步互相調用,目前有不少方法來處理它。
調試工具
前端的調試工具不少,好比Firebug,Webkit核心的web inspector, IE的iedeveloper。HTTP相關的fiddler, httpwatch等,還有格式化代碼的jsbeatutifier,它有助於閱讀壓縮處理過的JavaScript代碼。IETester能夠模擬全部的IE版本,是調試IE兼容性的好工具。
SEO
前端開發人員不少時候仍是須要了解搜索引擎優化的。
A/B test
A / B測試的核心就是:肯定兩個元素或版本(A和B)哪一個版本更好,你須要同時實驗兩個版本。最後,選擇最好的版本使用。
可用性/可訪問性
可用性指的是:產品是否容易上手,用戶可否完成任務,效率如何,以及這過程當中用戶的主觀感覺可好,是從用戶的角度來看產品的質量。可用性好意味着產品質量高,是企業的核心競爭力。
可訪問性:上網用戶中那些視力受損的人,經過屏幕閱讀器使用鍵盤命令將網頁的內容讀給他們聽。以語義化的HTML(結構和表現相分離的HTML)編寫的網頁文件,就可讓此類用戶更容易導航,且網頁文件中的重要信息也更有可能被這些用戶找到。
能夠經過逐步強化你的網站功能,同時對支持性進行測試。運用「漸進加強」和「平穩退化」原則開發網站。
正則表達式
估計絕大部分的編程語言都會用到它,當處理字符串時能夠極大的簡化你的工做。必學啊。
編輯器
人人都有本身喜歡的編輯器,從前端的角度看,Eclipse + Aptana, Notepad++, VIM都是不錯的選擇。我我的比較喜歡用Notepad++,簡潔,快。
前端流程/部署
當前端項目比較複雜時,咱們就應該考慮引入自動構建,自動化部署等技術了。可使用JSLint來對JavaScript進行語法檢查,用CSSLint或CSS Validator檢查CSS語法,用JSMin或YUI Compressor對JavaScript代碼進行壓縮,可使用JSDoc/YUIdoc進行文檔自動化生成,使用Jasmine/JsTestDriver進行自動化單元測試,可使用Ant/Maven/Make進行自動構建部署。不過伴隨着NodeJS的流行,Grunt,Bower和Yeoman如今幾乎是前端最流行的自動化的項目構建工具了。詳見Web前端開發流程自動化
瀏覽器插件開發
瀏覽器是咱們的工做平臺,在上面開發插件是頗有趣的,不少時候也是頗有用的。
瀏覽器原理
前端工做絕大部分都是運行在瀏覽器上面,因此瞭解瀏覽器原理有助於更深刻的理解各類技術的原理,工做過程。
溝通能力
優秀的前端工程師須要具有良好的溝通能力,由於你的工做與不少人的工做息息相關。在任何狀況下,前端工程師至少都要知足下列四類客戶的需求。
如何提升前端技術
Github是一個優秀的代碼託管網站,咱們能夠在上建立咱們我的的項目,同時也是學習的好地方,咱們能夠關注其它優秀的項目。JSFiddle是一個web開發人員的練習場,一個能夠在不少方面應用的工具。咱們能夠用他來在線編輯一些HTML,CSS,javascript片斷。你編輯的代碼能夠與其餘人分享,或嵌入你的博客等
閱讀優秀的開源代碼
參加前端聚會
關注技術發展趨勢,瞭解最新的行業技術,能夠經過訂閱知名博客,閱讀技術新聞獲取
寫博客/記筆記,能夠進行知識積累。博客能夠本身買空間或者各大知名博客網站。筆記的話好比evernote,有道筆記等。
按階段劃分
如何劃分仁者見仁,智者見智,要根據項目的狀況做出調整,如下是我根據我自身的經驗做出的劃分,給你們做個參考。
第一階段
入門,打基礎同時能參與到項目中去。
HMTL & XHTML
CSS基礎知識
JavaScript基礎知識
DOM
JSON
AJAX
JavaScript Frameworks
編輯器
第二階段
掌握前端核心技術,能夠獨立幹活。
HTML5標籤,TML標籤語義化
CSS Sprite
瀏覽器兼容性
IE HasLayout和Block Format Content
CSS3
精通JavaScript Frameworks
HTML5
前端模板
前端MVC
模塊化開發
Http1.1
調試工具
正則表達式
響應式設計
第三階段
把握整個前端項目,作整個前端項目的架構師。
CSS性能優化
LESS and SASS
JavaScript單元測試
JavaScript設計模式
NodeJS
ES5
Web移動開發
瀏覽器插件開發
前端安全
跨域處理
SEO
A/B test
可用性/可訪問性
前端流程/部署
瀏覽器原理
第四階段
一代宗師。
不停的學習新的技術交互設計能力,管理能力