亚洲国产爱久久全部精品_日韩有码在线播放_国产欧美在线观看_中文字幕不卡在线观看

A11Y 101: 構(gòu)建可訪問性React應(yīng)用的技巧

眾所周之,React目前是前端領(lǐng)域最為流行的JavaScript框架之一,很多Web開發(fā)都是基于React進(jìn)行Web開發(fā)。愛掏網(wǎng) - it200.com但據(jù) WebAIM Million統(tǒng)計分析可得知“使用React框架開發(fā)的Web應(yīng)用或Web頁面就可訪問性方面而言,其錯誤要比一般的主頁多出5.7%”。愛掏網(wǎng) - it200.com而且在社區(qū)中普遍認(rèn)為,基于React開發(fā)的Web應(yīng)用對于Web可訪問性本來就差,而且開發(fā)者無法很好的基于React框架開發(fā)出具有可訪問性的Web應(yīng)用。愛掏網(wǎng) - it200.com事實上這是一種錯誤的認(rèn)知,基于React能不能開發(fā)出具有可訪問性的Web應(yīng)用和React本身并沒有太多的關(guān)系,因為開發(fā)一個具有可訪問性的Web應(yīng)用更多的是和HTML和WAI-ARIA有著緊密的關(guān)聯(lián)。愛掏網(wǎng) - it200.com換句說,基于React開發(fā)具有可訪問性的Web應(yīng)用,應(yīng)該注意些什么,以及如何更好的開發(fā)更具可訪問性的Web應(yīng)用。愛掏網(wǎng) - it200.com這是今天要和大家一起聊的話題。愛掏網(wǎng) - it200.com

為什么說基于React框架開發(fā)的Web應(yīng)用或頁面更不具可訪問性呢?” 這除了源于錯誤的認(rèn)知之外,還有一定的客觀因素存在的。愛掏網(wǎng) - it200.com其中一個原因就是基于React框架開發(fā)Web應(yīng)用時會(或者可能會)使用組件庫。愛掏網(wǎng) - it200.com如果使用的組件庫自身就不具有Web可訪問性的話,就會造成React開發(fā)的應(yīng)用不具Web可訪問性。愛掏網(wǎng) - it200.com換句話說,使用其他組件(特別是第三方組件)進(jìn)行開發(fā),要改善Web可訪問性而言是件痛苦的事情,而且成本也是極高的。愛掏網(wǎng) - it200.com因為在這個場景之下,要徹底優(yōu)化Web可訪問性就需要去修改組件。愛掏網(wǎng) - it200.com

另外,那就是基于React框架開發(fā)者自身就存在一定的問題。愛掏網(wǎng) - it200.com比如 @BrittanyIRL 在2024年React Conf大會上分享的話題中提到的:

簡單地說,很多開發(fā)者,特別是基于React這樣的JavaScript框架開發(fā)者而言,已經(jīng)習(xí)慣了只使用來構(gòu)建自己的模板(Template)。愛掏網(wǎng) - it200.com也就是說,不基于語義化的HTML進(jìn)行Web開發(fā),要讓W(xué)eb應(yīng)用更具可訪問性,難度是極大的,即使優(yōu)化起來成本也很高。愛掏網(wǎng) - it200.com

另外一個原因正如 @estellevw 在Twitter上的吐槽:

用一句話來概括的話,就是:

如果要僅基于divspan進(jìn)行開發(fā),要開發(fā)具有Web可訪問性的Web應(yīng)用或Web頁面就需要強(qiáng)度的依賴于WAI-ARIA相關(guān)的技術(shù)。愛掏網(wǎng) - it200.com

有關(guān)于WAI-ARIA更詳細(xì)的介紹可以閱讀《A11Y 101:WAI-ARIA初探》一文,或者閱讀下面相關(guān)教程:

  • WAI-ARIA Overview
  • Contribute to w3c/wai-tutorials
  • The WAI Forward
  • ARIA 簡介
  • Demystifying WAI-ARIA
  • WAI-ARIA basics
  • WAI-ARIA in 5 steps
  • POURing ARIA into the HTML element specs
  • Using ARIA for Web Applications
  • The Dangers of Using WAI-ARIA Incorrectly
  • ARIA Has Perfect Support
  • ARIA: poison or antidote?
  • Accessible Charts with ARIA
  • POURing ARIA into the HTML element specs
  • Beginning to Demystify ARIA
  • Complete List of WAI ARIA Roles and Their Uses
  • Introduction to ARIA - Accessible Rich Internet Applications

如果你曾經(jīng)接觸過Web可訪問性相關(guān)的知識的話,你應(yīng)該知道。愛掏網(wǎng) - it200.com針對于Web開發(fā)而言,構(gòu)建可訪問性的Web應(yīng)用可以根據(jù)相關(guān)的規(guī)范(即 網(wǎng)絡(luò)內(nèi)容無障礙指南,也就是大家所說的WCAG指南)來做開發(fā)。愛掏網(wǎng) - it200.com另外和WCAG相關(guān)的規(guī)范還有:

  • Wuhcag提供的WCAG檢查表(WCAG Checklist From Wuhcag)
  • WebAIM提供的WCAG檢查表(WCAG Checklist From WebAIM)
  • A11Y Project提供的檢查表(Checklist Frome The A11Y Project)

React框架還沒有出現(xiàn)之前(或者說不基于任何JavaScript框架開發(fā)Web應(yīng)用),都是基于HTML來進(jìn)行開發(fā)。愛掏網(wǎng) - it200.comHTML是構(gòu)建Web應(yīng)用最基本的部分之一,但對于可訪問的Web應(yīng)用而言,在原有的DOM基礎(chǔ)上會有另一個解析樹,即 AOM樹(可訪問性樹)。愛掏網(wǎng) - it200.com粗略地說,AOM是DOM樹的一個子集。愛掏網(wǎng) - it200.com我們可以用下圖來描述AOM和DOM之間的關(guān)系:

對于用戶界面和輔助技術(shù),也可以用AOM和DOM來描述它們之間的關(guān)系:

但是,基于React框架開發(fā)的Web應(yīng)用和我們平時使用HTML開發(fā)的Web應(yīng)用還是有很大區(qū)別的。愛掏網(wǎng) - it200.com在React中,它通過構(gòu)建一個“虛擬DOM”來替代DOM,執(zhí)行DOM更新的替代方法(直接更新DOM的開銷可能相當(dāng)大)。愛掏網(wǎng) - it200.com對于每個DOM對象,虛擬DOM中將有一個對應(yīng)的對象。愛掏網(wǎng) - it200.com

因此,雖然虛擬DOM本質(zhì)上只是DOM的克隆,但它沒有修改用戶所看到的內(nèi)容的能力。愛掏網(wǎng) - it200.com這實際上使整個過程更快,因為可以“批處理”對虛擬DOM的更改,并且可以在事件循環(huán)結(jié)束時進(jìn)行差異(diff)操作

當(dāng)你渲染一個JSX元素時,每個虛擬DOM節(jié)點(diǎn)將被更新,然后在更新之前的虛擬DOM和更新之后的現(xiàn)在的虛擬DOM之間執(zhí)行一個“差異操作”,并能夠理解哪些對象被更改了。愛掏網(wǎng) - it200.com

虛擬DOM是一個非常重要也是非常復(fù)雜的概念,如果你想了解有關(guān)于虛擬DOM更多的知識,可以閱讀:

  • Understanding the Virtual DOM
  • JSX and the Virtual DOM
  • React 中的虛擬 DOM 和 diff 算法
  • 圖解 React Virtual DOM

先拋開虛擬DOM不聊,根據(jù)AOM和DOM之間的關(guān)系,我們可以把虛擬DOM結(jié)合進(jìn)來,那么用下圖來描述:

換句話說,即使你對虛擬DOM不太了解也不過于太擔(dān)心,因為基于React構(gòu)建可訪問的Web應(yīng)用和以往構(gòu)建可訪問的Web應(yīng)用相同,采用的也是相同的規(guī)范,只不過在寫模板(Template)時有所差異。愛掏網(wǎng) - it200.comJSX語法編寫模板。愛掏網(wǎng) - it200.com如果你不熟悉它,建議你花點(diǎn)時間閱讀以下資源:

  • 閱讀React文檔,根據(jù)其官方文檔提供的教程使用React
  • 了解React的鉤子函數(shù)的使用,特別是useStateuseEffect的基本使用
  • 理解React組件中spread操作符的使用
  • 了解React中children的使用
  • 理解JavaScript數(shù)組中的map()函數(shù)的使用
  • npm的使用有基本的了解

有了這些基礎(chǔ),我們就來開始看看如何在React環(huán)境下構(gòu)建更具可訪問性的Web應(yīng)用。愛掏網(wǎng) - it200.com

HTML屬性和保留字

熟悉JSX或了解React開發(fā)的同學(xué)都知道,在React中編寫HTML時要記住的一件事是,HTML屬性需要用camelCase(駝峰)編寫。愛掏網(wǎng) - it200.com例如,tabindex需要寫成tabIndex。愛掏網(wǎng) - it200.com這個規(guī)則的例外是,任何data-*aria-*aria-*是ARIA中的屬性集,比如aria-label,aria-hidden等)屬性仍然按照以往的寫法,不需要換成駝峰寫法。愛掏網(wǎng) - it200.com

JSX是JavaScript中的一種擴(kuò)展語法,而JavaScript中還有一些特定HTML屬性名匹配的保留字。愛掏網(wǎng) - it200.com這些不能以你期望的方式來書寫。愛掏網(wǎng) - it200.com比如for就是JavaScript中的一個保留字,在JavaScript中它用于循環(huán)遍歷,而在React中元素時,可以使用for屬性與相應(yīng)的表單控件綁定在一起,那么這個時候,在JSX中就需要把for換成htmlFor屬性。愛掏網(wǎng) - it200.com另外,class也是JavaScript中的保留字,它在HTML中是用來給元素聲明類名,那么在React中它就得換成className。愛掏網(wǎng) - it200.com除此之外,可能還有更多屬性需要關(guān)注,但到目前為止,我發(fā)現(xiàn)JavaScript中保留字和HTML屬性之間只有這些沖突。愛掏網(wǎng) - it200.com

語義化的HTML

語義化的HTML指的是具有語義的HTML標(biāo)簽,它使用針對其目的而全名的元素。愛掏網(wǎng) - it200.com語義化的HTML也是構(gòu)建可訪問Web應(yīng)用的基礎(chǔ),利用多種HTML元素來強(qiáng)化你的Web應(yīng)用中的信息通??梢允褂媚阒苯訕?gòu)建更具可訪問性的Web應(yīng)用。愛掏網(wǎng) - it200.com但正如前面 @BrittanyIRL提到的,如今天很多使用React(或類似于React框架,比如Vue)的開發(fā)者過度的依賴于這種無語義化的HTML標(biāo)簽,甚至很多開發(fā)者都不知道如何在開發(fā)中使用有語義化的標(biāo)簽。愛掏網(wǎng) - it200.com

正因為,使用類似React框架開發(fā)的Web應(yīng)用可能只能看到標(biāo)簽,也讓眾多開發(fā)者造成一種誤解:

這也讓React背上了不可構(gòu)建可訪問性Web應(yīng)用的鍋。愛掏網(wǎng) - it200.com換句話說,我們使用React框架來開發(fā)Web應(yīng)該,不應(yīng)該只使用這兩個無語義的HTML標(biāo)簽,我們更應(yīng)該在寫模板(JSX模板)時考慮有語義的HTML。愛掏網(wǎng) - it200.com這樣做有幾個原因:

包月會員查看

分享到:
  • 上一篇:使用React Hooks構(gòu)建CSS的transition和animation
  • 下一篇:SVG在React中的運(yùn)用

相關(guān)內(nèi)容

    發(fā)表評論
    更多 網(wǎng)友評論0 條評論) 暫無評論

    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評論
    更多 網(wǎng)友評論0 條評論)
    暫無評論

    返回頂部

    亚洲国产爱久久全部精品_日韩有码在线播放_国产欧美在线观看_中文字幕不卡在线观看

      
      

      9000px;">

        
        

        欧美日韩国产电影| 国产精品一区二区久久不卡| 欧美怡红院视频| 久久99精品国产| 亚洲综合一区在线| 国产福利91精品一区二区三区| 亚洲自拍欧美精品| 中文字幕乱码日本亚洲一区二区| 91精品国产综合久久精品| 成人午夜在线视频| 国产精品一区二区三区四区| 久久99国产精品久久| 亚洲一级二级三级| 亚洲天天做日日做天天谢日日欢| 91精品国产91久久久久久最新毛片| 欧美日韩小视频| 欧美精品黑人性xxxx| 69堂国产成人免费视频| 日韩欧美国产三级| 中文字幕欧美激情| 亚洲精品美国一| 日韩精品一二三四| 激情小说亚洲一区| 成人黄色av网站在线| 99re66热这里只有精品3直播 | 欧美国产精品中文字幕| 亚洲国产精品黑人久久久| 久久九九国产精品| 国产精品国产自产拍高清av| 国产精品国产a| 中文字幕亚洲电影| 亚洲成人自拍一区| 亚洲在线一区二区三区| 欧美一区二区美女| 91丝袜美女网| 在线视频观看一区| 国产精品123区| 樱桃视频在线观看一区| 久久人人爽爽爽人久久久| 色悠悠亚洲一区二区| 青青国产91久久久久久| 亚洲精品视频一区| 2023国产精华国产精品| 88在线观看91蜜桃国自产| 99久久99久久久精品齐齐| 极品美女销魂一区二区三区 | 在线免费不卡电影| 国产成人超碰人人澡人人澡| 理论片日本一区| 一区二区激情小说| 精品一区二区综合| 免费人成黄页网站在线一区二区| 樱桃视频在线观看一区| 日韩美女视频一区二区| 欧美国产精品专区| 国产视频一区二区三区在线观看| 日韩一区二区三区电影在线观看| 亚洲制服丝袜av| 国产成人鲁色资源国产91色综| 日本欧美一区二区在线观看| 亚洲一区在线电影| 日韩一区二区麻豆国产| 欧美一区二区三区在线观看视频| 欧美日韩情趣电影| 欧美放荡的少妇| 欧美人牲a欧美精品| 欧美一区二区在线免费播放| 7777精品伊人久久久大香线蕉 | 亚洲私人黄色宅男| 久久久久99精品国产片| 91国模大尺度私拍在线视频| av激情亚洲男人天堂| 成人网男人的天堂| av福利精品导航| 国产精品人成在线观看免费 | 亚洲va韩国va欧美va| 久久久久久久久久久久久女国产乱| 欧美三级日韩三级| 成人国产精品免费| 成人av电影在线播放| 一本一本大道香蕉久在线精品| 色天天综合久久久久综合片| 在线免费观看日本欧美| 欧美日韩mp4| 精品成人一区二区三区| 久久蜜桃av一区二区天堂| 久久久99久久| 国产精品护士白丝一区av| 一区二区国产盗摄色噜噜| 亚洲国产成人av| 美女网站一区二区| 成人一区二区三区在线观看| 97精品久久久久中文字幕| 国产曰批免费观看久久久| 成人动漫av在线| 欧美日韩视频在线第一区| 欧美不卡一区二区三区四区| yourporn久久国产精品| 久久综合色综合88| 亚洲视频1区2区| 午夜精品福利一区二区三区蜜桃| 国产精品美女一区二区三区| 久久久国产精华| 日本vs亚洲vs韩国一区三区二区| 欧美精品久久天天躁| 精品亚洲国内自在自线福利| 国产日韩精品久久久| 色综合久久久久综合体| 天堂午夜影视日韩欧美一区二区| 精品久久久久久久人人人人传媒 | 国产精品 欧美精品| 中文字幕av一区二区三区高 | 99久久99久久精品国产片果冻| 欧美巨大另类极品videosbest| 久久精品亚洲精品国产欧美kt∨| 一区二区三区91| 国模少妇一区二区三区| 欧美性猛交xxxx乱大交退制版 | 色域天天综合网| 91老师国产黑色丝袜在线| 久久国产免费看| 欧美国产欧美综合| 九色综合国产一区二区三区| 欧洲精品一区二区| 国产精品伦一区| 激情另类小说区图片区视频区| 欧美日韩精品欧美日韩精品一 | 欧美成人bangbros| 国产精品视频免费看| 欧美精品日韩一区| 亚洲一区二区三区爽爽爽爽爽| 国产91精品露脸国语对白| 欧美日韩国产一级片| 精品乱码亚洲一区二区不卡| 亚洲一区二区高清| 91免费看视频| 中文字幕中文字幕一区二区| 国产乱码精品一区二区三区av| 日本不卡123| 在线观看视频一区| 国产精品色婷婷久久58| 国产精品88888| 26uuu色噜噜精品一区二区| 亚洲高清不卡在线| 欧美色网一区二区| 亚洲妇熟xx妇色黄| 在线精品观看国产| 亚洲精品国产一区二区精华液 | 一区二区三区精品在线观看| 成人三级在线视频| 国产欧美精品在线观看| 欧美成人福利视频| 国模套图日韩精品一区二区| 日韩午夜在线影院| 裸体一区二区三区| 2023国产精华国产精品| 制服丝袜中文字幕一区| 国产精品久久久久7777按摩| 色综合久久99| 婷婷久久综合九色综合绿巨人| 91精品国产综合久久精品性色| 国产精品国产三级国产aⅴ中文| 成人午夜免费av| 在线视频综合导航| 欧美另类一区二区三区| 亚洲国产精品人人做人人爽| 韩国欧美一区二区| 欧美日韩精品一二三区| 亚洲电影激情视频网站| 高清不卡在线观看| 久久精品一区二区| 国产精品综合视频| 国产精品国产馆在线真实露脸| 欧美三级资源在线| 国产在线播精品第三| 亚洲日本va在线观看| 欧美日韩在线精品一区二区三区激情 | 男女男精品视频网| 欧美一二三区精品| 麻豆中文一区二区| 欧美一区二区三区精品| 成人久久视频在线观看| 亚洲成人在线网站| 中文字幕免费观看一区| 欧美亚一区二区| 经典三级视频一区| 亚洲欧美另类在线| 亚洲国产精品自拍| 免费高清在线一区| 国产精品久久久久永久免费观看| kk眼镜猥琐国模调教系列一区二区| 亚洲一卡二卡三卡四卡 | 欧美一级理论片| 精品一区二区三区在线观看国产| 国产农村妇女毛片精品久久麻豆| 欧美最猛性xxxxx直播| 国产精品99久久久久久有的能看| 国内国产精品久久| 久久精品国产免费看久久精品| 亚洲精品免费在线播放|