CSSã«WCAGã¬ã€ãã©ã€ã³ãå®è£ ãã誰ããã¢ã¯ã»ã¹ã§ãããŠã§ããµã€ããæ§ç¯ããæ¹æ³ãåŠã³ãŸããããäžçäžã®ãŠãŒã¶ãŒã«åããã€ã³ã¯ã«ãŒã·ããªãã¶ã€ã³ãå®çŸããŸãã
CSSã«ãããã¢ã¯ã»ã·ããªãã£ïŒWCAGæºæ ã®ããã®å®è·µã¬ã€ã
仿¥ã®ãŸããŸãããžã¿ã«åãé²ãäžçã«ãããŠããŠã§ãã¢ã¯ã»ã·ããªãã£ã®ç¢ºä¿ã¯åãªããã¹ããã©ã¯ãã£ã¹ã§ã¯ãªããå«ççãªè²¬åã§ããã¢ã¯ã»ã·ãã«ãªãŠã§ããµã€ãã¯ãèœåã«é¢ãããããã¹ãŠã®ãŠãŒã¶ãŒã«å¹³çãªã¢ã¯ã»ã¹ãšæ©äŒãæäŸããŸãããã®ã¬ã€ãã§ã¯ããŠã§ãã³ã³ãã³ãã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ïŒWCAGïŒã«æºæ ããCSSãæŽ»çšããŠã¢ã¯ã»ã·ãã«ã§ã€ã³ã¯ã«ãŒã·ããªãŠã§ãäœéšãåµåºããæ¹æ³ã«çŠç¹ãåœãŠãŸãã
WCAGãšã¯äœãããªãéèŠãªã®ãïŒ
ãŠã§ãã³ã³ãã³ãã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ïŒWCAGïŒã¯ããŠã§ãã³ã³ãã³ããé害ã®ãã人ã ã«ãšã£ãŠããã¢ã¯ã»ã·ãã«ã«ããããã®åœéçã«èªç¥ãããäžé£ã®å§åã§ãã World Wide Web ConsortiumïŒW3CïŒã«ãã£ãŠçå®ãããWCAGã¯ãå人ãçµç¹ããããŠååœã®æ¿åºã®ããŒãºã«å¿ãããŠã§ãã¢ã¯ã»ã·ããªãã£ã®å ±éåºæºãæäŸããŸããWCAGãéèŠãªçç±ã¯ä»¥äžã®éãã§ãïŒ
- å æ¬æ§ãä¿é²ãã誰ããããªãã®ãŠã§ããµã€ãã«ã¢ã¯ã»ã¹ããå©çšã§ããããã«ããŸãã
- é害ã®ãããŠãŒã¶ãŒã ãã§ãªãããã¹ãŠã®ãŠãŒã¶ãŒã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
- ãŠã§ããµã€ãã®SEOïŒæ€çŽ¢ãšã³ãžã³æé©åïŒã匷åããããšãã§ããŸãã
- å°åã«ãã£ãŠã¯æ³çã«èŠæ±ãããå ŽåããããŸãã äŸãã°ãå€ãã®åœã§ã¯æ¿åºã®ãŠã§ããµã€ããç¹å®ã®æ°éäŒæ¥ã«å¯ŸããŠãŠã§ãã¢ã¯ã»ã·ããªãã£ã矩åä»ããæ³åŸããããŸããç±³åœã®é害ãæã€ã¢ã¡ãªã«äººæ³ïŒADAïŒã¯ãŠã§ããµã€ãã«ãé©çšããããšè§£éãããŠããŸãããšãŒãããã§ã¯ã欧å·ã¢ã¯ã»ã·ããªãã£æ³ããŠã§ããµã€ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãå«ãåºç¯ãªè£œåããµãŒãã¹ã«ã¢ã¯ã»ã·ããªãã£èŠä»¶ãèšå®ããŠããŸãã ãªãŒã¹ãã©ãªã¢ã«ã¯ããŠã§ãã¢ã¯ã»ã·ããªãã£ã察象ãšããé害è å·®å¥çŠæ¢æ³ããããŸãã
- 瀟äŒç責任ã瀺ãããã©ã³ãã®è©å€ã匷åããŸãã
WCAGã®ååïŒPOUR
WCAGã¯ãé åèªPOURã§ç¥ããã4ã€ã®äžå¿çãªååã«åºã¥ããŠããŸãïŒ
- ç¥èŠå¯èœ (Perceivable): æ å ±ããã³ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®ã³ã³ããŒãã³ãã¯ããŠãŒã¶ãŒãç¥èŠã§ããæ¹æ³ã§æç€ºå¯èœã§ãªããã°ãªããªãã
- æäœå¯èœ (Operable): ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®ã³ã³ããŒãã³ãããã³ããã²ãŒã·ã§ã³ã¯ãæäœå¯èœã§ãªããã°ãªããªãã
- çè§£å¯èœ (Understandable): æ å ±ããã³ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®æäœã¯ãçè§£å¯èœã§ãªããã°ãªããªãã
- å ç¢ (Robust): ã³ã³ãã³ãã¯ãæ¯æŽæè¡ãå«ãæ§ã ãªãŠãŒã¶ãŒãšãŒãžã§ã³ãã確å®ã«è§£éã§ããã»ã©å ç¢ã§ãªããã°ãªããªãã
ã¢ã¯ã»ã·ããªãã£ã®ããã®CSSãã¯ããã¯
CSSã¯WCAGæºæ ãéæããäžã§éèŠãªåœ¹å²ãæãããŸãã以äžã«èæ ®ãã¹ãäž»èŠãªCSSãã¯ããã¯ãããã€ã玹ä»ããŸãïŒ
1. ã»ãã³ãã£ãã¯HTMLãšCSS
ã»ãã³ãã£ãã¯HTMLèŠçŽ ãæ£ãã䜿çšããããšã§ãã³ã³ãã³ãã«æå³ãšæ§é ãäžããããã¹ã¯ãªãŒã³ãªãŒããŒããã®ä»ã®æ¯æŽæè¡ã«ãšã£ãŠããã¢ã¯ã»ã·ãã«ã«ãªããŸããCSSã¯ããããã®ã»ãã³ãã£ãã¯èŠçŽ ã®è¡šç€ºã匷åããŸãã
äŸïŒ
ãã¹ãŠã«æ±çšçãª<div>
èŠçŽ ã䜿çšãã代ããã«ã<article>
ã<nav>
ã<aside>
ã<header>
ã<footer>
ã<main>
ã<section>
ãããã³èŠåºãã¿ã°ïŒ<h1>
ãã<h6>
ïŒãªã©ã®ã»ãã³ãã£ãã¯èŠçŽ ã䜿çšããŸãã
HTMLïŒ
<article>
<h2>èšäºã®ã¿ã€ãã«</h2>
<p>ããã«èšäºã®ã³ã³ãã³ããå
¥ããŸãã</p>
</article>
CSSïŒ
article {
margin-bottom: 20px;
}
h2 {
font-size: 1.5em;
font-weight: bold;
margin-bottom: 10px;
}
<article>
ãš<h2>
ã䜿çšããããšã§ãã³ã³ãã³ãã«ã»ãã³ãã£ãã¯ãªæå³ãäžããæ¯æŽæè¡ãæ§é ãšæèãçè§£ããã®ãå©ããŸãã
2. è²ãšã³ã³ãã©ã¹ã
èŠèŠé害ãè²èŠç°åžžã®ãããŠãŒã¶ãŒãã³ã³ãã³ããèªã¿ãããããããã«ãããã¹ããšèæ¯è²ã®éã«ååãªã«ã©ãŒã³ã³ãã©ã¹ãã確ä¿ããŠãã ãããWCAG 2.1 ã¬ãã«AAã§ã¯ãéåžžã®ããã¹ãã«ã¯å°ãªããšã4.5:1ã倧ããªããã¹ãïŒ18ptãŸãã¯14ptã®å€ªåïŒã«ã¯3:1ã®ã³ã³ãã©ã¹ãæ¯ãèŠæ±ãããŸãã
ã«ã©ãŒã³ã³ãã©ã¹ãã確èªããããã®ããŒã«ïŒ
- WebAIM ã«ã©ãŒã³ã³ãã©ã¹ããã§ãã«ãŒïŒ https://webaim.org/resources/contrastchecker/
- ã¢ã¯ã»ã·ãã«ã«ã©ãŒãã¬ãããã«ããŒïŒ https://www.learnui.design/tools/accessible-color-palette-builder.html
- Chrome DevToolsïŒ Chrome DevToolsã«ã¯ãçµã¿èŸŒã¿ã®ã«ã©ãŒã³ã³ãã©ã¹ããã§ãã¯æ©èœããããŸãã
äŸïŒ
/* è¯å¥œãªã³ã³ãã©ã¹ã */
body {
background-color: #000000; /* é» */
color: #FFFFFF; /* çœ */
}
/* äžååãªã³ã³ãã©ã¹ã */
body {
background-color: #FFFFFF; /* çœ */
color: #F0F0F0; /* ã©ã€ãã°ã¬ãŒ */
}
æåã®äŸã¯è¯å¥œãªã³ã³ãã©ã¹ããæäŸããŸããã2çªç®ã®äŸã¯ã³ã³ãã©ã¹ããäžååã§ãå€ãã®ãŠãŒã¶ãŒã«ãšã£ãŠèªã¿ã«ããã§ãããã
è²ã ãã«é ŒããªãïŒ æ å ±äŒéãè²ã ãã«äŸåããªãã§ãã ãããæ å ±ã誰ã«ã§ãã¢ã¯ã»ã¹ã§ããããã«ãè²ã«å ããŠããã¹ãã©ãã«ãã¢ã€ã³ã³ããŸãã¯ãã®ä»ã®èŠèŠçãªæãããã䜿çšããŠãã ãããäŸãã°ãå¿ é ã®ãã©ãŒã ãã£ãŒã«ããèµ€è²ã§ãã€ã©ã€ããã代ããã«ãèµ€ãæ ç·ãšãïŒå¿ é ïŒãã®ãããªããã¹ãã©ãã«ãçµã¿åãããŠäœ¿çšããŸãã
3. ãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒ
ãŠãŒã¶ãŒãããŒããŒãïŒäŸïŒTabããŒïŒã䜿çšããŠãŠã§ããµã€ããããã²ãŒãããéãçŸåšã©ã®èŠçŽ ããã©ãŒã«ã¹ãæã£ãŠããããç¥ãããã«ãæç¢ºãªèŠèŠçãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒãæäŸããããšãäžå¯æ¬ ã§ãã ãã©ãŠã¶ã®ããã©ã«ãã®ãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒã¯ãå Žåã«ãã£ãŠã¯äžååã§ãã£ãããèŠããªãã£ããããããšãããããŸãã CSSã䜿çšããŠãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒãã«ã¹ã¿ãã€ãºããããç®ç«ãããŸãããã
äŸïŒa:focus, button:focus, input:focus, textarea:focus, select:focus { outline: 2px solid #007bff; /* éãã¢ãŠãã©ã€ã³ */ outline-offset: 2px; /* èŠçŽ ãšã¢ãŠãã©ã€ã³ã®éã«ã¹ããŒã¹ãäœæ */ }
ãã®CSSã³ãŒãã¯ãèŠçŽ ããã©ãŒã«ã¹ãåãåã£ããšãã«éãã¢ãŠãã©ã€ã³ã远å ããŸããoutline-offset
ããããã£ã¯ãèŠçŽ ãšã¢ãŠãã©ã€ã³ã®éã«å°ããªã¹ããŒã¹ã远å ããèŠèªæ§ãåäžãããŸãã é©åãªä»£æ¿ææ®µãæäŸããã«ãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒãå®å
šã«åãé€ãããšã¯é¿ããŠãã ãããããã¯ããŒããŒããŠãŒã¶ãŒã«ãšã£ãŠãŠã§ããµã€ãã䜿çšäžèœã«ãªãå¯èœæ§ããããŸãã
4. ããŒããŒãããã²ãŒã·ã§ã³
ãã¹ãŠã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ïŒãªã³ã¯ããã¿ã³ããã©ãŒã ãã£ãŒã«ããªã©ïŒãããŒããŒãã§ããã²ãŒãå¯èœã§ããããšã確èªããŠãã ãããããã¯ããŠã¹ã䜿çšã§ããªããŠãŒã¶ãŒã«ãšã£ãŠäžå¯æ¬ ã§ããHTMLãœãŒã¹ã³ãŒãå ã®èŠçŽ ã®é åºã¯ããŒãžäžã®èŠèŠçãªé åºãšäžèŽãããã¹ãã§ããããã«ãããè«ççãªããã²ãŒã·ã§ã³ãããŒã確ä¿ãããŸãã CSSã䜿çšããŠèŠèŠçã«èŠçŽ ãåé 眮ãã€ã€ãè«ççãªããŒããŒãããã²ãŒã·ã§ã³ã®é åºãç¶æããŸãã
äŸïŒ
CSSã䜿çšããŠç»é¢ã®å³åŽã«ããã²ãŒã·ã§ã³ã¡ãã¥ãŒã衚瀺ãããã·ããªãªãèããŠã¿ãŸãããã ããããã¢ã¯ã»ã·ããªãã£ã®ããã«ãã¹ã¯ãªãŒã³ãªãŒããŒã®ãŠãŒã¶ãŒãã¡ã€ã³ã³ã³ãã³ãã®åã«ããã²ãŒã·ã§ã³ã¡ãã¥ãŒã«ééããããã«ãHTMLãœãŒã¹ã³ãŒãã§ã¯ããã²ãŒã·ã§ã³ã¡ãã¥ãŒãæåã«è¡šç€ºãããããã«ããããšããŸãã
HTMLïŒ
<nav>
<ul>
<li><a href="#">ããŒã </a></li>
<li><a href="#">æŠèŠ</a></li>
<li><a href="#">ãµãŒãã¹</a></li>
<li><a href="#">ãåãåãã</a></li>
</ul>
</nav>
<main>
<h1>ã¡ã€ã³ã³ã³ãã³ã</h1>
<p>ãããããŒãžã®ã¡ã€ã³ã³ã³ãã³ãã§ãã</p>
</main>
CSSïŒ
body {
display: flex;
}
nav {
order: 1; /* ããã²ãŒã·ã§ã³ãå³ã«ç§»å */
width: 200px;
padding: 20px;
}
main {
order: 0; /* ã¡ã€ã³ã³ã³ãã³ããå·Šã«ç¶æ */
flex: 1;
padding: 20px;
}
CSSã®order
ããããã£ã䜿çšããããšã§ãHTMLãœãŒã¹ã³ãŒãå
ã®å
ã®äœçœ®ãç¶æãã€ã€ãããã²ãŒã·ã§ã³ã¡ãã¥ãŒãç»é¢ã®å³åŽã«èŠèŠçã«åé
眮ã§ããŸããããã«ãããããŒããŒããŠãŒã¶ãŒãæåã«ããã²ãŒã·ã§ã³ã¡ãã¥ãŒã«ééããããšãä¿èšŒãããã¢ã¯ã»ã·ããªãã£ãåäžããŸãã
5. ã³ã³ãã³ãã責任ãæã£ãŠé衚瀺ã«ãã
æã«ã¯ãèŠèŠçãªè¡šç€ºããã³ã³ãã³ããé ãã€ã€ãã¹ã¯ãªãŒã³ãªãŒããŒã«ã¯ã¢ã¯ã»ã¹ã§ããããã«ããå¿
èŠãããå ŽåããããŸãã äŸãã°ãã¢ã€ã³ã³ã ãã§èŠèŠçã«è¡šçŸãããŠãããªã³ã¯ããã¿ã³ã«è¿œå ã®æèãæäŸãããå Žåãªã©ã§ãã display: none
ãvisibility: hidden
ã¯ãèŠèŠãŠãŒã¶ãŒãšã¹ã¯ãªãŒã³ãªãŒããŒã®äž¡æ¹ããã³ã³ãã³ããé ããŠããŸãããã䜿çšãé¿ããŠãã ããã代ããã«ãã³ã³ãã³ããèŠèŠçã«é ãã€ã€ãæ¯æŽæè¡ã«ã¯ã¢ã¯ã»ã¹å¯èœãªç¶æ
ãä¿ã€ãã¯ããã¯ã䜿çšããŸãã
äŸïŒ
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
ãã®CSSã¯ã©ã¹ã¯ãèŠçŽ ãèŠèŠçã«é ããªãããã¹ã¯ãªãŒã³ãªãŒããŒã«ã¯ã¢ã¯ã»ã¹å¯èœãªç¶æ ãä¿ã¡ãŸããã¹ã¯ãªãŒã³ãªãŒããŒã«ã¯èªã¿äžãããããããèŠèŠçã«ã¯è¡šç€ºããããªãããã¹ãã«ãã®ã¯ã©ã¹ãé©çšããŸãã
HTMLã®äŸïŒ
<a href="#">ç·šé <span class="sr-only">ã¢ã€ãã </span></a>
ãã®äŸã§ã¯ããã¢ã€ãã ããšããããã¹ãã¯èŠèŠçã«ã¯é ãããŠããŸãããã¹ã¯ãªãŒã³ãªãŒããŒã«ãã£ãŠèªã¿äžãããããç·šéããªã³ã¯ã«æèãæäŸããŸãã
ARIA屿§ïŒAccessible Rich Internet ApplicationsïŒïŒ ARIA屿§ãæ éã«äœ¿çšããŠãåçãªã³ã³ãã³ããè€éãªUIã³ã³ããŒãã³ãã®ã¢ã¯ã»ã·ããªãã£ãåäžãããŸãã ARIA屿§ã¯ãæ¯æŽæè¡ã«è¿œå ã®ã»ãã³ãã£ãã¯ãªæ å ±ãæäŸããŸãã ããããã»ãã³ãã£ãã¯HTMLã§è§£æ±ºã§ããã¢ã¯ã»ã·ããªãã£ã®åé¡ãä¿®æ£ããããã«ARIA屿§ã䜿çšããããšã¯é¿ããŠãã ããã äŸãã°ãã«ã¹ã¿ã ãŠã£ãžã§ãããå®çŸ©ããããã³ã³ãã³ããåçã«å€æŽããããšãã«ã¹ã¯ãªãŒã³ãªãŒããŒã«ã¹ããŒã¿ã¹ã®æŽæ°ãæäŸãããããããã«ãARIAã®ããŒã«ã屿§ã䜿çšããŸãã
6. ã¬ã¹ãã³ã·ããã¶ã€ã³ãšã¢ã¯ã»ã·ããªãã£
ãŠã§ããµã€ããã¬ã¹ãã³ã·ãã§ãããããŸããŸãªç»é¢ãµã€ãºãããã€ã¹ã«é©å¿ããããšã確èªããŠãã ããã ããã¯ãã¢ãã€ã«ããã€ã¹ãã¿ãã¬ããã§æ¯æŽæè¡ã䜿çšããŠããå¯èœæ§ã®ããé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠéåžžã«éèŠã§ãã CSSã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãç»é¢ãµã€ãºãåãã«åºã¥ããŠã³ã³ãã³ãã®ã¬ã€ã¢ãŠãã衚瀺ã調æŽããŸãã
äŸïŒ
@media (max-width: 768px) {
nav ul {
flex-direction: column; /* å°ããªç»é¢ã§ã¯ããã²ãŒã·ã§ã³é
ç®ãåçŽã«éãã */
}
}
ãã®CSSã³ãŒãã¯ãã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãå°ããªç»é¢ã§ã¯ããã²ãŒã·ã§ã³é ç®ã®æ¹åãåçŽã«å€æŽããã¢ãã€ã«ããã€ã¹ã§ã®ããã²ãŒã·ã§ã³ã容æã«ããŸãã
7. ã¢ãã¡ãŒã·ã§ã³ãšåã
é床ãŸãã¯äžé©åã«å®è£
ãããã¢ãã¡ãŒã·ã§ã³ã¯ãäžéšã®ãŠãŒã¶ãŒã«ãŠãããçºäœãä¹ãç©é
ããåŒãèµ·ããå¯èœæ§ããããŸããCSSã䜿çšããŠãåãã®äœæžã奜ããŠãŒã¶ãŒã®ããã«ã¢ãã¡ãŒã·ã§ã³ãæžãããç¡å¹ã«ããŸãã prefers-reduced-motion
ã¡ãã£ã¢ã¯ãšãªã䜿çšãããšããŠãŒã¶ãŒãã·ã¹ãã ã§äœ¿çšããã¢ãã¡ãŒã·ã§ã³ãåãã®éãæå°éã«æããããèŠæ±ããŠãããã©ãããæ€åºã§ããŸãã
äŸïŒ
@media (prefers-reduced-motion: reduce) {
.animated-element {
animation: none !important;
transition: none !important;
}
}
ãã®CSSã³ãŒãã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ãåãã®äœæžãèšå®ãæå¹ã«ããŠãããŠãŒã¶ãŒã«å¯ŸããŠãã¢ãã¡ãŒã·ã§ã³ãšãã©ã³ãžã·ã§ã³ãç¡å¹ã«ããŸãã ãŠãŒã¶ãŒããŠã§ããµã€ãäžã§æåã§ã¢ãã¡ãŒã·ã§ã³ãç¡å¹ã«ã§ããã³ã³ãããŒã«ãæäŸããããšãæ€èšããŠãã ããã
8. æ¯æŽæè¡ã«ãããã¹ã
ãŠã§ããµã€ããã¢ã¯ã»ã·ãã«ã§ããããšã確èªããæã广çãªæ¹æ³ã¯ãã¹ã¯ãªãŒã³ãªãŒããŒãç»é¢æ¡å€§é¡ãé³å£°èªèãœãããŠã§ã¢ãªã©ã®æ¯æŽæè¡ã§ãã¹ãããããšã§ãã ãŠã§ããµã€ãã®ã¢ã¯ã»ã·ããªãã£ãå æ¬çã«çè§£ããããã«ãããŸããŸãªæ¯æŽæè¡ã䜿çšããŠãã ããã
代衚çãªã¹ã¯ãªãŒã³ãªãŒããŒïŒ
- NVDA (NonVisual Desktop Access): Windowsçšã®ç¡æã®ãªãŒãã³ãœãŒã¹ã¹ã¯ãªãŒã³ãªãŒããŒã
- JAWS (Job Access With Speech): Windowsçšã®äººæ°ã®ããåçšã¹ã¯ãªãŒã³ãªãŒããŒã
- VoiceOver: macOSããã³iOSã«å èµãããŠããã¹ã¯ãªãŒã³ãªãŒããŒã
远å ã®ãã¹ãã®ãã³ãïŒ
- ããŒããŒãããã²ãŒã·ã§ã³ïŒ ãã¹ãŠã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãããŒããŒãã§å°éå¯èœã§ããããã©ãŒã«ã¹ã®é åºãè«ççã§ããããšããã¹ãããŸãã
- ãã©ãŒã ã®ã¢ã¯ã»ã·ããªãã£ïŒ ãã©ãŒã ãã£ãŒã«ããé©åã«ã©ãã«ä»ãããããšã©ãŒã¡ãã»ãŒãžãæç¢ºã§çè§£ããããããšã確èªããŸãã
- ç»åã®ä»£æ¿ããã¹ãïŒ ãã¹ãŠã®ç»åã«ãç»åã®å å®¹ãšæ©èœãæ£ç¢ºã«äŒãã説æçãªä»£æ¿ããã¹ããããããšã確èªããŸãã
- åçã³ã³ãã³ãïŒ åçãªã³ã³ãã³ãã®æŽæ°ãã¹ã¯ãªãŒã³ãªãŒããŒã«é©åã«éç¥ãããããšããã¹ãããŸãã
ã¢ã¯ã»ã·ããªãã£ã®ããã®é«åºŠãªCSSãã¯ããã¯
1. ããŒãèšå®ã®ããã®ã«ã¹ã¿ã ããããã£ïŒCSS倿°ïŒ
CSSã«ã¹ã¿ã ããããã£ïŒå€æ°ïŒã䜿çšããŠããã€ã³ã³ãã©ã¹ããªãã·ã§ã³ãåããã¢ã¯ã»ã·ãã«ãªããŒããäœæããŸããããã«ããããŠãŒã¶ãŒã¯åã ã®ããŒãºã«åãããŠãŠã§ããµã€ãã®å€èгãã«ã¹ã¿ãã€ãºã§ããŸãã
äŸïŒ
:root {
--text-color: #333;
--background-color: #fff;
--link-color: #007bff;
}
body {
color: var(--text-color);
background-color: var(--background-color);
}
a {
color: var(--link-color);
}
/* ãã€ã³ã³ãã©ã¹ãããŒã */
.high-contrast {
--text-color: #fff;
--background-color: #000;
--link-color: #ff0;
}
ãã®äŸã§ã¯ãããã¹ãã®è²ãèæ¯è²ããªã³ã¯ã®è²ã«å¯ŸããCSSã«ã¹ã¿ã ããããã£ãå®çŸ©ããŠããŸãã.high-contrast
ã¯ã©ã¹ã¯ãããã®å€æ°ãäžæžãããŠãã€ã³ã³ãã©ã¹ãããŒããäœæããŸãããã®åŸãJavaScriptã䜿çšããŠ<body>
èŠçŽ ã®.high-contrast
ã¯ã©ã¹ãåãæ¿ããããšã§ãããŒããåãæ¿ããããšãã§ããŸãã
2. ã¢ã¯ã»ã·ãã«ãªã¬ã€ã¢ãŠãã®ããã®CSS GridãšFlexbox
CSS GridãšFlexboxã¯ãã¢ã¯ã»ã·ãã«ã§ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããäœæããããã«äœ¿çšã§ãã匷åãªã¬ã€ã¢ãŠãããŒã«ã§ãããã ããèŠçŽ ã®èŠèŠçãªé åºãDOMã®é åºãšäžèŽããããã«æ éã«äœ¿çšããããšãéèŠã§ãã
äŸïŒ
FlexboxãGridã䜿çšããéã¯ãã¿ãã®é åºãè«ççã§ããããšã確èªããŠãã ãããorder
ããããã£ã¯ãæ
éã«äœ¿çšããªããšã¿ãã®é åºãä¹±ãå¯èœæ§ããããŸãã
3. `clip-path`ãšã¢ã¯ã»ã·ããªãã£
`clip-path`ããããã£ã¯ãèŠèŠçã«è峿·±ã圢ç¶ã广ãäœæããããã«äœ¿çšã§ããŸãã ãã ãã`clip-path`ã¯ã³ã³ãã³ããé ããããæäœãå°é£ã«ãããããããšãããããã䜿çšã«ã¯æ³šæãå¿ èŠã§ãã åãåãããã³ã³ãã³ããã¢ã¯ã»ã·ãã«ã§ããç¶ããã¯ãªããã³ã°ãããŒããŒãããã²ãŒã·ã§ã³ãã¹ã¯ãªãŒã³ãªãŒããŒã®ã¢ã¯ã»ã¹ã劚ããªãããšã確èªããŠãã ããã
4. `content`ããããã£ãšã¢ã¯ã»ã·ããªãã£
CSSã®`content`ããããã£ã¯ãèŠçŽ ã®åãŸãã¯åŸã«çæãããã³ã³ãã³ããæ¿å ¥ããããã«äœ¿çšã§ããŸãã ããããçæãããã³ã³ãã³ãã¯ã¹ã¯ãªãŒã³ãªãŒããŒã«ãšã£ãŠå¿ ãããã¢ã¯ã»ã·ãã«ã§ã¯ãããŸããã `content`ããããã£ã¯æ éã«äœ¿çšããæ¯æŽæè¡ã«è¿œå ã®ã»ãã³ãã£ãã¯ãªæ å ±ãæäŸããããã«ARIA屿§ã䜿çšããããšãæ€èšããŠãã ããã
å®äžçã®äŸãšã±ãŒã¹ã¹ã¿ãã£
ãããã®ååãããŸããŸãªå°åãæèã§ã©ã®ããã«é©çšãããŠãããã瀺ãããã«ãããã€ãã®å®äžçã®äŸãèŠãŠã¿ãŸãããã
- æ¿åºã®ãŠã§ããµã€ãïŒ ã€ã®ãªã¹ãã«ããããªãŒã¹ãã©ãªã¢ãå«ãå€ãã®åœã§ã¯ãæ¿åºã®ãŠã§ããµã€ãã«å¯ŸããŠå³æ Œãªã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ãå®ããããŠããŸãããããã®ãŠã§ããµã€ãã¯ãã»ãã³ãã£ãã¯HTMLãã«ã©ãŒã³ã³ãã©ã¹ããããŒããŒãããã²ãŒã·ã§ã³ã«ããããã¹ããã©ã¯ãã£ã¹ã瀺ããWCAGæºæ ã®æš¡ç¯çãªã¢ãã«ãšããŠãã°ãã°æ©èœããŸãã
- Eã³ããŒã¹ãã©ãããã©ãŒã ïŒ AmazonãAlibabaã®ãããªäžççãªEã³ããŒã¹å€§æã¯ãããåºãå±€ã«ãªãŒãããããã«ã¢ã¯ã»ã·ããªãã£ã«å€é¡ã®æè³ãããŠããŸãã圌ãã¯ãã°ãã°ãç»åã®ä»£æ¿ããã¹ãã補åé²èЧã®ããã®ããŒããŒãããã²ãŒã·ã§ã³ãèªã¿ããããåäžãããããã®èª¿æŽå¯èœãªãã©ã³ããµã€ãºãªã©ã®æ©èœãå®è£ ããŠããŸãã
- æè²æ©é¢ïŒ äžçäžã®å€§åŠãã«ã¬ããžã¯ãã¢ã¯ã»ã·ãã«ãªãªã³ã©ã€ã³åŠç¿ç°å¢ã®æ§ç¯ã«ãŸããŸã泚åããŠããŸããé害ã®ããåŠçã«å¯Ÿå¿ããããããããªã®ãã©ã³ã¹ã¯ãªãããé³å£°ã³ã³ãã³ãã®ãã£ãã·ã§ã³ãææã®ã¢ã¯ã»ã·ãã«ãªããŒãžã§ã³ããã°ãã°æäŸããŠããŸãã
é¿ããã¹ãäžè¬çãªã¢ã¯ã»ã·ããªãã£ã®ééã
- äžååãªã«ã©ãŒã³ã³ãã©ã¹ãïŒ èŠèŠé害ã®ãããŠãŒã¶ãŒã«ãšã£ãŠèªã¿ã«ããè²ã®çµã¿åããã䜿çšããããšã
- ç»åã®ä»£æ¿ããã¹ãã®æ¬ èœïŒ ç»åã«èª¬æçãªä»£æ¿ããã¹ããæäŸãããã¹ã¯ãªãŒã³ãªãŒããŒãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ããªãããããšã
- äžååãªããŒããŒãããã²ãŒã·ã§ã³ïŒ ããŒããŒãã䜿çšããŠããã²ãŒãããããšãå°é£ãŸãã¯äžå¯èœãªãŠã§ããµã€ããäœæããããšã
- ã¬ã€ã¢ãŠãã«ããŒãã«ã䜿çšããïŒ ã»ãã³ãã£ãã¯HTMLèŠçŽ ã®ä»£ããã«ãã¬ã€ã¢ãŠãç®çã§HTMLããŒãã«ã䜿çšããããšã
- ãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒã®ç¡èŠïŒ èŠèŠçãªãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒãåé€ãŸãã¯äžæçã«ããããŒããŒããŠãŒã¶ãŒãã©ã®èŠçŽ ã«ãã©ãŒã«ã¹ãããããç¥ãã®ãå°é£ã«ããããšã
- æ å ±äŒéãè²ã ãã«äŸåããïŒ æ å ±äŒéã®å¯äžã®ææ®µãšããŠè²ã䜿çšããè²èŠç°åžžã®ãããŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ããªãããããšã
- æ¯æŽæè¡ã§ãã¹ãããªãïŒ ã¹ã¯ãªãŒã³ãªãŒããŒãªã©ã®æ¯æŽæè¡ã§ãŠã§ããµã€ãããã¹ããããã¢ã¯ã»ã·ããªãã£ã®åé¡ãç¹å®ããŠä¿®æ£ããªãããšã
çµè«ïŒããè¯ããŠã§ãã®ããã«ã¢ã¯ã»ã·ããªãã£ãåãå ¥ãã
ã¢ã¯ã»ã·ããªãã£ã¯åãªãæè¡çãªèŠä»¶ã§ã¯ãããŸãããããã¯ããã¹ãŠã®äººã ã«ãšã£ãŠå æ¬çã§ã¢ã¯ã»ã¹ãããããŠã§ããåµé ããããã®åºæ¬çãªåŽé¢ã§ãããããã®CSSãã¯ããã¯ãå®è£ ããWCAGã¬ã€ãã©ã€ã³ã«åŸãããšã§ãèŠèŠçã«é åçã§ããã ãã§ãªããèœåã«é¢ããããã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠäœ¿ãããããæ¥œããããŠã§ããµã€ããäœæã§ããŸããã¢ã¯ã»ã·ããªãã£ããŠã§ãéçºããã»ã¹ã«äžå¯æ¬ ãªéšåãšããŠåãå ¥ããããå æ¬çã§å ¬å¹³ãªããžã¿ã«äžçã«è²¢ç®ããŸãããã
ãªãœãŒã¹ãšåèæç®
- ãŠã§ãã³ã³ãã³ãã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ïŒWCAGïŒïŒ https://www.w3.org/WAI/standards-guidelines/wcag/
- ãŠã§ãã¢ã¯ã»ã·ããªãã£ã€ãã·ã¢ããïŒWAIïŒïŒ https://www.w3.org/WAI/
- WebAIMïŒ https://webaim.org/
- Deque UniversityïŒ https://dequeuniversity.com/