雜談:漸進(jìn)增強(qiáng)與優(yōu)雅降級(jí)

作為一名前端開(kāi)發(fā)人員错沃,最頭疼的莫過(guò)于瀏覽器兼容。遠(yuǎn)古時(shí)期萬(wàn)惡的IE6雀瓢,到現(xiàn)在CSS3不兼容的IE7/8.為了保證不同版本瀏覽器都有共同或更優(yōu)化的用戶體驗(yàn)枢析,前端搬磚的我們不得不與瀏覽器兼容頑強(qiáng)斗爭(zhēng)。而漸進(jìn)增強(qiáng)優(yōu)雅降級(jí)兩種不同的開(kāi)發(fā)流程刃麸,也是在我們項(xiàng)目初期做調(diào)研選型時(shí)會(huì)考慮的一個(gè)點(diǎn)醒叁。

漸進(jìn)增錢/優(yōu)雅降級(jí)

漸進(jìn)增強(qiáng)(Progressive Enhancement)

一開(kāi)始就針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁(yè)面,完成基本的功能泊业,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果把沼、交互、追加功能達(dá)到更好的體驗(yàn)吁伺。

優(yōu)雅降級(jí)(graceful degradation)

一開(kāi)始就構(gòu)建站點(diǎn)的完整功能饮睬,然后針對(duì)瀏覽器測(cè)試和修復(fù)。比如一開(kāi)始使用 CSS3 的特性構(gòu)建了一個(gè)應(yīng)用篮奄,然后逐步針對(duì)各大瀏覽器進(jìn)行 hack 使其可以在低版本瀏覽器上正常瀏覽续捂。

初一看這兩個(gè)概念有點(diǎn)高大上,其實(shí)作為開(kāi)發(fā)人員來(lái)說(shuō)宦搬,多多少少已經(jīng)在項(xiàng)目中運(yùn)用只是你自己不察覺(jué)而已牙瓢。換個(gè)詞匯就比較好理解了,漸進(jìn)增強(qiáng)(向上/前兼容)间校,優(yōu)雅降級(jí)(向下兼容)矾克,向上兼容高版本瀏覽器,向下兼容低版本瀏覽器憔足。

二者區(qū)別

漸進(jìn)增強(qiáng)優(yōu)雅降級(jí)只是看待同種事物的兩種觀點(diǎn)胁附。漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)都關(guān)注于同一網(wǎng)站在不同設(shè)備里不同瀏覽器下的表現(xiàn)程度。關(guān)鍵的區(qū)別則在于它們各自關(guān)注的著重點(diǎn)不同滓彰,以及這種不同的關(guān)注點(diǎn)如何影響項(xiàng)目開(kāi)發(fā)的流程控妻。

優(yōu)雅降級(jí)觀點(diǎn)認(rèn)為應(yīng)該針對(duì)那些最高級(jí)、最完善的瀏覽器來(lái)設(shè)計(jì)網(wǎng)站揭绑。而將那些被認(rèn)為“過(guò)時(shí)”或有功能缺失的瀏覽器下的測(cè)試工作安排在開(kāi)發(fā)周期的最后階段弓候,并把測(cè)試對(duì)象限定為主流瀏覽器(如 Chrome郎哭,Safari,IE菇存、FireFox等)的前一個(gè)版本夸研。在這種設(shè)計(jì)范例下,舊版的瀏覽器被認(rèn)為僅能提供“簡(jiǎn)陋卻無(wú)妨 (poor, but passable)” 的瀏覽體驗(yàn)依鸥。你可以做一些小的調(diào)整來(lái)適應(yīng)某個(gè)特定的瀏覽器亥至。但由于它們并非我們所關(guān)注的焦點(diǎn),因此除了修復(fù)較大的錯(cuò)誤之外贱迟,其它的差異將被直接忽略姐扮。

漸進(jìn)增強(qiáng)觀點(diǎn)則認(rèn)為應(yīng)關(guān)注于內(nèi)容本身。請(qǐng)注意其中的差別:我甚至連“瀏覽器”三個(gè)字都沒(mé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)”策略的原因所在包雀。

概括:優(yōu)雅降級(jí)是從復(fù)雜的現(xiàn)狀開(kāi)始,并試圖減少用戶體驗(yàn)的供給亲铡,而漸進(jìn)增強(qiáng)則是從一個(gè)非巢判矗基礎(chǔ)的,能夠起作用的版本開(kāi)始奖蔓,并不斷擴(kuò)充赞草,以適應(yīng)未來(lái)環(huán)境的需要。降級(jí)(功能衰減)意味著往回看吆鹤;而漸進(jìn)增強(qiáng)則意味著朝前看厨疙,同時(shí)保證其根基處于安全地帶

代碼案例

.transition { /*漸進(jìn)增強(qiáng)寫(xiě)法*/
  -webkit-transition: all .5s;
     -moz-transition: all .5s;
       -o-transition: all .5s;
          transition: all .5s;
}
.transition { /*優(yōu)雅降級(jí)寫(xiě)法*/
          transition: all .5s;
       -o-transition: all .5s;
     -moz-transition: all .5s;
  -webkit-transition: all .5s;
}
// -webkit- / -moz- / -o- (瀏覽器前綴)
  1. 很久以前:瀏覽器前綴CSS3和正常CSS3都不支持;
  2. 不久之前:瀏覽器只支持前綴CSS3疑务,不支持正常CSS3沾凄;
  3. 現(xiàn)在:瀏覽器既支持前綴CSS3,又支持正常CSS3知允;
  4. 未來(lái):瀏覽器不支持前綴CSS3撒蟀,僅支持正常CSS3.

漸進(jìn)增強(qiáng)的寫(xiě)法,優(yōu)先考慮老版本瀏覽器的可用性温鸽,最后才考慮新版本的可用性保屯。在時(shí)期3中前綴CSS3和正常CSS3都可用的情況下,正常CSS3會(huì)覆蓋前綴CSS3。優(yōu)雅降級(jí)的寫(xiě)法配椭,優(yōu)先考慮新版本瀏覽器的可用性虫溜,最后才考慮老版本的可用性。在時(shí)期3中前綴CSS3和正常CSS3都可用的情況下股缸,前綴CSS3會(huì)覆蓋正常的CSS3衡楞。

現(xiàn)實(shí)項(xiàng)目開(kāi)發(fā)中,推薦使用漸進(jìn)增強(qiáng)的寫(xiě)法(postcss的autofixer也是這種寫(xiě)法)敦姻,因?yàn)榍熬YCSS3的某些屬性在瀏覽器中的實(shí)現(xiàn)效果有可能與正常的CSS3實(shí)現(xiàn)效果不太一樣瘾境,所以最終還是得以正常CSS3為準(zhǔn)。

可參考張?chǎng)涡翊笊竦奈恼隆?a target="_blank" rel="nofollow">需警惕CSS3屬性的書(shū)寫(xiě)順序镰惦。

如何選擇

  • 低版本瀏覽器用戶占比居多迷守,優(yōu)先采用漸進(jìn)增強(qiáng)的開(kāi)發(fā)流程;
  • 高版本瀏覽器用戶占比居多旺入,優(yōu)先采用優(yōu)雅降級(jí)的開(kāi)發(fā)流程兑凿;

事實(shí)上絕大多數(shù)的大公司都是采用漸進(jìn)增強(qiáng)的方式,因?yàn)闃I(yè)務(wù)優(yōu)先茵瘾,提升用戶體驗(yàn)永遠(yuǎn)不會(huì)排在最前面礼华。例如,淘寶拗秘,京東圣絮,新浪微博等網(wǎng)站前端的更新,不可能追求某個(gè)特效而不考慮低版本用戶可不可用雕旨,一定是確保低版本到高版本的可訪問(wèn)性扮匠,再去漸進(jìn)增強(qiáng),采用新功能給高版本用戶提供更好的用戶體驗(yàn)凡涩。當(dāng)然也有一些反例如阿里云棒搜,本身就是面向軟件開(kāi)發(fā)者,這個(gè)群體的人總是喜歡嘗試新事物活箕,總是喜歡酷炫的特效帮非,總是喜歡把它們的軟件更新到最新版本,而且大多用的是谷歌瀏覽器讹蘑,即使用IE瀏覽器末盔,也是高版本IE瀏覽器,面對(duì)這種情況座慰,優(yōu)雅降級(jí)的開(kāi)發(fā)流程才是更好的選擇陨舱。


參考文章

  1. 漸進(jìn)增強(qiáng)、優(yōu)雅降級(jí)
  2. 漸進(jìn)增強(qiáng) VS 優(yōu)雅降級(jí)
  3. 漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)之間的有什么不同?
  4. 需警惕CSS3屬性的書(shū)寫(xiě)順序
  5. 優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)的區(qū)別

作者:以樂(lè)之名
本文原創(chuàng)版仔,有不當(dāng)?shù)牡胤綒g迎指出游盲。轉(zhuǎn)載請(qǐng)指明出處误墓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市益缎,隨后出現(xiàn)的幾起案子谜慌,更是在濱河造成了極大的恐慌,老刑警劉巖莺奔,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欣范,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡令哟,警方通過(guò)查閱死者的電腦和手機(jī)恼琼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)屏富,“玉大人晴竞,你說(shuō)我怎么就攤上這事『莅耄” “怎么了噩死?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)神年。 經(jīng)常有香客問(wèn)我已维,道長(zhǎng),這世上最難降的妖魔是什么瘤袖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任衣摩,我火速辦了婚禮昂验,結(jié)果婚禮上捂敌,老公的妹妹穿的比我還像新娘。我一直安慰自己既琴,他們只是感情好占婉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著甫恩,像睡著了一般逆济。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磺箕,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天奖慌,我揣著相機(jī)與錄音,去河邊找鬼松靡。 笑死简僧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雕欺。 我是一名探鬼主播岛马,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼棉姐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了啦逆?” 一聲冷哼從身側(cè)響起伞矩,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夏志,沒(méi)想到半個(gè)月后乃坤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盲镶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年侥袜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溉贿。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枫吧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宇色,到底是詐尸還是另有隱情九杂,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布宣蠕,位于F島的核電站例隆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏抢蚀。R本人自食惡果不足惜镀层,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望皿曲。 院中可真熱鬧唱逢,春花似錦、人聲如沸屋休。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)劫樟。三九已至痪枫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叠艳,已是汗流浹背奶陈。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留附较,地道東北人吃粒。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像翅睛,于是被迫代替她去往敵國(guó)和親声搁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子黑竞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 只要你做完這100套試題檐涝,你在面試的時(shí)候一定會(huì)手到擒來(lái)遏匆!期待大家的入職offer!(2) 一谁榜、選擇題 1幅聘、用哪一個(gè)...
    Linux小管家閱讀 3,459評(píng)論 1 30
  • 登登登登....第一個(gè)登場(chǎng)的是簡(jiǎn)寶玉彩圖在最下面 第二個(gè)是簡(jiǎn)黛玉... 第三個(gè)是...小薦薦 最后一個(gè)就是可愛(ài)迷人...
    Melvin寯鴻閱讀 312評(píng)論 10 9