在看各種文章的時候兩個詞匯優(yōu)雅降級和漸進增強。然后我就搜了一下,看了一下具體的含義。
參考的是這個 stackoverflow-What is the difference between Progressive Enhancement and Graceful Degradation?
這兩個詞語分別代表了兩種書寫css的規(guī)范。具體形式如下:
.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;
}
上面這兩種就是了,上面那種是漸進增強,可以看到是從支持長一點的-webkit私有屬性開始,到最后的支持現(xiàn)在幾乎所有主流瀏覽器的無私有屬性寫法,代表了瀏覽器的一點點的適配更多寫法的漸進寫法。后面那種相反,是從最新的瀏覽器寫法在向下優(yōu)雅降級。
但是什么是漸進增強(progressive enhancement)、優(yōu)雅降級(graceful degradation)呢?
漸進增強 progressive enhancement:針對低版本瀏覽器進行構(gòu)建頁面,保證最基本的功能,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。
優(yōu)雅降級 graceful degradation:一開始就構(gòu)建完整的功能,然后再針對低版本瀏覽器進行兼容。
區(qū)別:優(yōu)雅降級是從復雜的現(xiàn)狀開始,并試圖減少用戶體驗的供給,而漸進增強則是從一個非常基礎的,能夠起作用的版本開始,并不斷擴充,以適應未來環(huán)境的需要。降級(功能衰減)意味著往回看;而漸進增強則意味著朝前看,同時保證其根基處于安全地帶。
看著這兩點似乎也沒什么大的區(qū)別,感覺看上去也就是寫無關緊要的區(qū)別,但是實際上,這是兩種思維邏輯、是根本上面產(chǎn)生的不同。
優(yōu)雅降級的觀點是應該針對那些最高級、功能最全的瀏覽器來設計網(wǎng)站。其他的都只是在這個基礎上考慮的一些補充和適配而已。
在這種設計范例下,舊版的瀏覽器被認為僅能提供“簡陋卻無妨 (poor, but passable)” 的瀏覽體驗。你可以做一些小的調(diào)整來適應某個特定的瀏覽器。但由于它們并非我們所關注的焦點,因此除了修復較大的錯誤之外,其它的差異將被直接忽略。
而漸進增強的觀點則認為應更多的關注在內(nèi)容本身。
內(nèi)容是我們建立網(wǎng)站的誘因。有的網(wǎng)站展示它,有的則收集它,有的尋求,有的操作,還有的網(wǎng)站甚至會包含以上的種種,但相同點是它們?nèi)忌婕暗絻?nèi)容。這使得“漸進增強”成為一種更為合理的設計范例。這也是它立即被 Yahoo! 所采納并用以構(gòu)建其“分級式瀏覽器支持 (Graded Browser Support)”策略的原因所在。
這是兩者產(chǎn)生差異的根本,但是其實兩者的差異也并沒有這么大,畢竟大多數(shù)這種代碼都是一致的,只不過是代碼規(guī)范上的不同。到底要選擇哪一種就看各自的喜好了。