HTMLï¼ç¡éç¤çè¯å¥½åºç¤
ç¶²é å §å®¹å ¶å¯¦åªè¦ç¢ºä¿ä½¿ç¨æ£ç¢ºç HTML æ¨ç±¤ï¼å°±å¯ä»¥å¯¦ç¾ç¡éç¤æ§ãæ¬æå°è©³ç´°ä»ç´¹å¦ä½ä½¿ç¨ HTML ä¾ç¢ºä¿æå¤§ç¨åº¦çç¡éç¤æ§ã
| åæï¼ | éçæ HTMLãCSS ååºç¤ç¡éç¤ç¸éæ¦å¿µã |
|---|---|
| å¸ç¿ææï¼ |
|
HTML åç¡éç¤
ç¶ä½ å¸ç¿æ´å¤éæ¼ HTML çç¥èââé±è®æ´å¤è³æºãæ¥çæ´å¤ç¯ä¾çââä½ æä¸æ·çå°ä¸åå ±åç主é¡ï¼ä½¿ç¨èªç¾©å HTML çéè¦æ§ï¼ææç¨±çº POSHï¼æ Plain Old Semantic HTMLï¼ãéæå³èç¡å¯è½å°ä½¿ç¨æ£ç¢ºç HTML æ¨ç±¤ä¾è¡¨éæ£ç¢ºçæåã
ä½ å¯è½ææ³ï¼çºä»éº¼èªç¾©åå¾éè¦ãç¢ç«ï¼ä½ å¯ä»¥ä½¿ç¨ CSS å JavaScript ççµåå¹¾ä¹å¯ä»¥è® HTML å ç´ ä»¥ä»»ä½ä½ æ³è¦çæ¹å¼éä½ãä¾å¦ï¼ç¶²ç«ä¸ææ¾å½±ççæ§å¶æéå¯ä»¥å鿍£æ¨è¨ï¼
<div>ææ¾è¦è¨</div>
ä½ å°æçå°æ´å¥½ç寫æ³ï¼é裡使ç¨äºæ£ç¢ºç HTML æ¨ç±¤ï¼æ´é«çä¸å»æ´åçäºï¼
<button>ææ¾è¦è¨</button>
HTML ç <button> æ¨ç±¤æä¾é è¨ç樣å¼ï¼ä¹è¨±ä½ ææ³è¦è¦èéäºæ¨£å¼ï¼ï¼éäºé è¨çæ¨ç±¤å
·åå
§å»ºçéµç¤ç¡éç¤åè½ââ使ç¨è
å¯ä»¥ä½¿ç¨ Tab éµå¨æéä¹éå°èªï¼ä¸¦ä½¿ç¨ SpaceãReturn æ Enter éµä¾é¸æã
èªç¾©å HTML 妿å¾å°æ¡åå§å°±ä½¿ç¨ï¼ä¸¦ä¸ææ¯æ°å¯«éèªç¾©åï¼ä¸è¯ï¼æ¨è¨æ´è±æéãèªç¾©åæ¨è¨é¤äºç¡éç¤æ§ä¹å¤éæå ¶ä»å¥½èï¼
- 便æ¼éç¼ â å¦ä¸æè¿°ï¼å¯ä»¥å è²»ç²å¾é è¨çåè½ï¼å¯ä»¥å¾è¼æå°è¢«çè§£ã
- æ´é©åç§»å端 â èªç¾©å HTML 卿ªæ¡å¤§å°ä¸å¯è½æ¯éèªç¾©åçéäºç¨å¼ç¢¼æ´è¼ï¼ä¹æ´å®¹æå¯¦ç¾é¿æå¼è¨è¨ã
- å° SEO åå â æå°å¼æå°æ¨é¡ãé£çµçå
§é¨çééµåæ¯å
å«å¨éèªç¾©å
<div>çä¸çééµåçµ¦äºæ´å¤éè¦ï¼å æ¤ç¶²é ææ´å®¹æè¢«å®¢æ¶æ¾å°ã
è®æåæ´è¿ä¸æ¥å°ä¾äºè§£ç¡éç¤ HTML çç´°ç¯ã
è¯å¥½çèªç¾©
æåå·²ç¶è¨è«éæ£ç¢ºèªç¾©çéè¦æ§ï¼ä»¥åçºä»éº¼æè©²ä½¿ç¨æ£ç¢ºç HTML æ¨ç±¤ãéä¸é»ä¸å®¹å¿½è¦ï¼å çºä½¿ç¨ä¸ç¶ï¼æ¯ç¡éç¤æ§å´éåæç主è¦åå ä¹ä¸ã
å¨ç¶²è·¯ä¸çä¸ï¼äººåäºå¯¦ä¸å° HTML æ¨è¨åä¸äºé叏奿ªçäºæ ãå° HTML çæ¿«ç¨ç¡éæ¯å éæªå®å ¨éºå¿èæçåæ³ï¼æäºåç´ç²¹æ¯ç¡ç¥ãç¡è«å¦ä½ï¼ä½ æè©²æ´æé樣çä¸è¯ç¨å¼ç¢¼ã
ææä½ ç¡æ³æºè«ç³ç³çæ¨è¨ââé é¢å¯è½ç±æç¨®ç¡æ³å®å ¨æ§å¶ç伺æå¨ç«¯æ¡æ¶çæï¼æè å¯è½æç¡æ³æ§å¶çç¬¬ä¸æ¹å §å®¹ï¼å¦å»£åæ©«å¹ ï¼ã
ç®æ¨ä¸æ¯ãå ¨ææå ¨ç¡ãï¼æåè½åçå°±æ¯éå§æ¹é²ï¼éé½å°æå©æ¼ç¡éç¤æ§ã
使ç¨çµæ§è¯å¥½çæåå §å®¹
å°æ¼è¢å¹é±è®å¨ä½¿ç¨è ä¾èªªï¼æå¥½çç¡éç¤è¼å©ä¹ä¸æ¯æåªè¯å §å®¹çµæ§çç¶²é ï¼å 嫿¨é¡ã段è½ãæ¸ å®çãä¸ååªç§çèªç¾©åç¯ä¾å¯è½å¦ä¸ï¼
<h1>My heading</h1>
<p>This is the first section of my document.</p>
<p>I'll add another paragraph here too.</p>
<ol>
<li>Here is</li>
<li>a list for</li>
<li>you to read</li>
</ol>
<h2>My subheading</h2>
<p>
This is the first subsection of my document. I'd love people to be able to
find this content!
</p>
<h2>My 2nd subheading</h2>
<p>
This is the second subsection of my content, which I think is more interesting
than the last one.
</p>
æåæºåäºä¸åè¼é·ææ¬ççæ¬ï¼ä¾ä½ 使ç¨è¢å¹é±è®å¨è©¦ç¨ï¼è«è¦ good-semantics.htmlï¼ãå¦æä½ å試ç覽éåé é¢ï¼ä½ æç¼ç¾å®ç¸ç¶å®¹æå°èªï¼
- ç¶çè¦½å §å®¹æï¼è¢å¹é±è®å¨æè®åºæ¯åæ¨é¡ï¼åç¥ä½ ä»éº¼æ¯æ¨é¡ï¼ä»éº¼æ¯æ®µè½çã
- 宿卿¯åå ç´ å¾åæ¢ï¼ä»¥èé©çæ¥èª¿åé²ã
- å¨è¨±å¤è¢å¹é±è®å¨ä¸ï¼ä½ å¯ä»¥è·³å°ä¸ä¸å/ä¸ä¸åæ¨é¡ã
- å¨è¨±å¤è¢å¹é±è®å¨ä¸ï¼éå¯ä»¥å«åºæææ¨é¡çå表ï¼ä¾ä½çºä¾¿æ·çç®é以尿¾ç¹å®å §å®¹ã
äººåææä½¿ç¨æè¡ç¬¦ä¾ç·¨å¯«æ¨é¡ã段è½çï¼ä¸¦ç´ç²¹çºäºæ¨£å¼å¢å HTML å ç´ ï¼é¡ä¼¼ä¸é¢é樣ï¼
<span style="font-size: 3em">My heading</span> <br /><br />
This is the first section of my document.
<br /><br />
I'll add another paragraph here too.
<br /><br />
1. Here is
<br /><br />
2. a list for
<br /><br />
3. you to read
<br /><br />
<span style="font-size: 2.5em">My subheading</span>
<br /><br />
This is the first subsection of my document. I'd love people to be able to find
this content!
<br /><br />
<span style="font-size: 2.5em">My 2nd subheading</span>
<br /><br />
This is the second subsection of my content. I think is more interesting than
the last one.
å¦æä½¿ç¨è¢å¹é±è®å¨è©¦ç¨éåè¼é·çæ¬ï¼è«è¦ bad-semantics.htmlï¼ï¼å°ä¸ææå¾å¥½çé«é©ââè¢å¹é±è®å¨æ²æä»»ä½å¯ç¨ä½æ¨è¨çå §å®¹ï¼æä»¥ç¡æ³ç²åæç¨çç®éï¼æ´åé é¢è¢«è¦çºä¸å巨大çåå¡ï¼å æ¤æä¸æ¬¡æ§å ¨é¨è®åºã
é¤äºç¡éç¤æ§ä¹å¤éæå ¶ä»åé¡ââä¾å¦ï¼ä½¿ç¨ CSS è¨è¨å §å®¹æ¨£å¼æç¨ JavaScript æä½å §å®¹ææ´å°é£ï¼å çºæ²æå¯ç¨ä½é¸æå¨çå ç´ ã
ä½¿ç¨æææ¸ æ¥çèªè¨
é é¢ä½¿ç¨çèªè¨ä¹æå½±é¿ç¡éç¤æ§ãä¸è¬ä¾èªªï¼æè©²ä½¿ç¨æ¸ æ°ãä¸éæ¼è¤éä¸ä¸ä½¿ç¨ä¸å¿ è¦å°æ¥è¡èªæä¿èªçèªè¨ãéä¸å æå©æ¼èªç¥æå ¶ä»éç¤ç人士ï¼å®ä¹æå©æ¼éæ¯èªé±è®è ãå¹´è¼äºº...ï¼å¯¦é䏿¯ææäººï¼é¤æ¤ä¹å¤ï¼ä¹æè©²é¿å 使ç¨ä¸è½è¢«è¢å¹é±è®å¨æ¸ æ¥è®åºçèªè¨åå符ãä¾å¦ï¼
- 妿å¯ä»¥é¿å ï¼è«ä¸è¦ä½¿ç¨ç ´æèãè«å¯«ã5 è³ 7ãèéã5â7ãã
- å±é縮寫ââ寫ãJanuaryãèéãJanãã
- å±éé¦åæ¯ç¸®ç¥è©ï¼è³å°ä¸å°å
©æ¬¡ï¼ç¶å¾ä½¿ç¨
<abbr>æ¨ç±¤ä¾æè¿°å®åã
æéè¼¯å°æ¶æ§é é¢å段
æè©²ä½¿ç¨é©ç¶ç sectioning å
ç´ ä¾æ¶æ§ç¶²é ï¼ä¾å¦å°è¦½ï¼<nav>ï¼ãé å°¾ï¼<footer>ï¼ä»¥åéè¤å
§å®¹å®ä½ï¼<article>ï¼ãéäºé½çºè¢å¹é±è®å¨ï¼åå
¶ä»å·¥å
·ï¼æä¾äºé¡å¤çèªç¾©ï¼è®ä½¿ç¨è
å°ä»åæ£å¨ç覽çå
§å®¹æé¡å¤çæç¤ºã
èä¾ä¾èªªï¼ç¾ä»£çå §å®¹çµæ§å¯ä»¥æ¯é樣çï¼
<header>
<h1>Header</h1>
</header>
<nav>
<!-- 主å°èªå¨é裡 -->
</nav>
<!-- é裡æ¯é é¢ç主è¦å
§å®¹ -->
<main>
<!-- é裡å
å«ä¸ç¯æç« -->
<article>
<h2>Article heading</h2>
<!-- æç« å
§å®¹å¨é裡 -->
</article>
<aside>
<h2>Related</h2>
<!-- å´éå
§å®¹å¨é裡 -->
</aside>
</main>
<!-- é裡æ¯ä¸»è¦ç¨å¨ææé é¢çé å°¾ -->
<footer>
<!-- é å°¾å
§å®¹å¨é裡 -->
</footer>
å¯ä»¥å¨æ¤æ¾å°å®æ´ç¯ä¾ã
é¤äºè¦æè¯å¥½çèªæåå¸å¼äººççé¢ä¹å¤ï¼å §å®¹å¨åå§é åºä¸ä¹è¦åä¹é輯ââä½ å¯ä»¥å¨ç¨å¾ä½¿ç¨ CSS å°å §å®¹æ¾ç½®å¨æ³è¦çä½ç½®ï¼ä½æè©²å¨ä¸éå§å°±æåå§é åºå¼å¥½ï¼é樣è¢å¹é±è®å¨ä½¿ç¨è è®å°çå §å®¹ææåä¹é輯ã
ç¡å¯è½ä½¿ç¨èªæ UI æ§ä»¶
æè¬ç UI æ§ä»¶ï¼æåæçæ¯ä½¿ç¨è èå ¶äºåçç¶²é æä»¶ä¸»è¦é¨åââæå¸¸è¦çæ¯æéãé£çµåè¡¨å®æ§ä»¶ã卿¬ç¯ä¸ï¼æåå°æ¢è¨å»ºç«é顿§å¶é æéè¦æ³¨æçåºæ¬ç¡éç¤æ§åé¡ãå¾çºéæ¼ WAI-ARIA åå¤åªé«çæç« å°æ¢è¨ UI ç¡éç¤æ§çå ¶ä»æ¹é¢ã
UI æ§å¶ç¡éç¤æ§çä¸åé鵿¹é¢æ¯ï¼é»èªæ æ³ä¸ï¼ç覽å¨å 許使ç¨éµç¤æä½å®åãä½ å¯ä»¥ä½¿ç¨æåç native-keyboard-accessibility.html ç¯ä¾ä¾åè©¦ï¼æ¥çåå§ç¢¼ï¼ã卿°åé 䏿éå®ï¼ä¸¦å試æ Tab éµï¼æå¹¾ä¸å¾ï¼ä½ æè©²æçå° Tab ç¦é»éå§å¨ä¸åçå¯èç¦å ç´ éç§»åãæ¯åç覽å¨ä¸ï¼è¢«èç¦çå ç´ é½ææä¸åé»èªç強調樣å¼ï¼å¨ä¸åç覽å¨ä¹éç¥æä¸åï¼ï¼é樣就è½ç¥éåªåå ç´ è¢«èç¦äºã
![]()
å註ï¼ä½ å¯ä»¥å¨éç¼è å·¥å ·ä¸åç¨ä¸å顯示é é¢ Tab éµé åºçè¦èå±¤ãæ´å¤è³è¨è«åè¦ï¼ç¡éç¤æª¢æ¸¬å¨ > 顯示網é Tab éµé åº.
ç¶å¾ä½ å¯ä»¥æ Enter/Return éµä¾è·é¨å·²èç¦çé£çµææä¸æéï¼æåå·²ç¶å å
¥ä¸äº JavaScript è®æé顯示æç¤ºè¨æ¯ï¼ï¼æéå§è¼¸å
¥ä¾å¨æå輸å
¥æ¡ä¸è¼¸å
¥æåãå
¶ä»è¡¨å®å
ç´ æä¸åçæ§å¶æ¹å¼ï¼ä¾å¦ï¼å¯ä»¥ä½¿ç¨ä¸ä¸ç®é éµä¾é¡¯ç¤º <select> å
ç´ çé¸é
並å¨å®åä¹é循ç°é¸æã
åªè¦ä½¿ç¨é©ç¶çå ç´ ï¼åºæ¬ä¸å°±å¯ä»¥å è²»ç²å¾æ¤è¡çºï¼ä¾å¦ï¼
<h1>Links</h1>
<p>This is a link to <a href="https://www.mozilla.org">Mozilla</a>.</p>
<p>
Another link, to the
<a href="https://developer.mozilla.org">Mozilla Developer Network</a>.
</p>
<h2>Buttons</h2>
<p>
<button data-message="This is from the first button">Click me!</button>
<button data-message="This is from the second button">Click me too!</button>
<button data-message="This is from the third button">And me!</button>
</p>
<h2>Form</h2>
<form>
<div>
<label for="name">Fill in your name:</label>
<input type="text" id="name" name="name" />
</div>
<div>
<label for="age">Enter your age:</label>
<input type="text" id="age" name="age" />
</div>
<div>
<label for="mood">Choose your mood:</label>
<select id="mood" name="mood">
<option>Happy</option>
<option>Sad</option>
<option>Angry</option>
<option>Worried</option>
</select>
</div>
</form>
éæå³èé©ç¶å°ä½¿ç¨é£çµãæéã表å®å
ç´ åæ¨ç±¤ï¼å
æ¬çºè¡¨å®æ§å¶ä½¿ç¨ <label> å
ç´ ï¼ã
ç¶èï¼äººåæææå° HTML åä¸äºå¥æªçäºæ
ãä¾å¦ï¼æææçå°ä½¿ç¨ <div> å
ç´ æ¨è¨çæéï¼ä¾å¦ï¼
<div data-message="This is from the first button">Click me!</div>
<div data-message="This is from the second button">Click me too!</div>
<div data-message="This is from the third button">And me!</div>
ä½ä¸å»ºè°ä½¿ç¨é樣çç¨å¼ç¢¼ââ鿍£æç«å³å¤±å»ä½¿ç¨ <button> å
ç´ çåçéµç¤ç¡éç¤åè½ï¼ä¹ä¸æç²å¾æéçä»»ä½é»èª CSS 樣å¼ã卿¥µå°æ¸å°å¹¾ä¹ä¸åå¨çæ
æ³ä¸ï¼è¥ä½ éè¦ä½¿ç¨éæéå
ç´ ä½çºæéæï¼è«ä½¿ç¨ button role ä¸¦å¯¦ç¾ææé»èªæéè¡çºï¼å
æ¬éµç¤åæ»é¼ æéæ¯æ´ã
é建éµç¤ç¡éç¤æ§
éæ°å å
¥éäºé»èªåªå¢éè¦ä¸äºé¡å¤çå·¥ä½ï¼ä½ å¯ä»¥å¨ fake-div-buttons.html æ¥çç¯ä¾ââä¹å¯ä»¥æ¥çåå§ç¢¼ï¼ãå¨éè£¡ï¼æåçºåç <div> æéæä¾äºå¯ä»¥è¢«èç¦çè½åï¼å
æ¬éé tab éµï¼ï¼æ¹æ³æ¯çµ¦æ¯åæéæ°å¢å±¬æ§ tabindex="0"ãæåéå
å«äº role="button"ï¼é樣è¢å¹é±è®å¨ä½¿ç¨è
å°±ç¥éä»åå¯ä»¥èç¦ä¸¦è該å
ç´ äºåï¼
<div data-message="This is from the first button" tabindex="0" role="button">
Click me!
</div>
<div data-message="This is from the second button" tabindex="0" role="button">
Click me too!
</div>
<div data-message="This is from the third button" tabindex="0" role="button">
And me!
</div>
åºæ¬ä¸ï¼tabindex 屬æ§ä¸»è¦æ¯å
è¨±å¯æ¨ç±¤å
ç´ ææèªå®ç¾©çæ¨ç±¤é åºï¼ä»¥æ£æ¸æ¸åé åºæå®ï¼ï¼èä¸å
å
æ¯æç
§å¨åå§ç¢¼ä¸çé»èªé åºé²è¡æ¨ç±¤ãç±æ¼å®å¯è½æå°è´é大混æ·ï¼å æ¤å»ºè°åªæå¨çæ£éè¦ææä½¿ç¨å®ï¼ä¾å¦ï¼å¦æä½å±é¡¯ç¤ºçå
§å®¹å¨è¦è¦ºé åºä¸èåå§ç¢¼ç¸å·®å¾å¤§ï¼èä½ å¸æå®éä½å¾æ´ç¬¦åé輯ãtabindex éæå
©åå
¶ä»é¸é
ï¼
tabindex="0"â å¦ä¸æè¿°ï¼æ¤å¼å 許é常ä¸å¯æ¨ç±¤çå ç´ è®å¾å¯æ¨ç±¤ã鿝tabindexææç¨çå¼ãtabindex="-1"â éå 許é常ä¸å¯æ¨ç±¤çå ç´ ééç¨å¼æ¥æ¶ç¦é»ï¼ä¾å¦ï¼éé JavaScriptï¼æä½çºé£çµçç®æ¨ã
éç¶ä¸è¿°å 許æåä½¿ç¨ tab éµå°èªå°æéï¼ä½å®ä¸å 許æåéé Enter/Return éµåç¨å®åãçºæ¤ï¼æåå¿ é æ°å¢ä»¥ä¸ JavaScriptï¼
document.onkeydown = (e) => {
// Enter/Return éµ
if (e.key === "Enter") {
document.activeElement.click();
}
};
å¨éè£¡ï¼æåå document ç©ä»¶æ°å¢ä¸åç£è½å¨ï¼ä¾æª¢æ¸¬ä½æå¨éµç¤ä¸æä¸äºæéãæåééäºä»¶ç©ä»¶ç key å±¬æ§æª¢æ¥æä¸äºä»éº¼æéï¼å¦ææä¸çæ¯ Enter/Return éµï¼æåä½¿ç¨ document.activeElement.click() å·è¡å²å卿é onclick èçç¨å¼ä¸çå½å¼ãactiveElement çºæåæä¾äºé é¢ä¸ç¶åèç¦çå
ç´ ã
é建éäºåè½æå¸¶ä¾è¨±å¤é¡å¤çéº»ç ©ãèä¸è¯å®éæå ¶ä»åé¡ãå æ¤å¾ä¸éå§å°±ä½¿ç¨æ£ç¢ºçå ç´ åæ£ç¢ºç工使¯æä½³è§£ã
ä½¿ç¨ææç¾©çæåæ¨ç±¤
UI æ§ä»¶æåæ¨ç±¤å°ææä½¿ç¨è é½é常æç¨ï¼ä½å°èº«å¿éç¤ä½¿ç¨è ä¾èªªï¼æ£ç¢ºè¨ç½®éäºæ¨ç±¤æ¥µçºéè¦ã
ä½ æç¢ºä¿ä½ çæéåé£çµæåæ¨ç±¤ææ¼çè§£ä¸å ·æç¨ç¹æ§ãä¸è¦åªä½¿ç¨ã黿é裡ãä½çºæ¨ç±¤ï¼å çºè¢å¹é±è®å¨ä½¿ç¨è æææèª¿åºæéåè¡¨å®æ§ä»¶çå表ãä¸é¢çæªåé¡¯ç¤ºäºæåçæ§å¶é å¨ Mac ä¸è¢« VoiceOver ååºçæ æ³ã

確ä¿ä½ çæ¨ç±¤å¨è«é¢ä¸ä¸ææãå®ç¨é±è®æä»¥åæå¨æ®µè½çä¸ä¸æä¸é½æ¯ææç¾©çãä¾å¦ï¼ä¸åå±ç¤ºäºä¸å好çé£çµæåç¯ä¾ï¼
<p>
Whales are really awesome creatures.
<a href="whales.html">Find out more about whales</a>.
</p>
鿝ä¸åä¸å¥½ç示ç¯ï¼
<p>
Whales are really awesome creatures. To find out more about whales,
<a href="whales.html">click here</a>.
</p>
å註ï¼ä½ å¯ä»¥å¨éç¯å»ºç«é£çµçæç« 䏿¾å°æ´å¤éæ¼é£çµå¯¦ä½åæä½³å¯¦è¸çè³è¨ãä¹å¯ä»¥å¨ good-links.html å bad-links.html æ¥ç好çåä¸å¥½çç¯ä¾ã
è¡¨å®æ¨ç±¤å°æ¼æç¤ºéè¦å¨æ¯å表å®è¼¸å ¥ä»éº¼å §å®¹ä¹å¾éè¦ã以ä¸çèµ·ä¾æ¯ä¸åç¸ç¶åççä¾åï¼
Fill in your name: <input type="text" id="name" name="name" />
ç¶èï¼éå°èº«å¿éç¤ä½¿ç¨è ä¾èªªä¸¦ä¸æ¯é£éº¼æç¨ãä¸è¿°ä¾å䏿²æä»»ä½æ±è¥¿è½æç¢ºå°å°æ¨ç±¤è表å®è¼¸å ¥æ¡éè¯èµ·ä¾ï¼ä¸¦ä¸å¦æçä¸å°å®ï¼ä¹ä¸æ¸ æ¥å¦ä½å¡«å¯«ãå¦æä½¿ç¨æäºè¢å¹é±è®å¨è¨ªåå®ï¼å¯è½åªæå¾å°é¡ä¼¼ãedit textã鿍£çæè¿°ã
以䏿¯ä¸åæ´å¥½çä¾åï¼
<div>
<label for="name">Fill in your name:</label>
<input type="text" id="name" name="name" />
</div>
使ç¨é樣çç¨å¼ç¢¼ï¼æ¨ç±¤å°èè¼¸å ¥æ¡æç¢ºéè¯ï¼æè¿°ææ´åæ¯ãFill in your name: edit textã
![]()
é¡å¤çå¥½èæ¯ï¼å¤§å¤æ¸ç覽å¨ä¸ï¼å°æ¨ç±¤è表å®è¼¸å ¥æ¡éè¯æå³èå¯ä»¥é»ææ¨ç±¤ä¾é¸ææåå表å®å ç´ ãéçºè¼¸å ¥æ¡æä¾äºæ´å¤§ç黿ååï¼ä½¿å ¶æ´å®¹æé¸æã
å註ï¼ä½ å¯ä»¥å¨ good-form.html å bad-form.html 䏿¥çä¸äºè¯å¥½çåä¸è¯ç表å®ç¯ä¾ã
ä½ å¯ä»¥å¨ä»¥ä¸å½±ç䏿¾å°éæ¼é©ç¶æåæ¨ç±¤éè¦æ§ç詳細解éï¼ä»¥åå¦ä½ä½¿ç¨ Firefox ç¡éç¤æª¢æ¥å¨èª¿æ¥æåæ¨ç±¤åé¡ï¼
ç¡éç¤è³æè¡¨æ ¼
åºæ¬è³æè¡¨æ ¼å¯ä»¥ä½¿ç¨é常簡å®çæ¨è¨èªè¨ä¾æ°å¯«ï¼èä¾å¦ä¸ï¼
<table>
<tr>
<td>å§å</td>
<td>年齡</td>
<td>稱è¬</td>
</tr>
<tr>
<td>Gabriel</td>
<td>13</td>
<td>he/him</td>
</tr>
<tr>
<td>Elva</td>
<td>8</td>
<td>she/her</td>
</tr>
<tr>
<td>Freida</td>
<td>5</td>
<td>she/her</td>
</tr>
</table>
ä½éæ®µå §å®¹æååé¡ â å°æ¼è¢å¹é±è®å¨ä½¿ç¨è ä¾èªªï¼ç¡æ³å°åææ¬éè¯æè³æç¾¤çµãè¦åå°éä¸é»ï¼éè¦ç¥éæ¨é¡åæ¯ä»éº¼ï¼ä»¥åå®åæ¯æ¨ç¤ºåææ¬ä½çãå¨å颿å°çè¡¨æ ¼ä¸ï¼éäºåªè½ééè¦è¦ºæ¹å¼è¾¨å¥ï¼è«åé± bad-table.html 並親èªå試éåç¯ä¾ï¼ã
ç¾å¨ä¾ççæåçé¾å æ¨åè¡¨æ ¼ç¯ä¾ â ä½ å¯ä»¥çå°ä¸äºç¡éç¤è¼å©åè½å¨å ¶ä¸éä½ï¼
- è¡¨æ ¼æ¨é¡æ¯ä½¿ç¨
<th>å ç´ å®ç¾© â ä½ ä¹å¯ä»¥ééscopeå±¬æ§æå®å®åæ¯åææ¬ä½çæ¨é¡ãéæä¾äºå®æ´çè³æç¾¤çµï¼è¢å¹é±è®å¨å¯ä»¥å°å ¶è¦çºå®ä¸å®å ã <caption>å ç´ å<table>å ç´ çsummary屬æ§åè½ç¸ä¼¼ â å®åå ç¶è¡¨æ ¼çæ¿ä»£æåï¼çºè¢å¹é±è®å¨ä½¿ç¨è æä¾è¡¨æ ¼å §å®¹çå¿«éæè¦ãä¸è¬èè¨ï¼è¼æ¨è¦ä½¿ç¨<caption>å ç´ ï¼å çºå®çå §å®¹å°æ¼æè¦åç使ç¨è ä¹å樣æå¹«å©ãå ©è é常ä¸éè¦åæä½¿ç¨ã
åè¨»ï¼æ¥çæåç HTML è¡¨æ ¼ç¡éç¤æç« ä¾äºè§£æ´å¤éæ¼ç¡éç¤è³æè¡¨æ ¼çç¸éç´°ç¯ã
æ¿ä»£æå
ç¸è¼æ¼æåå
§å®¹æ¬èº«å°±å
·æç¡éç¤æ§ï¼å¤åªé«å
§å®¹å»ä¸ç¡ç¶ â å½±ååå½±çå
§å®¹å°æ¼è¦é人士ä¾èªªæ¯çä¸è¦çï¼é³è¨å
§å®¹å°æ¼è½é人士ä¾èªªæ¯è½ä¸å°çãæåå¨ç¡éç¤å¤åªé«å®å
ä¸æè©³ç´°è¨è«å½±çåé³è¨å
§å®¹ï¼ä½å¨æ¬æä¸ï¼æåå°èç¦æ¼ç°¡å®ç <img> å
ç´ çç¡éç¤æ§ã
æåå·²ç¶æºåäºä¸åç°¡å®çç¯ä¾ accessible-image.htmlï¼å §å«å份ç¸åçå½±åï¼
<img src="dinosaur.png" />
<img
src="dinosaur.png"
alt="ä¸é»ç´
è²æ´é¾ï¼ä¸é»åäººä¸æ¨£ç´ç«ç«ç«çéè
³æé¾ï¼æå°å°çæèï¼ä»¥åä¸å使»¿å°é³çé½ç大é " />
<img
src="dinosaur.png"
alt="ä¸é»ç´
è²æ´é¾ï¼ä¸é»åäººä¸æ¨£ç´ç«ç«ç«çéè
³æé¾ï¼æå°å°çæèï¼ä»¥åä¸å使»¿å°é³çé½ç大é "
title="Mozilla ç´
è²æ´é¾" />
<img src="dinosaur.png" aria-labelledby="dino-label" />
<p id="dino-label">
ä¸é» Mozilla
ç´
è²æ´é¾ï¼ä¸é»åäººä¸æ¨£ç´ç«ç«ç«çéè
³æé¾ï¼æå°å°çæèï¼ä»¥åä¸å使»¿å°é³çé½ç大é ã
</p>
ç¶ééè¢å¹é±è®å¨æª¢è¦ç¬¬ä¸å¼µå½±åæï¼å¯¦éä¸ä¸¦æªçºä½¿ç¨è æä¾å¤ªå¤åå© â èä¾ä¾èªªï¼VoiceOver åªæå¿µåºã/dinosaur.png, å½±åããå®è©¦åééå¸åºæªæ¡åç¨±ä¾æä¾ä¸äºè³è¨ãå¨éåç¯ä¾ä¸ï¼ä½¿ç¨è è³å°æç¥é鿝æç¨®æé¾ï¼ä½éå¸¸æªæ¡å¯è½æ¯é鿏ä½ç¸æ©ä¸å³ï¼éäºæ©å¨ç¢ççæªæ¡å稱å¾å¯è½ç¡æ³æä¾å½±åå §å®¹çä»»ä½ä¸ä¸æã
å註ï¼çµå°ä¸è¦å¨å½±åä¸å 嫿åå §å®¹ â è¢å¹é±è®å¨ç¡æ³ååå®ãå¦å¤éæå ¶ä»ç¼ºé» â ä½ ç¡æ³é¸ååè¤è£½è²¼ä¸æåãåè¬ä¸è¦é麼åï¼
ç¶è¢å¹é±è®å¨éå°ç¬¬äºå¼µå½±åæï¼æå¸åºå®æ´çæ¿ä»£æå â ãä¸é»ç´ è²æ´é¾ï¼ä¸é»åäººä¸æ¨£ç´ç«ç«ç«çéè ³æé¾ï¼æå°å°çæèï¼ä»¥åä¸å使»¿å°é³çé½ç大é ãã
éçªé¡¯äºå
©åéè¦æ§ï¼ä¸å
è¦ä½¿ç¨ææç¾©çæªæ¡å稱ï¼ä»¥é²ç¡æ³ä½¿ç¨æ¿ä»£æåï¼ï¼éè¦ç¢ºä¿å¨å¯è½çæ
æ³ä¸ï¼å¨ alt 屬æ§ä¸æä¾æ¿ä»£æåã
alt 屬æ§çå
§å®¹æè©²ç´æ¥åç¾å½±ååå
¶è¦è¦ºå³éçå
§å®¹ãæ¿ä»£æåæè©²ç°¡æ½æ¼è¦ï¼å
å«å½±å䏿ªå¨å¨åæåéè¤çææè³è¨ã
å°æ¼å®ä¸å½±åç alt 屬æ§å
§å®¹ï¼å
¶æ°å¯«æ¹å¼æå è絡èç°ãèä¾ä¾èªªï¼ 妿ä¸å¼µ Fluffy 影忝ä¸ç¯é£åççé£è©è«æéçé åï¼é£éº¼æ¿ä»£æåçº alt="Fluffy" æ¯é©ç¶çã妿ç
§çæ¯å¨åç©ææ´åæç Fluffy èªé¤é é¢ï¼åæè©²å
å«å°æ¼å¯è½çé¤ç人士ä¾èªªéè¦ä¸å¨åæåæªæåçè³è¨ãä¾å¦ alt="Fluffyï¼ä¸é»ä¸è²çæ¯ç¬ï¼å´è£¡å¬èç¶²ç" å°±å¾åé©ã å¨åæåå¯è½å·²ç¶æå° Fluffy çé«åååç¨®ï¼æä»¥ä¸éè¦åéè¦ãç¶èï¼ç±æ¼ççççå¹³ä»ç´¹å¯è½æªæåæ¯é«®é·åº¦ãé¡è²æç©å
·å好ï¼éäºå°æ½å¨é é¤äººå¾éè¦ï¼å æ¤å¼å¾å
å«å¨ alt å
§ã影忝å¦å¨æ¶å¤ï¼æ Fluffy æ¯å¦æ´ç´
è²é
åæé
èè²ç½ç¹©ï¼éäºå°æ¼èªé¤å¯µç©ä¾èªªä¸¦ä¸éè¦ï¼æä»¥ä¸éè¦ç´å
¥ãé鵿¯å³éå½±åä¸å°æè¦åç使ç¨è
å¯è¦ä¸èè絡ç¸éçææè³è¨ â æ¢ä¸å¤ä¹ä¸å°ãä¿æç°¡çãç²¾ç¢ºä¸æç¨ã
ä¸æè©²å å ¥ä»»ä½å人ç¥èæé¡å¤æè¿°ï¼å çºéå°æ¼æªæ¾è¦éå½±åçäººç¡æ³æä¾æç¨çè³è¨ãå¦æç¶²çæ¯ Fluffy æåæ¡çç©å ·ï¼ä½éä¸é»ç¡æ³å¾å½±åä¸ç´æ¥å¤æ·ï¼å°±ä¸æè©²å°å ¶ç´å ¥æè¿°ä¸ã
éè¦èæ
®ä½ ç影忝å¦å¨å
§å®¹ä¸å
·ææç¾©ï¼éæ¯ç´ç²¹ä½çºè¦è¦ºè£é£¾ï¼å æ¤æ²æå¯¦è³ªææ¶µã妿æ¯è£é£¾æ§å½±åï¼è¼å¥½çåæ³æ¯å° alt 屬æ§çå¼è¨çºç©ºå串ï¼åè¦ç©ºç alt 屬æ§ï¼æå
å°å
¶å
å«å¨é é¢ä¸ä½çº CSS èæ¯å½±åã
å註ï¼é±è® HTML å½±åååæå¼å½±å以ç²åæ´å¤éæ¼å½±åçæä½³å¯¦è¸ãä½ ä¹å¯ä»¥æ¥çæ¿ä»£æåæ±ºçæ¨¹ä¾å¸ç¿å¦ä½å¨ä¸åçæ å¢ä¸çºå½±åæ°å¯«æ¿ä»£æåã
å¦æä½ ç¢ºå¯¦æ³æä¾é¡å¤çä¸ä¸æï¼æè©²å°å®æ¾å¨åçå¨åçæåä¸ï¼æè
æ¾å¨ title 屬æ§ä¸ï¼å¦ä¸æç¤ºãå¨é種æ
æ³ä¸ï¼å¤§å¤æ¸è¢å¹é±è®å¨æè®åºæ¿ä»£æåãtitle 屬æ§åæªæ¡åç¨±ãæ¤å¤ï¼ç¶æ»é¼ æ¸åæï¼çè¦½å¨æå° title æå顯示çºå·¥å
·æç¤ºã

è®æåå¿«éçä¸ä¸ç¬¬åç¨®æ¹æ³ï¼
<img src="dinosaur.png" aria-labelledby="dino-label" />
<p id="dino-label">Mozilla ç´
è²æ´é¾â¦</p>
å¨é種æ
æ³ä¸ï¼æåå®å
¨ä¸ä½¿ç¨ alt 屬æ§ââç¸åï¼æåå°åççæè¿°ä½çºå¸¸è¦æå段è½åç¾ï¼çµ¦å®ä¸å idï¼ç¶å¾ä½¿ç¨ aria-labelledb 屬æ§å¼ç¨è©² idï¼é使å¾è¢å¹é±è®å¨å°è©²æ®µè½ä½çºåççæ¿ä»£æå/æ¨ç±¤ãéå¨ä½ æ³è¦çºå¤ååç使ç¨ç¸åæåä½çºæ¨ç±¤æç¹å¥æç¨ââéæ¯ä½¿ç¨ alt 屬æ§ç¡æ³å¯¦ç¾çã
å註ï¼aria-labelledby æ¯ WAI-ARIA è¦ç¯çå
¶ä¸ä¸é¨åï¼å®å
許éç¼è
å¨éè¦æå¢å é¡å¤çèªç¾©ï¼ä¾æ¹åè¢å¹é±è®å¨çç¡éç¤æ§ã
Figure å figure caption
HTML å
å«å
©åå
ç´ ââ<figure> å <figcaption>ââå®åå¯å°åå½¢ï¼å¯ä»¥æ¯ä»»ä½æ±è¥¿ï¼ä¸ä¸å®æ¯åçï¼è說ææåéè¯èµ·ä¾ï¼
<figure>
<img src="dinosaur.png" alt="Mozilla ç´
è²æ´é¾" aria-describedby="dinodescr" />
<figcaption id="dinodescr">
ä¸é» Mozilla
ç´
è²æ´é¾ï¼ä¸é»åäººä¸æ¨£ç´ç«ç«ç«çéè
³æé¾ï¼æå°å°çæèï¼ä»¥åä¸å使»¿å°é³çé½ç大é ã
</figcaption>
</figure>
éç¶è¢å¹é±è®å¨å°æ¼å°å形說ææåèå
¶åå½¢éè¯çæ¯æ´ç¨åº¦ä¸ä¸ï¼ä½å
å« aria-labelledby æ aria-describedby å¯ä»¥å¨æ²æéè¯çæ
æ³ä¸å»ºç«é種éè¯ã話é妿¤ï¼å
ç´ çµæ§å°æ¼ CSS 樣å¼å¾æç¨ï¼èä¸å®æä¾äºä¸ç¨®æ¹æ³ï¼å¯ä»¥å¨åå§ç¢¼ä¸å°æè¿°æ¾å¨åçæéã
空ç alt 屬æ§
<h3>
<img src="article-icon.png" alt="" />
æ´é¾ï¼æé¾ä¹ç
</h3>
ææåï¼åç被å
å«å¨é é¢è¨è¨ä¸ï¼å
¶ä¸»è¦ç®çæ¯è¦è¦ºè£é£¾ãä½ ææ³¨æå°å¨ä¸é¢çç¨å¼ç¢¼ç¯ä¾ä¸ï¼åçç alt å±¬æ§æ¯ç©ºçââ鿝çºäºè®è¢å¹é±è®å¨èå¥åçï¼ä½ä¸å試æè¿°åçï¼ç¸åï¼å®ååªæèªªãåçãæé¡ä¼¼çå
§å®¹ï¼ã
使ç¨ç©ºç alt è䏿¯å®å
¨ä¸å
å«å®çåå æ¯ï¼å¦ææ²ææä¾ altï¼è¨±å¤è¢å¹é±è®å¨ææè®æ´ååç URLãå¨ä¸é¢çä¾åä¸ï¼åçä½çºèå
¶éè¯çæ¨é¡çè¦è¦ºè£é£¾ãå¨é種åçå
ä½çºè£é£¾ä¸æ²æå
§å®¹å¹å¼çæ
æ³ä¸ï¼æè©²å¨ img å
ç´ ä¸å
å«ä¸å空ç altãå¦ä¸ç¨®æ¿ä»£æ¹æ³æ¯ä½¿ç¨ aria role å±¬æ§ role="presentationï¼éä¹è½é»æ¢è¢å¹é±è®å¨è®åºæ¿ä»£æåã
å註ï¼å¯ä»¥ç話ï¼ç¡éä½¿ç¨ CSS 顯示è£é£¾ç¨çåçã
æ´å¤éæ¼é£çµçè³è¨
é£çµï¼å
·æ href 屬æ§ç <a> å
ç´ ï¼æ ¹æä½¿ç¨æ¹å¼çä¸åï¼å¯ä»¥å¹«å©ææå®³ç¡éç¤æ§ãé»èªæ
æ³ä¸ï¼é£çµå¨å¤è§ä¸æ¯ç¡éç¤çãå¯éé幫å©ä½¿ç¨è
å¿«éå°èªå°æä»¶çä¸åé¨å便¹åç¡éç¤æ§ãå¦æç§»é¤äºé£çµçç¡éç¤æ¨£å¼æ JavaScript å°è´å®å以æå¤æ¹å¼éä½ï¼å¯è½æå®³ç¡éç¤æ§ã
é£çµç樣å¼
é»èªæ æ³ä¸ï¼é£çµå¨é¡è²åæåè£é£¾æ¹é¢èå ¶ä»æåå¨è¦è¦ºä¸ææä¸åï¼é»èªæ æ³ä¸é£çµæ¯èè²ä¸å¸¶æåºç·ï¼è¨ªåéçé£çµæ¯ç´«è²ä¸å¸¶æåºç·ï¼ç¶å®åç²å¾éµç¤ç¦é»æææç¦é»ç°ã
é¡è²ä¸æä½çºååé£çµåéé£çµå §å®¹çå¯ä¸æ¹æ³ãé£çµæåçé¡è²ï¼å¦åæææåï¼é èèæ¯é¡è²æé¡¯èå·®ç°ï¼4.5:1 çå°æ¯åº¦ï¼ãæ¤å¤ï¼é£çµå¨è¦è¦ºä¸æèéé£çµæåææä¸åï¼é£çµæåèå¨åæåä¹é以åé»èªã已訪ååç¦é»/åç¨çæ ä¹éçæä½å°æ¯åº¦è¦æ±çº 3:1ï¼ææéäºçæ é¡è²èèæ¯é¡è²ä¹éçå°æ¯åº¦çº 4.5:1ã
onclick äºä»¶
é¨é»æ¨ç±¤å¸¸è¢«æ¿«ç¨ï¼ééè¨ç½® href çº # æ javascript:void(0) ä¸¦ä½¿ç¨ onclick äºä»¶ä¾å»ºç«å½æéï¼ä»¥é²æ¢é é¢å·æ°ã
éäºå¼æå°è´è¤è£½æææ³é£çµã卿°åé æè¦çªä¸éåé£çµãå å
¥æ¸ç±¤æåºç¾æå¤è¡çºï¼ä»¥åç¶ JavaScript ä»å¨ä¸è¼ãåºé¯æè¢«ç¦ç¨æåºç¾åé¡ãé乿åè¼å©æè¡ï¼å¦è¢å¹é±è®å¨ï¼å³éäºé¯èª¤çèªç¾©ãå¨éäºæ
æ³ä¸ï¼å»ºè°ä½¿ç¨ <button> 代æ¿ãä¸è¬ä¾èªªï¼ä½ æè©²åªä½¿ç¨é¨é»æ¨ç±¤ééé©ç¶ç URL é²è¡å°èªã
å¤é¨é£çµåé£çµå°é HTML è³æº
éé target="_blank è²æå¨æ°åé æè¦çªä¸éåçé£çµï¼ä»¥å href å¼æåæªæ¡è³æºçé£çµï¼æå
å«ä¸åæç¤ºå¨ï¼èªªæåç¨é£çµææç¼ççè¡çºã
è¦åè¼å·®ç人ã使ç¨è¢å¹é±è®æè¡å°èªç人ææèªç¥åé¡ç人å¯è½æå æå¤éåæ°åé ãè¦çªææç¨ç¨å¼èæå°å°æãè¼èçæ¬çè¢å¹é±è®è»é«çè³å¯è½ä¸æå®£åé種è¡çºã
æéæ°åé æè¦çªçé£çµ
<a target="_blank" href="https://www.wikipedia.org/"
>ç¶åºç¾ç§ï¼å¨æ°è¦çªä¸éåï¼</a
>
é£çµå°é HTML è³æº
<a target="_blank" href="2017-annual-report.ppt">2017 å¹´åº¦å ±åï¼PowerPointï¼</a>
å¦æä½¿ç¨åç¤ºä»£æ¿æåä¾è¡¨ç¤ºéé¡é£çµè¡çºï¼è«ç¢ºä¿å®å 嫿¿ä»£æè¿°ã
è·³éé£çµ
è·³éé£çµï¼skip linkï¼ï¼ä¹ç¨±çº skipnavï¼æ¯ä¸åæ¾ç½®å¨ç¡å¯è½é è¿éå§ç <body> å
ç´ èç a å
ç´ ï¼å®é£çµå°é é¢ä¸»è¦å
§å®¹çéé ãéåé£çµå
許使ç¨è
ç¹éç¶²ç«å¤åé é¢ä¸éè¤åºç¾çå
§å®¹ï¼å¦ç¶²ç«çé é¦å主è¦å°èªã
è·³éé£çµå°ä½¿ç¨è¼å©æè¡å°èªç人ç¹å¥æç¨ï¼ä¾å¦ä½¿ç¨ééæ§å¶ãèªé³å½ä»¤æå£æ§ææ¡¿/é æ§ææ¡¿ç人ï¼å°ä»åä¾èªªï¼ç覽éè¤çé£çµå¯è½æ¯ä¸é è²»åçä»»åã
é°è¿æ§
大éè¦è¦ºä¸å½¼æ¤é è¿çäºåå §å®¹ââå æ¬é¨é»ââæè©²æå ¥éè·ä¾åéå®åãé種éè·æå©æ¼æ£æç²¾ç´°éåæ§å¶åé¡ç使ç¨è ï¼å çºä»åå¨å°èªæå¯è½ææå¤åç¨é¯èª¤çäºåå §å®¹ã
éè·å¯ä»¥ä½¿ç¨ CSS 屬æ§å¦ margin ä¾å»ºç«ã
æ¸¬è©¦ä½ çæè½
ä½ å·²ç¶å°éæ¬æççµå°¾ï¼ä½è½è¨ä½æéè¦çè³è¨åï¼æ¥çæè½æ¸¬è©¦ï¼HTML ç¡éç¤ä¾é©èä½ æ¯å¦å·²ç¶è¨ä½äºéäºè³è¨ã
çµè«
ä½ ç¾å¨æè©²å·²ç¶äºè§£å¦ä½çºå¤§é¨åçæ å¢æ°å¯«ç¡éç¤ HTML äºãæåç WAI-ARIA åºç¤æç« å°å¹«å©å¡«è£éæ¹é¢ç¥èç空ç½ï¼ä½æ¬æå·²ç¶èçäºåºç¤ç¥èãæ¥ä¸ä¾æåå°æ¢è¨ CSS å JavaScriptï¼ä»¥å使ç¨è¯å¥½æä½¿ç¨ä¸è¯å°å¦ä½å½±é¿ç¡éç¤æ§ã