Skip to content

Latest commit

Β 

History

History

Images

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Β 
Β 
Β 
Β 
Β 
Β 

Images

μ΄λ―Έμ§€μ˜ μ’…λ₯˜μ™€ μ ‘κ·Όμ„± μš”μ•½

  • 정보 이미지: κ°œλ…κ³Ό 정보λ₯Ό κ·Έλž˜ν”½μœΌλ‘œ λ‚˜νƒ€λ‚΄λŠ” 이미지, 일반적으둜 κ·Έλ¦Ό, 사진 및 μ‚½ν™”

    정보 μ΄λ―Έμ§€λŠ” 이미지에 λŒ€ν•˜μ—¬ λŒ€μ²΄ ν…μŠ€νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬

    • 정보λ₯Ό 보완
    • 정보에 λ ˆμ΄λΈ”μ„ 지정
    • κ°„κ²°ν•œ 정보λ₯Ό 전달
    • μΈμƒμ΄λ‚˜ 감정을 전달
    • 파일 ν˜•μ‹μ„ 전달

    λ‹€μŒκ³Ό 같은 것듀을 λ³΄μ™„ν•˜μ—¬ 접근성을 높인닀

  • μž₯식 이미지: μ΄λ―Έμ§€μ˜ λͺ©μ μ΄ νŽ˜μ΄μ§€μ˜ μ΄ν•΄ν•˜λŠ”λ° μ€‘μš”ν•œ 정보가 μ•„λ‹Œ μ‹œκ°μ  μž₯식인 κ²½μš°μ— μΆ”κ°€

    μž₯식 μ΄λ―Έμ§€λŠ” λ‹¨μˆœνžˆ νŽ˜μ΄μ§€μ˜ λͺ¨μ–‘을 κ°œμ„ ν•˜λŠ” κ²ƒμœΌλ‘œ μ‚¬μš© λ˜μ–΄μ•Ό ν•˜κΈ°μ— 사물을 μ‹λ³„ν•˜κ±°λ‚˜ λ‹€λ₯Έ 정보λ₯Ό μ „λ‹¬ν•˜λŠ” 것이라면 정보 μ΄λ―Έμ§€λ‘œ μ‚¬μš©λ˜μ–΄μ•Ό ν•œλ‹€

    또 ATκ°€ λ¬΄μ‹œν•΄μ•Ό ν•˜λŠ” μ΄λ―Έμ§€μ˜ img μš”μ†Œμ— null λŒ€μ²΄ ν…μŠ€νŠΈ 및 제λͺ© 속성 μ—†μŒ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€

    제λͺ© 속성이 μ‚¬μš©λ˜μ§€ μ•Šκ³  λŒ€μ²΄ ν…μŠ€νŠΈκ°€ null둜 μ„€μ •λœ 경우 μž₯식 이미지λ₯Ό μ•ˆμ „ν•˜κ²Œ λ¬΄μ‹œν•  수 μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€

    (μ°Έκ³ :Β "null"Β alt속성이 μžˆλŠ” 것은 속성이 μ—†λŠ” 것과 λ‹€λ₯΄λ‹€)

    <img {...} alt="" /> !== <img {...} />
  • κΈ°λŠ₯ 이미지: 링크 λ˜λŠ” λ²„νŠΌμœΌλ‘œ μ‚¬μš© λ˜λŠ” 이미지

    κΈ°λŠ₯적 μ΄λ―Έμ§€λŠ” 정보λ₯Ό μ „λ‹¬ν•˜κΈ°λ³΄λ‹€λŠ” μž‘μ—…μ„ μ‹œμž‘ν•˜λŠ” 데 μ‚¬μš©ν•œλ‹€. 이 κ²½μš°μ—λŠ” μΆ”κ°€ 정보λ₯Ό μ œκ³΅ν•¨μœΌλ‘œμ¨ 접근성을 높일 수 μžˆλ‹€. (단, 독립적이지 μ•Šμ€ 경우 λŒ€μ²΄ ν…μŠ€νŠΈμ—λŠ” null을 μž…λ ₯ν•΄μ€€λ‹€)

    • ****λ‹¨λ…μœΌλ‘œ 링크된 둜고둜 μ‚¬μš©λœ 이미지
    • 링크 ν…μŠ€νŠΈ λ‚΄μ˜ 이미지 (독립적이지 μ•Šμ€ 경우)
    • κΈ°λŠ₯이 μžˆλŠ” λ…λ¦½ν˜• μ•„μ΄μ½˜ 이미지
    • λ²„νŠΌμ— μ‚¬μš©λœ 이미지****

    인상 κΉŠμ—ˆλ˜ λΆ€λΆ„

    <form action='end-point' method='HTTP'>
    	<input type='image' name='submit' src='button.gif' alt='Submit' />
    </form>
  • λ³΅μž‘ν•œ 이미지(κ·Έλž˜ν”„ 및 λ‹€μ΄μ–΄κ·Έλž¨ λ“±): 데이터 λ˜λŠ” μžμ„Έν•œ 정보λ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•΄ μ΄λ―Έμ§€μ—μ„œ μ œκ³΅λ˜λŠ” 데이터 λ˜λŠ” 정보와 λ™λ“±ν•œ μ™„μ „ν•œ ν…μŠ€νŠΈλ₯Ό ν…μŠ€νŠΈ λŒ€μ•ˆμœΌλ‘œ 제곡

    두 가지 λŒ€μ²΄ ν…μŠ€νŠΈκ°€ ν•„μš”ν•˜λ‹€. 첫 λ²ˆμ§ΈλŠ” 이미지λ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•œ κ°„λ‹¨ν•œ μ„€λͺ…이닀. κΈ΄ μ„€λͺ…μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄κΈ°λ„ ν•œλ‹€ 두 λ²ˆμ§ΈλŠ” 이미지가 μ „λ‹¬ν•˜λŠ” ν•„μˆ˜ 정보λ₯Ό ν…μŠ€νŠΈλ‘œ ν‘œν˜„ν•œ κΈ΄ μ„€λͺ…이닀

    μ΄λ•Œ κΈ΄ μ„€λͺ…은 λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλ‹€

    1. λ³„λ„μ˜ μ›Ή νŽ˜μ΄μ§€ λ˜λŠ” μžμ„Έν•œ μ„€λͺ…이 ν¬ν•¨λœ μ›Ή νŽ˜μ΄μ§€μ˜ 링크λ₯Ό 이미지 μ˜†μ— 제곡

    이 μ ‘κ·Ό 방식은 λͺ¨λ“  μ›Ή λΈŒλΌμš°μ €μ™€ 보쑰 κΈ°μˆ μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.Β κ·ΈλŸ¬λ‚˜ 링크와 이미지가 의미둠적으둜 μ—°κ΄€λ˜μ§€ μ•ŠλŠ”λ‹€. λ•Œλ¬Έμ— HTML5Β <figure>및 <figcaption>μš”μ†Œλ₯Ό 톡해 의미둠적으둜 이미지와 링크λ₯Ό κ·Έλ£Ήν™” ν•  수 μžˆλ‹€. 3번 접근법 μ°Έκ³ 

    2. alt 속성에 κΈ΄μ„€λͺ… μœ„μΉ˜ ν‘œκΈ°

    이미지와 λ™μΌν•œ μ›Ή νŽ˜μ΄μ§€μ— κΈ΄ μ„€λͺ…이 μ œκ³΅λ˜λŠ” 경우 alt 속성을 μ΄μš©ν•˜μ—¬ μœ„μΉ˜λ₯Ό μ„€λͺ…ν•  수 μžˆλ‹€.Β ν•΄λ‹Ή μ ‘κ·Όμ‹œ μœ„μΉ˜ μ •λ³΄λŠ” μ‚¬μš©μžκ°€ μ½˜ν…μΈ λ₯Ό μ°ΎλŠ” 데 도움이 λ˜λ„λ‘ λͺ…ν™•ν•˜κ³  μ •ν™•ν•΄μ•Ό ν•œλ‹€

    3. 이미지와 μΈμ ‘ν•œ κΈ΄ μ„€λͺ…을 ꡬ쑰적으둜 μ—°κ²° HTML5 figureμš”μ†ŒλŠ” 이미지와 μžμ„Έν•œ μ„€λͺ…을 λͺ¨λ‘ ν¬ν•¨ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.Β κΈ΄ μ„€λͺ…은 <figcaption>μš”μ†Œμ— λž˜ν•‘λœλ‹€.Β μš”μ†Œμ˜ 의미λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠλŠ” μ›Ή λΈŒλΌμš°μ €μ˜Β role="group"포함 μš”μ†Œλ₯ΌΒ μ‚¬μš©ν•˜μ—¬ 이미지와 λͺ…μ‹œμ μœΌλ‘œ μ—°κ²°λœλ‹€

    // λ³„λ„μ˜ μ›Ή νŽ˜μ΄μ§€ μ œκ³΅μ‹œ
    
    <p>
      {/* img에 λŒ€ν•œ 짧은 μ„€λͺ… 이후*/}
      <img
        src="chart.png"
        alt="Bar chart showing monthly and total visitors for the first quarter 2014 for sites 1 to 3">
      <br>
      {/* img에 λŒ€ν•œ κΈ΄ μ„€λͺ… μœ„μΉ˜ ν‘œκΈ°*/}
      <a href="2014-first-qtr.html">Example.com Site visitors Jan to March 2014 text description of the bar chart</a>
    </p>
    
    // HTML5
    <figure role="group">
        <img
            src="chart.png"
            alt="Bar chart showing monthly and total visitors for the first quarter 2014 for sites 1 to 3">
        <figcaption>
            <a href="2014-first-qtr.html">Example.com Site visitors Jan to March 2014 text description of the bar chart</a>
        </figcaption>
    </figure>

    4. longdesc 속성을 μ΄μš©ν•˜μ—¬ μ„€λͺ… 속성에 κΈ΄ μ„€λͺ…이 μžˆλŠ” λ‹€λ₯Έ μ›Ή νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜κΈ° μœ„ν•œ URIκ°€ ν¬ν•¨λœ 경우 longdesc 도 μ μš©ν•˜λŠ” 것도 μ’‹λ‹€. (접근법 1에도 μ‚¬μš© κ°€λŠ₯)Β  λ˜ν•œ longdescλŠ” μ‹λ³„μžκ°€ ν¬ν•¨λ˜μ–΄ 있으면 λ™μΌν•œ μ›Ή νŽ˜μ΄μ§€μ—μ„œ κΈ΄ μ„€λͺ…을 μ œκ³΅ν•˜λŠ” μš”μ†Œλ₯Ό λ‚˜νƒ€λ‚Έλ‹€ (접근법 2에도 μ‚¬μš© κ°€λŠ₯)

    5. aria-describedby="description" μ‚¬μš©

    <img {...} aria-describedby="description">
    {...}
    <p id="description">
    {...}
    </p>
  • 이미지 κ·Έλ£Ή: μ—¬λŸ¬ 이미지가 단일 정보λ₯Ό μ „λ‹¬ν•˜λŠ” 경우 ν•˜λ‚˜μ˜ 이미지에 λŒ€ν•œ λŒ€μ²΄ ν…μŠ€νŠΈλŠ” 전체 그룹에 λŒ€ν•œ 정보λ₯Ό 전달해야 ν•œλ‹€

    이미지 그룹이 ν•¨κ»˜ μ‚¬μš©λ˜μ–΄ ν•˜λ‚˜μ˜ 정보λ₯Ό λ‚˜νƒ€λ‚Όλ•Œ 전체 이미지λ₯Ό μ„€λͺ…ν•˜λŠ” ν•˜λ‚˜μ˜ λŒ€μ²΄ ν…μŠ€νŠΈκ°€ ν•„μš”ν•˜λ‹€

    또 λ§ˆμ°¬κ°€μ§€λ‘œ HMTL5의 <figure>, <figcaption>을 μ‚¬μš©ν•  수 μžˆλŠ”λ°, <figure>λ₯Ό μ€‘λ³΅μœΌλ‘œ μ‚¬μš©ν•˜μ—¬ 전체 이미지 μ»¬λ ‰μ…˜μ— λŒ€ν•œ μΊ‘μ…˜μ„ μ œκ³΅ν•  수 μžˆλ‹€. 이 κ²½μš°μ— μš”μ†Œκ°€ κ°œλ³„ 그룹의 λ ˆμ΄λΈ”λ‘œ μ‚¬μš©λ˜λŠ”μ§€Β aria-labelledbyλ₯Ό 톡해 확인할 수 μžˆλ‹€

    <figure role="group" aria-labelledby="fig1">
      <figcaption id="fig1">
    		{...}
      </figcaption>
    
      <figure role="group" aria-labelledby="fig11">
        <img {...} />
        <figcaption id="fig11">{...}</figcaption>
      </figure>
    </figure>
  • 이미지 맡: 클릭 κ°€λŠ₯ν•œ μ—¬λŸ¬ μ˜μ—­μ΄ ν¬ν•¨λœ μ΄λ―Έμ§€μ˜ λŒ€μ²΄ ν…μŠ€νŠΈλŠ” 링크 집합에 λŒ€ν•œ μ „λ°˜μ μΈ μ»¨ν…μŠ€νŠΈλ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€. 또 κ°œλ³„μ μœΌλ‘œ 클릭할 수 μžˆλŠ” 각 μ˜μ—­μ—λŠ” 링크의 λͺ©μ μ΄λ‚˜ λŒ€μƒμ„ μ„€λͺ…ν•˜λŠ” λŒ€μ²΄ ν…μŠ€νŠΈκ°€ μžˆμ–΄μ•Ό ν•œλ‹€ ν΄λΌμ΄μ–ΈνŠΈμΈ‘μ—μ„œ 이미지 맡은 <area>μ‚¬μš©μž μƒν˜Έ μž‘μš©μ„ ν—ˆμš©ν•˜λŠ” μš”μ†Œμ΄λ‹€. 선택 κ°€λŠ₯ν•œ μ˜μ—­μœΌλ‘œ λΆ„ν• λœ 이미지이며, 일반적으둜 선택 κ°€λŠ₯ν•œ μ˜μ—­μ€ λ‹€λ₯Έ νŽ˜μ΄μ§€μ— λŒ€ν•œ 링크이닀.

    `<img>`이미지 맡의 경우 μš”μ†Œ 자체의 정보 λ§₯락을 μ „λ‹¬ν•˜κΈ° μœ„ν•΄ 각 μš”μ†ŒΒ `<area>`(링크 λŒ€μƒ λ˜λŠ” 링크λ₯Ό λ”°λΌκ°€λŠ” 경우 μ‹œμž‘λ˜λŠ” μž‘μ—…μ„ μ „λ‹¬ν•˜κΈ° μœ„ν•΄) λͺ¨λ‘μ— λŒ€μ²΄ ν…μŠ€νŠΈκ°€ ν•„μš”ν•˜λ‹€
    
    ![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e7f58d7d-2310-4107-88ec-f0006291f73c/Untitled.png)
    
    ```jsx
    <img src="orgchart.png"
         alt="Board of directors and related staff: "
         usemap="#Map">
    
    <map name="Map" id="Map">
      <area
        shape="rect"
        coords="176,14,323,58"
        href="…"
        alt="Davy Jones: Chairman"
      >
    
      <area
        shape="rect"
        coords="81,75,226,114"
        href="…"
        alt="Carole Brewster: Company Secretary"
      >
      <area
        shape="rect"
        coords="6,138,155,182"
        href="…"
        alt="Harry H Brown: Marketing Director (reports to chairman)"
      >
      <area
        shape="rect"
        coords="175,138,323,182"
        href="…"
        alt="Paula Holbein: Sales Director (reports to chairman)"
      >
      <area
        shape="rect"
        coords="345,136,496,186"
        href="…"
        alt="Hugh Howard: Finance Director (reports to chairman)"
      >
    </map>
    ```
    

이미지에 λŒ€ν•˜μ—¬ 접근성을 μ€€μˆ˜ν•  λ•Œ 얻을 수 μžˆλŠ” 효과

  • 이미지와 κ·Έλž˜ν”½μ€ λ§Žμ€ μ‚¬λžŒλ“€, 특히 인지 및 ν•™μŠ΅ μž₯μ• κ°€ μžˆλŠ” μ‚¬λžŒλ“€μ΄ μ½˜ν…μΈ λ₯Ό 더 즐겁고 μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ λ§Œλ“ λ‹€
  • μ‹œκ° μž₯μ• κ°€ μžˆλŠ” μ‚¬λžŒμ΄ μ½˜ν…μΈ μ—μ„œ λ°©ν–₯을 작기 μœ„ν•΄ μ‚¬μš©ν•˜λŠ” λ‹¨μ„œ 역할을 ν•œλ‹€
  • 슀크린 리더λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒλ“€μ„ μœ„ν•΄ λŒ€μ²΄ ν…μŠ€νŠΈλ₯Ό μ†Œλ¦¬λ‚΄μ–΄ μ½κ±°λ‚˜ 점자둜 λ Œλ”λ§ν•  수 μžˆλ‹€
  • μŒμ„± μž…λ ₯ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ΄ 단일 μŒμ„± λͺ…λ ΉμœΌλ‘œ λ²„νŠΌ λ˜λŠ” μ—°κ²°λœ 이미지에 μ΄ˆμ μ„ 맞좜 수 μžˆλ‹€
  • λͺ¨λ°”일 μ›Ή μ‚¬μš©μžκ°€ νŠΉμ • ν™˜κ²½μ—μ„œ 이미지λ₯Ό λΆˆλŸ¬μ˜€μ§€ μ•Šμ„ 수 μžˆλ‹€
  • 검색 μ—”μ§„μ—μ„œ 이미지λ₯Ό 인덱싱 ν•  수 μžˆλ‹€

on React

  • 이미지 κ·Έλ£Ή

    import { FC, ReactNode } from 'react';
    
    type ImageType = {
    	id: string,
    	src: string,
    	desc: string,
    };
    
    interface ImageGroupProps {
    	group: {
    		id: string,
    		node: ReactNode,
    	};
    	imgs: ImageType[];
    }
    
    const ImageGroup: FC<ImageGroupProps> = ({ group, imgs }) => {
    	return (
    		<figure role='group' aria-labelledby={group.id}>
    			<figcaption id={group.id}>{group.node}</figcaption>
    
    			{imgs.map((img) => {
    				return (
    					<figure role='group' aria-labelledby={img.id}>
    						<figcaption id={img.id}>
    							<img src={img.src} alt={img.desc} />
    						</figcaption>
    					</figure>
    				);
    			})}
    		</figure>
    	);
    };
    
    export default ImageGroup;

  • 뭐가 더 μ’‹μ•„ λ³΄μ΄λ‚˜μš” ?

    import { FC } from 'react';
    
    interface ImageButtonProps {
    	img: string;
    	role: string;
    	onClick: () => void;
    }
    
    const ImageButton: FC<ImageButtonProps> = ({ img, role, onClick }) => {
    	return <input type='image' src={img} alt={role} onClick={onClick} />;
    };
    
    // const ImageButton: FC<ImageButtonProps> = ({img, role, onClick}) => {
    //   return (
    //     <button onClick={onClick}>
    //       <img src={img} alt={role} />
    //     </button>
    //   );
    // };
    
    export default ImageButton;