DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> 揭秘HTML5和CSS3
揭秘HTML5和CSS3
編輯:HTML5詳解     
      互聯網的發展總是在不斷地催生新技術的產生,而HTML5和CSS3是最近一直被討論的熱門話題,對於每個互聯網開發者尤其是前端開發者而言,都充滿了好奇與渴望。那麼Html5和CSS3究竟有哪些讓我們眼前一亮的東西呢?我在WebRebuild北京交流會和珍珠奶茶幫上給大家分享了《揭秘 Html5和CSS3》,PPT在這裡:http://docs.google.com/present/vIEw?id=dhpdbrp_51hf88z8g8

       Html5HTML 5草案的前身名為Web Applications 1.0,於2004年被WHATWG提出,於2007年被W3C接納,並成立了新的HTML工作團隊。在2008年1月22日,第一份正式草案發布。 Html 5是近十年來web開發標准最巨大的飛躍。和以前的版本不同,HTML 5並非僅僅用來表示Web內容,它的新使命是將Web帶入一個成熟的應用平台,在HTML 5平台上,視頻,音頻,圖象,動畫,以及同電腦的交互都被標准化。那麼我們來看一下Html5的技術概覽有哪些:

      HTML5新增和移除的元素HTML5新增了很多多媒體和交互性元素如video, audio,在HTML4當中如果要嵌入一個視頻或是音頻的話需要引入一大段的代碼,還有兼容各個浏覽器,而HTML5只需要通過引入一個標簽就可以,就像img標簽一樣方便。在頁面布局和內容實現方面HTML5新增了很多結構化標簽元素以及塊級及語義元素,如果你要用HTML表示一個文件的上傳進度條,在 HTML5中你可以用progress這個元素來表示,它有一個value屬性描述了已經完成了多少任務,還有一個屬性max描述了這個任務一共需要多少,還可以通過DOM接口得到這個進度條的position屬性(只讀),也就是任務完成的百分比。Youtube在HTML5技術上已經做了一個嘗試,http://www.youtube.com/html5(需要翻牆) 是用HTML5做的一個DEMO,從整個頁面源代碼來看,非常簡潔。當然HTML5也對一些元素新增了一些屬性,如input和textarea的placeholder屬性,相當於輸入框的輸入提示,script有一個async屬性會影響腳本的加載和執行。對於所有的HTML共有的屬性我們通常把它稱作是“全局屬性”,如class, id, tabindex, title,HTML5也新增了一些全局屬性,如contenteditable, contextmenu, hidden等屬性。Html5還增加了對於微數據的支持,如Html5新增的item, itempro, subject等屬性。

當然HTML5也移除了一些表示頁面展現的元素,如font, center, strike等,這些本應該是CSS來做的,所以還是很好理解的,也移除了一些影響網站可訪問性的元素如frame, frameset, noframe以及一些不常用的元素如acronym,而采用abbr來表示縮寫。Html5還移除了一些影響客戶端兼容性的HTML熟悉,如link的rev屬性,td的scope屬性;Html5也移除了一些表示頁面展現的屬性如一些元素的align,bgcolor屬性。

HTML5對表單的支持HTML5 提供了強大的控件類型如url, email, date, tel等,強大的約束屬性,如required表示必填,文件上傳的accept屬性,以及一些表單重復元素模型的支持,Html5在提交表單的時候還可以設置提交的方式為XML提交方式,這樣服務器端接收到的數據將是XML格式,Html5的表單被定義為“Web Forms 2.0”,目前Opera9.5+對Web Forms 2.0的支持較為完美。

點此查看Web Forms 2.0 DEMO,需要Opera9.5+

HTML5 DOM變化Html5在DOM LEVEL 2 HTML方面很多都是繼承自HTMLDocument的接口,當然Html5在DOM上也有一些值得注意的新成員,如:支持 getElementsByClassName,可以根據class類名選擇元素,getSelection()將會返回當前選中的對象,在選擇器上面有兩個方法querySelector和querySelectorAll可以根據 CSS選擇符來獲取要查詢的元素,相當於YUI3中的Y.one和Y.all。

Html5的Javascript APIsHtml5在Javascript上面新增了哪些API呢?

Video/Audio: Html5為Video和Audio提供了API來讓開發者控制他們自己的用戶界面,如可以播放或暫停媒體內容。
Canvas: Canvas是一個新的Html元素,這個元素可以被Script語言(通常是JavaScript)用來繪制圖形。例如可以用它來畫圖、合成圖象、或做簡單的(和不那麼簡單的)動畫。Canvas是一個神奇的東西,它給我的第一感覺就像是在用Photoshop一樣,它的每一個方法跟Photoshop 是那麼地相似,通過canvas.getContext(’2d’)就可以得到這個canvas的API,你可以通過fillStyle設置其填充顏色或是通過strokeStyle設置其描邊顏色,甚至它畫路徑的操作跟Photoshop的鋼筆操作更是不謀而合。Canvas在很多網站都已經有應用,如Firefox的實時下載狀態統計,甚至還可以用canvas來編寫Web Game。
Drag&Drop: 在指示設備的視覺媒體中,”Drag”的操作就是鼠標按下(mousedown)並伴隨著鼠標移動(mousemove)的事件,而”Drop”則是鼠標釋放時觸發的事件。在Drag&Drop裡定義了DataEvent和DataTransfer接口,同時當拖拽操作發生時會觸發如 dragstart, dragenter, dragleave, drop, dragend等事件。
Web Workers: 讓Javascript多線程,可以在後台做很多工作而不會阻斷當前的浏覽器操作。
Geolocation: 地理位置定位,運行navigator.geolocation.getCurrentPosition(success,error)這個方法時浏覽器會提示是否要共享你的地理位置,如果選擇共享,則會回調success函數,success函數有一個參數是position對象,這個position對象有一個coords對象,coords對象包含了很多地理位置信息如latitude(維度)和longitude(經度),這樣就可以知道你的具體位置了,這個功能在一些手機如Iphone上已經有廣泛的應用了。
Application Cache: 這是HTML5對於離線應用的支持,通過在html元素上加一個屬性manifest,浏覽器會提示你是否要將數據緩存到客戶端,如果用戶選擇了允許,則會按照指定的manifest文件列表緩存需要的文件,當你的網絡不可用時,你還是可以使用這個應用的。對於離線應用,Google也開發了Google Gears浏覽器擴展,不過最後Google轉投Html5可能也是看到了Html5存儲和離線應用的這種優勢。
Storage: Webkit已經實現了database storage,你可以像後端操作數據庫一樣查詢數據並執行一些操作。還有一種存儲是鍵值對存儲,如sessionStorage和localStorage,可以通過setItem和getItem來存儲與獲取值,相對於CookIE的存儲來說,存儲的容量要大很多。
X-Document Messaging: 浏覽器因為安全和隱私的原因,阻止了不同域之間文檔的通信,雖然這是一個安全限制,但是對於那些沒有危害的不同域的文檔通信帶來了很多問題,但是Html5可以實現這種跨文檔通信,讓我們可以不用管源域是來自哪裡,同時可以防止腳本攻擊。
HTML5讓你心動了嗎?那麼HTML5什麼時候會成為標准呢?據說要等到2022年,這有一個很有意思的網站http://isHtml5readyyet.com/告訴你還有多少天Html5會真正到來。

點擊查看Html5 DEMO,需要Firefox3.5+/Safari4.0+

CSS3CSS3對於我們web開發者來說不只是新奇的技術,更重要的是這些全新概念的web應用給我們帶來更多無限的可能性,也極大地提高了我們的開發效率。我們將不必再依賴圖片或者Javascript 去完成圓角、多背景、用戶自定義字體、3D動畫、漸變、盒陰影、文字陰影、透明度等提高Web設計質量的特色應用。

CSS3在選擇器上面的支持利用屬性選擇器我們可以根據屬性值的開頭或結尾很容易選擇某個元素,利用兄弟選擇器可以選擇同級兄弟結點或緊鄰下一個結點的元素,利用偽類選擇器可以選擇某一類元素,CSS3在選擇器上的豐富支持讓我們可以靈活的控制樣式,而不必為了選擇某些元素給他們加上如”odd”或”even”這樣的類名。

CSS3在樣式上的支持有一個調查說開發者最期待CSS3的特性是什麼,最後票數最多的是“圓角”,不錯,圓角這個功能可以給我們這些前端工程師省去很多時間和精力去切圖拼湊一個圓角。CSS3還支持陰影,盒陰影以及文本陰影,漸變,之前你可能是通過IE的濾鏡看到過,其實CSS3實現起來更加方便。@font-face可以自定義字體,如果用傳統的方式,VD把一個帶有特殊文字的設計圖給你讓你來實現的話你可能會把它做成一個圖片,而通過CSS3用@font-face就可以了。CSS3對於連續文本換行也新增了一個屬性word-wrap,你可以設置其為normal(不換行)或break-Word(換行),這解決了連續英文字符出現頁面錯位的問題,也不需要後端去截取這個連續字符。使用CSS3你還可以給邊框加背景,這在iphone上也有應用的例子。CSS3在背景上支持背景調整大小,如當你用一張大圖要做一個小的元素背景時可以通過background-size來調整背景圖的大小來適應這個元素。CSS3支持opacity, rgba和hsl/a, opacity和rgba的區別是opacity設置的透明對其內容也會產生影響,而rgba只對你應用的元素產生影響。CSS3在布局上對於盒模型提供了支持,可以設置box-sizing為content-box或border-box,應用為content-box就是正常的模式,而應用為border-box和IE5.5的盒模型很相似,即元素的寬度包括border和padding,這個在布局上可能會比較方便,不用去管到底這個元素會占用多大的寬度,而用content-box還需要手動計算一下這個元素實際占用的寬度。

CSS3對於動畫的支持CSS3支持的動畫類型有:transform(變換)、transition(過渡)和animation(動畫)。你可以對特定的屬性設置transition,transiton和animation的區別不大,animation的動畫是自己定義的,面向的更多的是腳本開發者,往往更加復雜。

為了使用大部分CSS3特性,我們不得不與原來的屬性一起使用生產商專有擴展。原因是直到現在,大部分浏覽器只支持部分CSS3屬性。最常見的私有屬性是用於Webkit核心浏覽器的(比如, Safari), 它們以-webkit-開始,以及Gecko核心的浏覽器(比如, Firefox),以-moz-開始,還有Konqueror (-kHtml-)、Opera (-o-) 以及Internet Explorer (-ms-)都有它們自己的屬性擴展(目前只有IE8支持-ms-前綴)

那我們在開發中該如何去用CSS3呢?我覺得首先是遵循一個優雅降級的原則,比如前面談到的圓角,我們可以針對Firefox和Safari等這些支持圓角的浏覽器中應用CSS圓角,而那些不支持CSS圓角的浏覽器則顯示為直角。其次就是對於不支持CSS3的浏覽器可以使用Javascript來實現,如CSS3任何元素支持:hover偽類,我們就可以對只支持鏈接:hover的IE6用JS來實現。最後就是在向用戶或老板推廣新技術的同時也要關注他們的目標與可行性,不能為了技術而技術

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved