亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

Modernizr:為HTML 5和CSS3而生

2024-08-26 00:18:05
字體:
來源:轉載
供稿:網友

10年前,只有最尖端的網站設計師會為網頁的布局和修飾使用CSS。那時的瀏覽器對CSS進行布局的支持即不完善又漏洞百出,所以這些人在堅持WEB標準化的同時,也不得不采用hacks來使得他們的頁面在所有瀏覽器中都能正常顯示。其中一個被使用的越來越多的hack技術是瀏覽器嗅探(browser sniffing),使用Javascript里的navigator.userAgent屬性來判斷用戶使用的是什么品牌哪個版本的瀏覽器。瀏覽器嗅探技術可以快捷的將代碼進行分支,以便針對不同的瀏覽器應用不同的指令。

Modernizr:為HTML 5和CSS3而生

今天,以CSS為基礎進行的布局已經非常普遍,瀏覽器們對它的支持也非常的堅實。但是現在CSS3和HTML5來了,歷史轉了個圈又回到了原地——各個瀏覽器對這些新技術的支持又開始變得參差不齊了。我們早都習慣了書寫整潔的符合標準的代碼,也不會再使用CSS hacks或者瀏覽器嗅探這些不靠譜又低級的技術。我們也相信越來越多的用戶會認同網站不必在所有瀏覽器里都看起來一樣的理念。那面對當下這個熟悉的情形(瀏覽器支持的不同),我們該怎么做呢?簡單:使用特征檢測(feature detection),這意味著我們不必通過問瀏覽器“你是誰?”來做出不靠譜的推測。取而代之,我們問瀏覽器“你能做這個或那個嗎”。這么來檢測瀏覽器的能力是很簡便的,但一個個的花時間去手工測試依然令人厭煩。此時Modernizr可以幫助我們。

Modernizr:專為HTML5和CSS3開發的功能檢測類庫

Modernizr是一個開源的JS庫,它使得那些基于訪客瀏覽器的不同(指對新標準支持性的差異)而開發不同級別體驗的設計師的工作變得更為簡單。它使得設計師可以在支持HTML5和CSS3的瀏覽器中充分利用HTML5和CSS3的特性進行開發,同時又不會犧牲其他不支持這些新技術的瀏覽器的控制。

當你在網頁中嵌入Modernizr的腳本時,它會檢測當前瀏覽器是否支持CSS3的特性,比如 @font-face、border-radius、 border-image、box-shadow、rgba() 等,同時也會檢測是否支持HTML5的特性——比如audio、video、本地儲存、和新的標簽的類型和屬性等。在獲取到這些信息的基礎上,你可以在那些支持這些功能的瀏覽器上使用它們,來決定是否創建一個基于JS的fallback,或者對那些不支持的瀏覽器進行簡單的優雅降級。另外,Modernizr還可以令IE支持對HTML5的元素應用CSS樣式,這樣開發者就可以立即使用這些更富有語義化的標簽了。

Modernizr是基于漸進增強理論來開發的,所以它支持并鼓勵開發者一層一層的創建他們的網站。一切從一個應用了Javascript的空閑地基開始,一個接一個的添加增強的應用層。因為使用了Modernizr,所以你容易知道瀏覽器都支持什么。下面我們來看一個通過應用Modernizr來創建尖端網站的實例。

從應用Modernizr開始

首先從www.modernizr.com下載Modernizr的最新的穩定版(目前國內封了Modernizr的官網,我們可以從github上下載?;蛘吒唵吸c,可以從堂主這里下載最新的1.7版的腳本文件),在官網上你還可以看到它支持檢測的所有特性的清單(本文末位會給出這些清單,以便翻不了墻的童鞋可以知道都支持哪些)。下載完最新版本以后(作者寫這篇文章的時候用的是1.5版),把它加入頁面的區域:

  1. > 
  2. <html> 
  3. <head> 
  4. <meta charset="utf-8"> 
  5. <title>My Beautiful Sample Pagetitle> 
  6. <script src="modernizr-1.5.min.js">script> 
  7. head> 
  8. … 

接下來,向元素添加“no-js”的類。

當Modernizr運行的時候,它會把這個“no-js”的類變為“js”來使你知道它已經運行。Modernizr并不僅僅只做這一件事情,它還會為所有它檢測過的特性添加class類,如果瀏覽器不支持某個特性,它就為該特性對應的類名加上“no-”的前綴。所以,你的元素可能會變得看起來像下面這個樣子:

Modernizr同時還會創建一個JS對象,被命名為“Modernizr”,其內容是為每一個檢測完的特性給出的布爾值結果組成的列表。如果瀏覽器支持新的canvas元素,那么“Modernizr.canvas”的值就是true;如果瀏覽器不支持這個新元素,那它對應的值就是false。這個JS對象針對某些功能還會包含更為詳細的信息,如“Modernizr.video.h264”會告訴你瀏覽器是否支持這個特殊的編解碼器。“Modernizr.inputtypes.search”會告訴你當前瀏覽器是否支持新的search input類型,等等。

我們的未加工的簡單小頁面看起來有點像一個準測試系統了,但它具備更好的語義性和可訪問性。讓我們為它添加一點基本的樣式:一點文字格式、顏色和布局以使它更好看。目前位置,沒什么新東西,只是為一個語義化結構的HTML頁面添加表現樣式,看看添加了樣式后的頁面。

下面,我們要增強這個頁面使得它更有意思。我想為頭部的h1應用一個奇特的文字效果,把關于檢測特性的列表分為兩欄,然后將帶有一張照片的關于Modernizr的部分的一切都弄到右邊去。我還要把圍繞頁面內容的邊框變美點?,F在,更給力的CSS3使你可以對一條規則添加更多的屬性,如果瀏覽器不支持這些屬性,它會忽略它們。配合使用CSS的層疊(繼承),你可以不必依賴Modernizr而使用像“border-radius”這樣的新屬性。不過,使用Modernizr可以為你提供一些既有手段提供不了的功能:根據瀏覽器對新東西支持的差異動態修改的的類名。我會通過對我們的頁面添加2條新的規則來說明這點:

  1. .borderradius #content {  
  2.     border: 1px solid #141414;  
  3.     -webkit-border-radius: 12px;  
  4.     -moz-border-radius: 12px;  
  5.     border-radius: 12px;  
  6. }  
  7. .boxshadow #content {  
  8.     border: none;  
  9.     -webkit-box-shadow: rgba(0,0,0, .5) 3px 3px 6px;  
  10.     -moz-box-shadow: rgba(0,0,0, .5) 3px 3px 6px;  
  11.     box-shadow: rgba(0,0,0, .5) 3px 3px 6px;  

第一條規則為“#content ”元素添加了一個12像素的圓角。但在既有的頁面里我們已經為“#content ”元素設置了一個屬性值為“2px outset #666”的邊框,這在box是直角的時候是蠻好看的,但在圓角情況下就不是了。感謝Modernizr,我可以在瀏覽器支持“border-radius”的情況下給box設置一個1px的實邊。

第二條規則更進步了一點,我們為“#content ”元素添加了一個陰影,并且針對支持“box-shadow”屬性的瀏覽器一并移除了border屬性。為什么呢?因為大部分瀏覽器并不為“邊框附帶邊角”的組合外加陰影這樣的效果提供一個好的表現(這是一個應該被注意的瀏覽器的瑕疵,但我們現在卻必須忍受它)。同不使用陰影只使用邊框相比,我寧可只使用陰影包圍元素。采用這種方式,我可以擁有全世界最好的,準確點的,最好的一種CSS表現:在支持“box-shadow”屬性的瀏覽器里將會呈現一個美妙的陰影;只支持“border-radius”屬性的瀏覽器將會呈現一個好看的圓角薄邊框;對于那些這2者都不支持的破爛瀏覽器,我們會看到一個2像素的直角邊框。

下面我們要為header應用一個自定義的特殊字體,下面的是我們目前針對h1的聲明,沒改動版的:

  1. h1 {  
  2.     color: #e33a89;  
  3.     font: 27px/27px Baskerville, Palatino, "Palatino Linotype",  
  4.     "Book Antiqua", Georgia, serif;  
  5.     margin: 0;  
  6.     text-shadow: #aaa 5px 5px 5px;  

這些聲明在我們的基礎網頁里工作良好,27像素的文字大小也很適合我們為h1設置的那些字體的展示。但對于我要用的名叫“Beautiful”的字體來說,27像素就太小了。下面我們要添加其他的規則來使用這個自定義字體:

  1. @font-face {  
  2.     src: url(Beautiful-ES.ttf);  
  3.     font-family: "Beautiful";  
  4. }    
  5.  
  6. .fontface h1 {  
  7.     font: 42px/50px Beautiful;  
  8.     text-shadow: none;  

首先,我們添加“@font-face”聲明,并在其中為我們的自定義字體指定路徑、文件名和字體名。之后我們用一條CSS語句為我們的h1選擇字體樣式。你會看到,我這里選擇了一個很大的字號,那是因為“Beautiful”字體本身就比其他字體的文字要小很多,所以我們必須要指示瀏覽器在展示我們自定義字體的時候,給予h1一個很大的字號。

此外,我們漂亮的手寫體文字在文字陰影方面存在一些渲染問題,所以我們要在瀏覽器決定使用自定義文字時取消文字的陰影。另外,關于檢測特征部分的列表還需要被分為兩欄。為了達到目的,我要使用牛叉的CSS columns 屬性,這一屬性會使瀏覽器把列表智能分欄而不會打亂它的順序,而我們的列表,雖然沒有數字序號,卻也是按照字母順序排列的。當然,不是所有的瀏覽器都支持這一屬性,對于那些不支持的瀏覽器,我們使用浮動來達到2欄的目的——使用了浮動后列表在視覺上不會再按照字母順序排列,但那也好過什么都沒有。

  1. .csscolumns ol.features {  
  2.     -moz-column-count: 2;  
  3.     -webkit-columns: 2;  
  4.     -o-columns: 2;  
  5.     columns: 2;  
  6.   }    
  7.  
  8. .no-csscolumns ol.features {  
  9.     float: left;  
  10.     margin: 0 0 20px;  
  11.   }    
  12.  
  13. .no-csscolumns ol.features li {  
  14.     float: left;  
  15.     width: 180px;  

我又一次使用了Modernizr來針對不同的情況設置不同的屬性。如果瀏覽器支持CSS columns,它就會把列表完美的分為2欄,如果不支持,通過Modernizr為添加的“no-csscolumns”類我們也可以用浮動的方式使得列表變為兩欄,雖然不那么完美,但也比直接來一個長串的單欄列表強。

這里您可能注意到了我為屬性添加了不同的前綴(-moz-、-webkit-、-o-),這是因為不同的瀏覽器廠商對該功能的實現有不同的定義,所以要實現該功能需要針對不同的瀏覽器加上它們對應的前綴。

經過這些改變,我們新的頁面看起來更好了。

我們將為我們的頁面添加進更多的漸進式增強效果來結束這篇教程?;赪ebKit的瀏覽器支持一些更牛叉的特效,如CSS變換、動畫和三維轉換等。并且我想在最后一個階段的頁面中應用一些這類特效。再一次的,這些屬性會被添加進我們既有的CSS中并在不支持它們的瀏覽器中給忽視。所以,針對這種一方面是漸進增強一方面是不被支持的情況,使用Modernizr是恰當的。

首先設置的:

  1. @-webkit-keyframes spin {  
  2.       0% { -webkit-transform: rotateY(0); }  
  3.     100% { -webkit-transform: rotateY(360deg); }  
  4. }    
  5.  
  6. .csstransforms3d.cssanimations section {  
  7.     -webkit-perspective: 1000;  

@keyframes規則是新的CSS animations規范中的一部分,目前只有WebKit支持。它容許你針對任何屬性聲明一個完整的動畫路徑,并在你喜歡的任何階段改變它們。想知道關于animations的更多知識,請閱讀 W3C Working Draft specification。

下面我們添加使得我們一個元素在三維空間里旋轉的代碼:

  1. .csstransforms3d.cssanimations section h2 {  
  2.     background-image: url(modernizr-logo.png);  
  3.     overflow: hidden;  
  4.     -webkit-animation: spin 2s linear infinite;  

因為logo要轉動,且又希望它轉的時候和背景相處的融洽些,于是這里用了一個png格式的文件。我還采用了一個“overflow:hidden”屬性來隱藏設置了縮進-9999像素的header里的文字。使元素以3D的形式旋轉雖然有趣卻并不太美觀。最終,我們選擇使用animation規則,設置它的旋轉周期為2秒鐘,沿著自身的中軸線旋轉,永不停止。

最終的頁面看起來很給力,甚至還針對WebKit瀏覽器設置了好玩的動畫。我希望到現在你能明白使用Modernizr可以使你對網站控制的手腕變得多么牛叉,以及它可以令真正的漸進增強變得多么簡單。這還不僅僅是Modernizr的全部好處,它還可以幫你建立基于JS的fallbacks以及可以幫你應用html5那些牛掰的新特性。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美诱惑福利视频| 91亚洲精品视频| 国产精品久久国产精品99gif| 91精品国产99| 欧美激情2020午夜免费观看| 亚洲精品免费一区二区三区| 精品日本美女福利在线观看| 欧美一级片一区| 日韩欧美综合在线视频| 成人网中文字幕| 亚洲美女免费精品视频在线观看| 欧美日韩亚洲成人| 日本不卡高字幕在线2019| 成人激情免费在线| 久久久精品视频在线观看| 亚洲综合av影视| 亚洲一区www| 久久久久免费视频| 精品国产欧美成人夜夜嗨| 国产va免费精品高清在线观看| 亚洲老板91色精品久久| 国产精品久久中文| 这里只有精品在线观看| 国产伊人精品在线| 日韩国产在线播放| 亚洲午夜久久久影院| 亚洲国产精品久久久久久| 欧美在线视频观看| 最近2019中文字幕大全第二页| 在线观看国产欧美| 91亚洲精品久久久久久久久久久久| 日日摸夜夜添一区| 久久国产一区二区三区| 日韩视频亚洲视频| 久久精品2019中文字幕| 欧美视频在线视频| 一二美女精品欧洲| 久久久久国色av免费观看性色| 久久久久久久999| 亚洲一区二区自拍| 亚洲qvod图片区电影| 色噜噜国产精品视频一区二区| 午夜精品久久久久久久99热| 激情亚洲一区二区三区四区| 91高清视频免费观看| 久久久999精品视频| 国产香蕉精品视频一区二区三区| 欧美日韩一区二区在线播放| 亚洲一区www| 日韩综合中文字幕| 亚洲成人免费在线视频| 日韩av综合网| 91理论片午午论夜理片久久| 欧美激情一级欧美精品| 一本色道久久88亚洲综合88| 国产精品久久久久久久久久新婚| 午夜精品国产精品大乳美女| 国产在线精品播放| 亚洲国产精品久久久久秋霞不卡| 亚洲欧美激情另类校园| 国产精品久久久久久久久借妻| 亚洲精品国产suv| 97精品在线观看| 久久手机精品视频| 91老司机精品视频| 91精品视频在线免费观看| 热99久久精品| 中文字幕在线日韩| 欧美在线观看网站| 这里只有精品在线观看| 亚洲精品日韩激情在线电影| 国产精品日日摸夜夜添夜夜av| 国产欧美在线视频| 久久久久日韩精品久久久男男| 欧美性猛交xxxx久久久| 国产欧美精品在线| 久久伊人免费视频| 91精品久久久久久久久久| 这里只有精品久久| 亚洲电影免费观看高清| 国产精品福利久久久| 国产狼人综合免费视频| 亚洲大胆人体av| 日韩人在线观看| 亚洲国产另类 国产精品国产免费| 最近中文字幕日韩精品| 久久精品国产精品亚洲| 久久精品国产2020观看福利| 久久久久久高潮国产精品视| 国产精品嫩草影院久久久| 97精品国产aⅴ7777| 日韩精品在线免费观看| 亚洲国产婷婷香蕉久久久久久| 亚洲视频一区二区| 亚洲欧洲日韩国产| 国产精品尤物福利片在线观看| 亚洲一区精品电影| 狠狠久久五月精品中文字幕| 91成人在线观看国产| 不卡在线观看电视剧完整版| 91丨九色丨国产在线| 久久综合网hezyo| 成人做爰www免费看视频网站| 亚洲国产日韩精品在线| 欧美黑人巨大xxx极品| 国产成人短视频| 国产成人亚洲综合91| 久久国产精品久久久久久久久久| 亚州国产精品久久久| 日本高清视频精品| 亚洲成人性视频| 欧美另类在线播放| 亚洲欧洲av一区二区| 久久精品视频免费播放| 成人黄色在线播放| 日韩人在线观看| 亚洲一区二区免费在线| 亚洲影视中文字幕| 色婷婷久久一区二区| 亚洲精品有码在线| 91产国在线观看动作片喷水| 日韩在线播放视频| 国产精品一区二区三区毛片淫片| 亚洲精品久久久一区二区三区| 欧美精品日韩三级| 91麻豆桃色免费看| 欧美视频国产精品| 亚洲欧美日韩网| 国产成人精品电影| 5566成人精品视频免费| 中文字幕欧美精品在线| 亚洲另类欧美自拍| 亚洲国产福利在线| 91亚洲va在线va天堂va国| 日韩一区二区福利| 亚洲人成毛片在线播放| 午夜精品www| 日本精品va在线观看| 国产精品678| 日韩在线一区二区三区免费视频| 久久国产精品99国产精| 久久久久久久999精品视频| 精品国产一区二区三区久久| 成人亚洲综合色就1024| 久久在线观看视频| 欧美一级bbbbb性bbbb喷潮片| 色老头一区二区三区在线观看| 欧美日韩午夜剧场| 高清一区二区三区四区五区| 中文字幕日韩在线观看| 91成人免费观看网站| 精品久久香蕉国产线看观看亚洲| 日韩精品久久久久久福利| 丝袜美腿亚洲一区二区| 91在线无精精品一区二区| 色婷婷成人综合| 2019中文字幕在线免费观看| 欧美午夜片欧美片在线观看| 亚洲日韩中文字幕在线播放| 亚洲精选中文字幕| 亚洲欧美在线免费| 欧美一区三区三区高中清蜜桃| 国产欧美日韩专区发布| 日韩精品高清在线|