以前在看一些css3效果demo的時候,發現有些寫css3屬性時,兼容性的寫法順序不太同樣,好比transition屬性,有些把transition放在前面有些是放在後面,固然這也有可能包含了coder我的的習慣或是強迫性>"<,好比下面這兩種:css
.transition{ -webkit-transition: all .5s; -moz-transition: all .5s; -o-transition: all .5s; transition: all .5s; }
.transition{ transition: all .5s;
-o-transition: all .5s; -moz-transition: all .5s; -webkit-transition: all .5s; }
帶前綴的排列應該只是爲了整齊吧(仍是表明了對瀏覽器的喜愛程度)?可是transition放在前面仍是後面卻引伸了兩個概念:優雅降級和漸進加強。css3
優雅降級和漸進加強印象中是隨着css3流出來的一個概念。因爲低級瀏覽器不支持css3,但css3的效果又太優秀不忍放棄,因此在高級瀏覽中使用css3而低級瀏覽器只保證最基本的功能。咋一看兩個概念差很少,都是在關注不一樣瀏覽器下的不一樣體驗,關鍵的區別是他們所側重的內容,以及這種不一樣形成的工做流程的差別。web
什麼是漸進加強(progressive enhancement)、優雅降級(graceful degradation)呢?瀏覽器
漸進加強 progressive enhancement:針對低版本瀏覽器進行構建頁面,保證最基本的功能,而後再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。安全
優雅降級 graceful degradation:一開始就構建完整的功能,而後再針對低版本瀏覽器進行兼容。測試
區別:優雅降級是從複雜的現狀開始,並試圖減小用戶體驗的供給,而漸進加強則是從一個很是基礎的,可以起做用的版本開始,並不斷擴充,以適應將來環境的須要。降級(功能衰減)意味着往回看;而漸進加強則意味着朝前看,同時保證其根基處於安全地帶。網站
「優雅降級」觀點spa
「優雅降級」觀點認爲應該針對那些最高級、最完善的瀏覽器來設計網站。而將那些被認爲「過期」或有功能缺失的瀏覽器下的測試工做安排在開發週期的最後階段,並把測試對象限定爲主流瀏覽器(如 IE、Mozilla 等)的前一個版本。設計
在這種設計範例下,舊版的瀏覽器被認爲僅能提供「簡陋卻無妨 (poor, but passable)」 的瀏覽體驗。你能夠作一些小的調整來適應某個特定的瀏覽器。但因爲它們並不是咱們所關注的焦點,所以除了修復較大的錯誤以外,其它的差別將被直接忽略。code
「漸進加強」觀點
「漸進加強」觀點則認爲應關注於內容自己。
內容是咱們創建網站的誘因。有的網站展現它,有的則收集它,有的尋求,有的操做,還有的網站甚至會包含以上的種種,但相同點是它們全都涉及到內容。這使得「漸進加強」成爲一種更爲合理的設計範例。這也是它當即被 Yahoo! 所採納並用以構建其「分級式瀏覽器支持 (Graded Browser Support)」策略的緣由所在。