>  기사  >  웹 프론트엔드  >  접근성 (a) 규칙 - 3

접근성 (a) 규칙 - 3

Barbara Streisand
Barbara Streisand원래의
2024-11-18 20:32:02693검색

이미지

단지 이미지에 대체 텍스트를 추가하는 것이 아닙니다. 그 이상입니다.

장식적인 이미지

  • 사용자가 맥락을 더 잘 이해할 수 있도록 이미지에 추가적인 맥락이나 정보(장식 이미지)가 추가되지 않는 경우 스크린 리더와 같은 보조 기술(AT)에서 숨겨야 합니다.

  • AT에서 이미지를 숨기려면 다음 방법 중 하나를 사용하세요.

    • 빈 텍스트 또는 null 대체 텍스트(alt)
    • ARIA 적용
    • 이미지를 CSS 배경으로 추가
<!-- All of these choices lead to the same result. -->
<img src=".../Ladybug.jpg" role="presentation">
<img src=".../Ladybug.jpg" role="none">
<img src=".../Ladybug.jpg" aria-hidden="true">
  • 의심스러운 경우 이미지에 설명을 추가하세요.

비어 있거나 null 대체

  • 이미지가 순전히 장식용이 아닌 이상 이미지 대체 속성을 ""로 설정하지 마세요.
Attribute Example Screen Reader Behavior Use Case
alt="" (Empty) Ignores the image completely Decorative or non-informative images
Missing alt May read the filename/URL Not recommended; implies negligence

유익한 이미지

  • 이미지가 개념, 아이디어 또는 감정을 전달하는 경우 이미지의 목적을 설명하는 프로그래밍 방식의 대체 텍스트를 포함해야 합니다.

  • 가능한 경우 이미지에 대한 매우 자세한 설명을 추가하세요.

예:

<img src=".../Ladybug_Swarm.jpg" alt="A swarm of red ladybugs is resting 
on the leaves of my prize rose bush.">

Accessibility (a) Rules - 3

  • 이미지가 (인라인)인 경우 role="img"를 추가하세요.

  • 요소는 alt 속성을 지원하지 않으므로 대체 코딩 방법을 사용하여 설명을 제공하세요.

Method Use Case Pros Cons
</td> <td>Short, brief descriptions</td> <td>Simple, widely supported</td> <td>Limited in length</td> </tr> <tr> <td>aria-label</td> <td>Brief descriptions</td> <td>Quick, inline</td> <td>Best for short text</td> </tr> <tr> <td>aria-labelledby</td> <td>Complex descriptions using <title> and <desc></td> <td>Comprehensive, flexible</td> <td>More verbose</td> </tr> <tr> <td><figcaption></td> <td>Visible description in a figure context</td> <td>Visible and accessible</td> <td>Not ideal for all SVGs</td> </tr> </tbody> </table></div> <h3> 기능적 이미지 </h3> <ul> <li><p>기능적 목적을 가진 모든 이미지(예: 홈 페이지로 연결되는 로고, 검색 버튼으로 사용되는 돋보기 아이콘)에는 적절한 대체 텍스트가 포함되어야 합니다.</p></li> <li><p>대체 텍스트는 시각적인 측면이 아닌 <strong>이미지의 동작</strong>을 설명해야 합니다.</p></li> <li><p>이미지가 유익하고 실행 가능한 경우 각 요소에 대체 설명을 추가할 수 있지만 필수 사항은 아닙니다. 예:<br> </p></li> </ul> <pre class="brush:php;toolbar:false"><!-- All of these choices lead to the same result. --> <img src=".../Ladybug.jpg" role="presentation"> <img src=".../Ladybug.jpg" role="none"> <img src=".../Ladybug.jpg" aria-hidden="true"> </pre> <h3> 복잡한 이미지 </h3> <ul> <li><p>인포그래픽, 지도, 그래프/차트, 복잡한 일러스트레이션이 포함된 장식적, 정보적 또는 기능적 이미지보다 더 많은 설명이 필요한 이미지인 경우 다음 방법 중 하나를 사용하여 대체 설명을 추가하세요.</p></li> <li><p>리소스에 대한 링크를 제공하거나 페이지 뒷부분에 더 긴 설명으로 연결되는 점프 링크를 제공하세요. 예:<br> </p></li> </ul> <pre class="brush:php;toolbar:false"><img src=".../Ladybug_Swarm.jpg" alt="A swarm of red ladybugs is resting on the leaves of my prize rose bush."> </pre> <ul> <li><img> 그런 다음 요소는 더 긴 설명이 포함된 ID에 이미지를 연결합니다. 예를 들어 </li> </ul> <pre class="brush:php;toolbar:false"><div title="Navigate to the homepage"> <a href="/"> <img src=".../Ladybug_Logo.png" alt="Lovely Ladybugs for your Lawn"/> </a> </div> </pre> <h3> 대체 텍스트 모범 사례 </h3> <ul> <li><p>독자의 피로를 피하기 위해 대체 텍스트를 150자 이하로 제한하는 것이 좋습니다.</p></li> <li><p>설명에 <strong>"이미지"</strong> 또는 <strong>"사진"</strong>과 같은 단어를 사용하지 마세요. 스크린 리더가 이러한 파일 형식을 식별합니다.</p></li> <li><p>이미지 이름을 지정할 때는 최대한 일관되고 정확해야 합니다. 대체 텍스트가 누락되거나 무시되는 경우 이미지 이름은 대체됩니다.</p></li> <li><p>알파벳이 아닌 문자(예: #, 9, &)를 사용하지 마세요. </p></li> <li><p>이미지 이름이나 대체 텍스트에 밑줄 대신 단어 사이에 대시를 사용하세요.</p></li> <li><p>가능한 한 적절한 구두점을 사용하세요. 그것이 없으면 이미지 설명은 길고 끝나지 않는 한 문장처럼 들릴 것입니다.</p></li> <li><p>로봇이 아닌 인간처럼 대체 텍스트를 작성하세요. 키워드 반복은 누구에게도 도움이 되지 않습니다. 스크린 리더를 사용하는 사람들은 짜증을 낼 것이며 검색 엔진 알고리즘은 그들에게 불이익을 줄 것입니다.</p></li> </ul> <p>위 내용은 접근성 (a) 규칙 - 3의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!</p></div><div class="nphpQianMsg"><a href="javascript:void(0);">css</a> <a href="javascript:void(0);">less</a> <a href="javascript:void(0);">NULL</a> <a href="javascript:void(0);">Resource</a> <a href="javascript:void(0);">if</a> <a href="javascript:void(0);">for</a> <a href="javascript:void(0);">include</a> <a href="javascript:void(0);">using</a> <a href="javascript:void(0);">Length</a> <a href="javascript:void(0);">Attribute</a> <a href="javascript:void(0);">cap</a> <a href="javascript:void(0);">append</a> <a href="javascript:void(0);">background</a> <a href="javascript:void(0);">idea</a><div class="clear"></div></div><div class="nphpQianSheng"><span>성명:</span><div>본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.</div></div></div><div class="nphpSytBox"><span>이전 기사:<a class="dBlack" title="다양한 브라우저에서 캔버스 요소의 최대 크기는 얼마입니까?" href="https://m.php.cn/ko/faq/1796689270.html">다양한 브라우저에서 캔버스 요소의 최대 크기는 얼마입니까?</a></span><span>다음 기사:<a class="dBlack" title="다양한 브라우저에서 캔버스 요소의 최대 크기는 얼마입니까?" href="https://m.php.cn/ko/faq/1796689284.html">다양한 브라우저에서 캔버스 요소의 최대 크기는 얼마입니까?</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>관련 기사</h2><em><a href="https://m.php.cn/ko/article.html" class="bBlack"><i>더보기</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ko/faq/1609.html" title="Bootstrap 목록 그룹 구성 요소에 대한 심층 분석" class="aBlack">Bootstrap 목록 그룹 구성 요소에 대한 심층 분석</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ko/faq/1640.html" title="JavaScript 함수 커링에 대한 자세한 설명" class="aBlack">JavaScript 함수 커링에 대한 자세한 설명</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ko/faq/1949.html" title="JS 비밀번호 생성 및 강도 감지의 전체 예(데모 소스 코드 다운로드 포함)" class="aBlack">JS 비밀번호 생성 및 강도 감지의 전체 예(데모 소스 코드 다운로드 포함)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ko/faq/2248.html" title="Angularjs는 WeChat UI(weui)를 통합합니다." class="aBlack">Angularjs는 WeChat UI(weui)를 통합합니다.</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ko/faq/2351.html" title="JavaScript를 사용하여 중국어 번체와 중국어 간체 간을 빠르게 전환하는 방법과 중국어 간체와 중국어 번체 간 전환을 지원하는 웹사이트의 요령_javascript 기술" class="aBlack">JavaScript를 사용하여 중국어 번체와 중국어 간체 간을 빠르게 전환하는 방법과 중국어 간체와 중국어 번체 간 전환을 지원하는 웹사이트의 요령_javascript 기술</a><div class="clear"></div></li></ul></div></div><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!</p></div><div class="footermid"><a href="https://m.php.cn/ko/about/us.html">회사 소개</a><a href="https://m.php.cn/ko/about/disclaimer.html">부인 성명</a><a href="https://m.php.cn/ko/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>