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