srcset 속성 정보

TL;DR

  • 방심하면 잊어버리기 때문에 필기를 해야 한다.
  • MDN으로 오랜만에 다시 읽은 뒤 미디어 조건과 슬롯 폭에 따라 난해하다.
  • 2x를 사용하면 사이즈가 무효이고 w 설명자도 픽셀 밀도에 대응할 수 있어 의외입니다.
  • 참고 자료


    스펀지 롤러 이미지 제작 방법 MDN
    See the Pen img srcset by Yasuo Fukuda ( @sigwyg ) on CodePen .

    srcset 소개


    사용자 에이전트에서 사용할 수 있는 원본 이미지의 그룹 목록을 표시합니다.힌트 리스트는 힌트일 뿐입니다.정말 어떤 그림을 선택하시겠습니까? 사용자 에이전트가 상당히 큰 재단을 해 주었습니다p>

    조건이 아무리 넉넉해도 설명할 수 있습니다.판매는 지정 누락과 오류의 모호성을 허용하는 것이다.(Media Query는 절대적이어서 예상보다 약함)


    확인 방법


    Chrome DevTools의 경우 "Network"탭에서 개체 파일을 선택하면 Preview를 통해 확인 가능p>

    • 페이지를 다시 읽으면 확인(일치하는 리소스만 읽음)
    • Chrome 테스트 시 캐시 이미지가 우선하므로 [Disable cache]
    • 미리 켜짐


    미리보기 이미지 자체는 실제 크기가 아닙니다.디스플레이 이미지는 DevTools의 디스플레이 크기로 확대/축소됩니다.자세히 보면 아래에 200x150이 있어서 저쪽은 실제 사이즈를 표시했습니다


    w 설명자의 경우 지정


    <img srcset="elva-fairy-320w.jpg 320w,
                 elva-fairy-480w.jpg 480w,
                 elva-fairy-800w.jpg 800w"
         sizes="(max-width: 320px) 280px,
                (max-width: 480px) 440px,
                800px"
         src="elva-fairy-800w.jpg" alt="妖精の衣装を着たエルバ">
    

    • srcset에 이미지 표시 후보 지정
    • w 설명자는 이미지의 실제 크기입니다. (표시 사이즈라면 해상도에 영향을 받습니다. Command+i를 통해 알 수 있듯이 Mac)
    • sizes에서 미디어 조건 및 간격 너비(표시 영역) 지정
    • 미디어 조건이 진짜일 때 시간 간격에 가장 가까운 그림을 읽는다
    • sizes의 판정은 설명 순서대로

    화면폭 320px 이하 상황에서 280px의 영역으로 깊이 들어가기br/>
    브라우저는 srcset에서 보이는 후보에서 틈새 폭에 맞는 그림을 선택해서 표시합니다.화면 해상도도 증가


    srcset을 설명하지 않는 브라우저는 src가 지정한 자원을 간단하게 읽습니다


    x 설명자가 지정된 경우


    <img srcset="elva-fairy-320w.jpg,
                 elva-fairy-480w.jpg 1.5x,
                 elva-fairy-640w.jpg 2x"
         src="elva-fairy-640w.jpg" alt="妖精の衣装を着たエルバ">
    


    • 크기 필요 없음(혼합 위험)
    • 브라우저는 화면 해상도를 간단하게 검사하고 가장 적합한 이미지 (srcset에서 나온 후보) 를 제공합니다.
    • 1x는 은식이므로 포함할 필요가 없음

    주의점


    • 너비 묘사자w와 픽셀 밀도 묘사자x를 같은 srcset 속성에 혼합하면 너비 묘사자
    • 가 무효입니다.
    • 중복된 설명자도 유효하지 않습니다(예: 두 개2x가 있는 경우).
    • sizes의 판정에서 최초 일치된 조건 이후 모두 무시됨(설명 순서 주의)
    • <meta name="viewport" content="width=device-width"> 설정

    자바스크립트 쓰면 안 돼요?


    JavaScript를 읽고 해석하기 전에 이미지를 미리 읽기 시작합니다.JavaScript로 판정하여 배포하면 여러 에셋이 읽힙니다.


    CSS의 경우


    Media Query에서 구현br/>
    대응하는 자원만 읽는 것 같습니다.(이전에 다 읽은 것 같아)


    See the Pen Media Query를 사용하여 이미지를 개별적으로 읽습니까? by Yasuo Fukuda ( @sigwyg ) on CodePen .



    이것은 srcset와는 달리 엄밀하기 때문에 좋고 나쁨을 막론하고 쓰지 않습니다.이 예에서는 픽셀 밀도3x의 아이폰X, device-width: 375px의 아이폰8, 414px의 아이폰8 플러스 등을 고려하지 않았다.화면 폭이 320px보다 작으면 320px의 그림을 적용합니다.


    よくわからないこと


    실제로는 사이즈가 다른 이미지를 제공할 수 있을 뿐만 아니라srcsetsizes의 PC/SP에서도 완전히 다른 이미지를 제공할 수 있기 때문에picture 요소를 사용하는 의미를 찾을 수 없습니다.MIME 타입의 지원 하에 분리하는 게 편해요.p>

    <picture>
      <source type="image/svg+xml" srcset="pyramid.svg">
      <source type="image/webp" srcset="pyramid.webp"> 
      <img src="pyramid.png" alt="4つの正三角形から構築された通常のピラミッド">
    </picture>
    

    좋은 웹페이지 즐겨찾기