前在看一些css3效果demo的時(shí)候,發(fā)現(xiàn)有些寫css3屬性時(shí),兼容性的寫法順序不太一樣,比如transition屬性,有些把transition放在前面有些是放在后面,當(dāng)然這也有可能包含了coder個(gè)人的習(xí)慣或是強(qiáng)迫性>"<,比如下面這兩種:

.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;}

帶前綴的排列應(yīng)該只是為了整齊吧(還是代表了對瀏覽器的喜好程度)?但是transition放在前面還是后面卻引申了兩個(gè)概念:優(yōu)雅降級和漸進(jìn)增強(qiáng)。
優(yōu)雅降級和漸進(jìn)增強(qiáng)印象中是隨著css3流出來的一個(gè)概念。由于低級瀏覽器不支持css3,但css3的效果又太優(yōu)秀不忍放棄,所以在高級瀏覽中使用css3而低級瀏覽器只保證最基本的功能。咋一看兩個(gè)概念差不多,都是在關(guān)注不同瀏覽器下的不同體驗(yàn),關(guān)鍵的區(qū)別是他們所側(cè)重的內(nèi)容,以及這種不同造成的工作流程的差異。
什么是漸進(jìn)增強(qiáng)(progressive enhancement)、優(yōu)雅降級(graceful degradation)呢?
漸進(jìn)增強(qiáng) progressive enhancement:針對低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本的功能,然后再針對高級瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)。
優(yōu)雅降級 graceful degradation:一開始就構(gòu)建完整的功能,然后再針對低版本瀏覽器進(jìn)行兼容。
區(qū)別:優(yōu)雅降級是從復(fù)雜的現(xiàn)狀開始,并試圖減少用戶體驗(yàn)的供給,而漸進(jìn)增強(qiáng)則是從一個(gè)非?;A(chǔ)的,能夠起作用的版本開始,并不斷擴(kuò)充,以適應(yīng)未來環(huán)境的需要。降級(功能衰減)意味著往回看;而漸進(jìn)增強(qiáng)則意味著朝前看,同時(shí)保證其根基處于安全地帶。
“優(yōu)雅降級”觀點(diǎn)
“優(yōu)雅降級”觀點(diǎn)認(rèn)為應(yīng)該針對那些最高級、最完善的瀏覽器來設(shè)計(jì)網(wǎng)站。而將那些被認(rèn)為“過時(shí)”或有功能缺失的瀏覽器下的測試工作安排在開發(fā)周期的最后階段,并把測試對象限定為主流瀏覽器(如 IE、Mozilla 等)的前一個(gè)版本。
在這種設(shè)計(jì)范例下,舊版的瀏覽器被認(rèn)為僅能提供“簡陋卻無妨 (poor, but passable)” 的瀏覽體驗(yàn)。你可以做一些小的調(diào)整來適應(yīng)某個(gè)特定的瀏覽器。但由于它們并非我們所關(guān)注的焦點(diǎn),因此除了修復(fù)較大的錯(cuò)誤之外,其它的差異將被直接忽略。
“漸進(jìn)增強(qiáng)”觀點(diǎn)
“漸進(jìn)增強(qiáng)”觀點(diǎn)則認(rèn)為應(yīng)關(guān)注于內(nèi)容本身。
內(nèi)容是我們建立網(wǎng)站的誘因。有的網(wǎng)站展示它,有的則收集它,有的尋求,有的操作,還有的網(wǎng)站甚至?xí)陨系姆N種,但相同點(diǎn)是它們?nèi)忌婕暗絻?nèi)容。這使得“漸進(jìn)增強(qiáng)”成為一種更為合理的設(shè)計(jì)范例。這也是它立即被 Yahoo! 所采納并用以構(gòu)建其“分級式瀏覽器支持 (Graded Browser Support)”策略的原因所在。