화면 방향

W3C 작업 초안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2023/WD-screen-orientation-20230809/
최신 공개 버전:
https://www.w3.org/TR/screen-orientation/
최신 편집자 초안:
https://w3c.github.io/screen-orientation/
이력:
https://www.w3.org/standards/history/screen-orientation/
커밋 기록
테스트 스위트:
https://wpt.live/screen-orientation/
편집자:
Marcos Cáceres (Apple Inc.)
이전 편집자:
Mounir Lamouri (Google Inc.)
Johanna Herman (초청 전문가)
피드백:
GitHub w3c/screen-orientation (pull requests, new issue, open issues)
브라우저 지원:
caniuse.com

요약

Screen Orientation 명세서는 장치의 화면 방향에 대한 유형과 각도를 표준화하고, 이를 잠그고 잠금 해제할 수 있는 수단을 제공합니다. 이 명세에 정의된 API는 장치의 화면 방향에 대한 현재 유형과 각도를 노출하고, 변경될 때 이벤트를 전송합니다. 이를 통해 웹 애플리케이션은 CSS와 함께 작동하여 여러 화면 방향에 맞게 사용자 경험을 프로그래밍적으로 적응시킬 수 있습니다. 또한 이 API는 특정 전제 조건에서 화면 방향을 잠글 수 있도록 합니다. 이는 사용자가 장치를 물리적으로 회전시키지만 화면 방향 자체는 변경되지 않아야 하는 컴퓨터 게임과 같은 애플리케이션에서 특히 유용합니다.

이 문서의 상태

이 섹션은 문서가 발행된 시점의 상태를 설명합니다. 현재 W3C 간행물 목록과 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인에서 확인할 수 있습니다: https://www.w3.org/TR/.

이 문서는 진행 중인 작업입니다.

이 문서는 웹 애플리케이션 작업 그룹에 의해 작업 초안(Working Draft)으로 발행되었으며, 권고안 트랙(Recommendation track)을 사용했습니다.

작업 초안으로서의 공개는 W3C 및 그 회원들의 승인(endorsement)을 의미하지 않습니다.

이 문서는 초안 문서로 언제든지 업데이트, 대체 또는 폐기될 수 있습니다. 다른 문서가 될 때까지 이 문서를 진행 중인 작업(work in progress) 이상의 것으로 인용하는 것은 적절하지 않습니다.

이 문서는 다음의 규정 하에 운영되는 그룹에 의해 작성되었습니다. W3C 특허 정책. W3C는 그룹의 산출물과 관련하여 제기된 특허 공개의 공개 목록을 유지합니다. 해당 페이지에는 특허 공개 절차에 대한 안내도 포함되어 있습니다. 개인이 자신이 실제로 알고 있고 핵심 청구항(Essential Claim(s))을 포함한다고 생각하는 특허를 알고 있다면, 해당 정보는 W3C 특허 정책의 6항에 따라 공개해야 합니다.

이 문서는 2023년 6월 12일 W3C 프로세스 문서의 규정에 따라 관리됩니다.

1. 사용 예

이 섹션은 비규범적입니다.

이 예제에서 "Lock" 버튼을 클릭하면 전체 화면으로 전환을 요청한 뒤 화면을 반대 방향으로 고정합니다. "Unlock" 버튼을 클릭하면 화면 고정이 해제됩니다.

예제 1: 특정 방향으로 고정하고 해제하기
<script>
function updateLockButton() {
  const lockButton = document.getElementById("button");
  const newOrientation = getOppositeOrientation();
  lockButton.textContent = `Lock to ${newOrientation}`;
}

function getOppositeOrientation() {
  return screen
    .orientation
    .type
    .startsWith("portrait") ? "landscape" : "portrait";
}

async function rotate(lockButton) {
  if (!document.fullscreenElement) {
    await document.documentElement.requestFullscreen();
  }
  const newOrientation = getOppositeOrientation();
  await screen.orientation.lock(newOrientation);
  updateLockButton(lockButton);
}

screen.orientation.addEventListener("change", updateLockButton);

window.addEventListener("load", updateLockButton);
</script>

<button onclick="rotate(this)" id="button">
  Lock to...
</button>
<button onclick="screen.orientation.unlock()">
  Unlock
</button>

2. 개념

화면 방향을 잠그기OrientationLockType orientation으로 설정한다는 것은 사용자가 화면을 특정 화면 방향으로만 회전할 수 있으며, 다른 방향들은 제외될 수 있음을 의미합니다. 화면을 어떤 방향으로 회전할 수 있는지는 사용자 에이전트, 사용자 설정, 운영체제의 관습 또는 화면 자체에 의해 결정됩니다. 예를 들어, 방향을 가로로 잠그면 사용자는 시스템이 허용하는 경우 landscape-primary 및 경우에 따라 landscape-secondary 로만 회전할 수 있고, portrait-secondary 로는 변경되지 않습니다.

화면 방향 잠금 해제는 최종 사용자가 시스템에서 허용하는 모든 화면 방향으로 제한 없이 회전할 수 있음을 의미합니다.

2.1 화면 방향 유형

화면은 다음 중 하나의 화면 방향에 있거나, 해당 방향으로 잠길 수 있습니다:

모든
기기가 지원하거나 최종 사용자가 허용한 모든 방향으로 사용자가 화면을 회전할 수 있습니다.
기본 (해제됨)
화면이 잠금 해제될 때 기기의 기본 동작을 말합니다(즉, 활성 방향 잠금null 인 경우). 이 방향은 운영체제, 사용자 에이전트, 최종 사용자 설정 또는 설치된 웹 애플리케이션에 의해 결정될 수 있습니다. 예를 들어, 화면 방향이 잠금 해제된 상태에서 사용자가 기기를 회전하면 일부 장치는 portrait-primary, landscape-primary, 및 landscape-secondary로만 방향을 제한하고 portrait-secondary로는 변경하지 않을 수 있습니다.
가로
화면의 종횡비가 너비가 높이보다 큰 상태입니다.
자연스러운
사용자 에이전트, 사용자, 운영체제 또는 화면 자체가 결정한 기기 디스플레이의 가장 자연스러운 방향입니다. 예를 들어 사용자가 기기를 세로로 들고 화면이 사용자 쪽을 향한 상태가 이에 해당합니다. 컴퓨터 모니터는 일반적으로 자연스럽게 landscape-primary인 반면, 휴대전화는 일반적으로 자연스럽게 portrait-primary입니다.
세로
화면의 종횡비가 높이가 너비보다 큰 상태입니다.
자연스러운 방향이며, 세로 또는 가로 중 하나의 기본 방향입니다.
보조
방향의 반대되는 세로 또는 가로 방향입니다.

2.2 현재 화면 방향 유형 및 각도

출력 장치의 화면에는 다음과 같은 관련 개념이 있습니다:

활성 방향 잠금
화면이 어떤 화면 방향으로 잠겨 있는지OrientationLockType으로 나타낸 것이며, 잠금이 해제된 경우에는 null 입니다.
현재 방향 각도
화면이 자연스러운 방향에서 시계 반대 방향으로 회전한 각도를 도 단위로 나타낸 것이며, 이는 화면 방향 값 목록에서 유도됩니다.
현재 방향 유형
화면의 화면 방향OrientationType으로 나타낸 것입니다.

아래의 화면 방향 값 목록은 서로 다른 자연스러운 방향을 가진 화면들에 대해 각 화면 방향 유형에 연관된 각도를 표준화합니다:

자연스러운 세로 방향을 가지는 화면의 경우:
자연스러운 가로 방향을 가지는 화면의 경우:

3. Document 인터페이스의 확장

3.1 내부 슬롯

Document 인터페이스는 다음의 내부 슬롯들로 확장됩니다:

내부 슬롯 설명
[[orientationPendingPromise]] 값은 null이거나 Promise입니다. Promise가 할당되면, 해당 프라미스는 화면 방향 잠금을 요청하는 것을 나타냅니다.

4. Screen 인터페이스의 확장

WebIDLpartial interface Screen {
  [SameObject] readonly attribute ScreenOrientation orientation;
};

Window 객체는 연관된 ScreenOrientation을 가지며, 이는 Screenorientation 객체입니다(즉, ScreenOrientation 인스턴스는 window.screen.orientation에 있습니다).

5. ScreenOrientation 인터페이스

WebIDL[Exposed=Window]
interface ScreenOrientation : EventTarget {
  Promise<undefined> lock(OrientationLockType orientation);
  undefined unlock();
  readonly attribute OrientationType type;
  readonly attribute unsigned short angle;
  attribute EventHandler onchange;
};

5.1 내부 슬롯

내부 슬롯 설명
[[angle]] 화면의 마지막으로 알려진 현재 방향 각도를 도 단위로 나타내며, 이는 unsigned short로 표현되고, 화면 방향 값 목록에서 파생됩니다.
[[initialType]] 브라우징 컨텍스트가 생성되었을 때의 화면의 현재 방향 타입을 나타냅니다.
[[type]] 화면의 마지막으로 알려진 현재 방향 타입OrientationType 열거형 값으로 나타냅니다.

5.2 lock() 메서드

lock() 메서드가 OrientationLockType orientation과 함께 호출되면, 사용자 에이전트는 다음 단계를 반드시 실행해야 합니다.

사용자 에이전트는 화면 방향을 잠그기 위해 문서와 그에 연관된 브라우징 컨텍스트가 하나 이상의 사전 잠금 조건을 만족하도록 요구할 수 있습니다. 자세한 내용은 10. Interaction with Web Application Manifest9. Interaction with Fullscreen API를 참조하세요.

  1. Let document be this's 관련 전역 객체의 연관된 Document입니다.
  2. Run the common safety checks with document. 예외가 발생하면, 그 예외로 거부된 프라미스를 반환하고 이 절차를 중단합니다.
  3. 만약 사용자 에이전트가 주어진 orientation으로 화면 방향을 잠그는 것을 지원하지 않으면, "NotSupportedError" DOMException로 거부된 프라미스를 반환하고 이 절차를 중단합니다.
  4. 만약 document[[orientationPendingPromise]]null이 아니면, 현재의 잠금 프라미스를 거부하고 null로 만듭니다 (거부 이유는 "AbortError").
  5. document[[orientationPendingPromise]]새 프라미스로 설정합니다.
  6. Apply orientation lock orientationdocument에 적용합니다.
  7. document[[orientationPendingPromise]]를 반환합니다.

5.3 unlock() 메서드

unlock() 메서드가 호출되면, 사용자 에이전트는 다음 단계를 반드시 실행해야 합니다:

  1. Let document be this's 관련 전역 객체의 연관된 Document입니다.
  2. common safety checksdocument에 대해 실행합니다. 예외가 발생하면, 그 예외를 다시 던지고 이 절차를 중단합니다.
  3. 만약 screen의 active orientation locknull이면, undefined를 반환합니다.
  4. 만약 document[[orientationPendingPromise]]null이 아니면, 현재의 잠금 프라미스를 거부하고 null로 만듭니다 (거부 이유는 "AbortError").
  5. Apply orientation lock nulldocument에 적용합니다.
Note: unlock()이 왜 프라미스를 반환하지 않나요?

unlock()는 프라미스를 반환하지 않습니다. 이는 기본 화면 방향(default screen orientation)으로 잠그는 것과 동등한 동작인데, 그 기본 방향은 사용자 에이전트가 알 수도 있고 모를 수도 있습니다. 따라서 사용자 에이전트는 새 방향이 무엇일지, 혹은 방향이 실제로 변경될지조차 예측할 수 없습니다.

5.4 공통 안전 검사

common safety checksDocumentdocument에 대해 다음 단계들로 구성됩니다:

  1. 만약 documentfully active가 아니면, "InvalidStateError" DOMException를 던집니다.
  2. 만약 documentsandboxed orientation lock browsing context flag가 설정되어 있으면, "SecurityError" DOMException를 던집니다.
  3. 만약 documentvisibility state가 "hidden"이면, "SecurityError" DOMException를 던집니다.

5.5 type 속성

읽을 때, type 속성은 이 객체의 [[type]]를 반환합니다.

5.6 angle 속성

읽을 때, angle 속성은 이 객체의 this[[angle]]를 반환합니다.

Note: angle에 주어진 값은 무엇을 나타내나요?

5.7 onchange 이벤트 핸들러 속성

onchange 속성은 이벤트 핸들러 IDL 속성로, onchange 이벤트 핸들러에 대응합니다. 이 이벤트 핸들러의 이벤트 타입은 change입니다.

6. OrientationLockType 열거형

WebIDLenum OrientationLockType {
  "any",
  "natural",
  "landscape",
  "portrait",
  "portrait-primary",
  "portrait-secondary",
  "landscape-primary",
  "landscape-secondary"
};

OrientationLockType 열거형은 화면이 잠길 수 있는 잠재적인 화면 방향들을 나타냅니다(lock될 수 있는 방향).

Note: 방향 지원

7. OrientationType 열거형

WebIDLenum OrientationType {
  "portrait-primary",
  "portrait-secondary",
  "landscape-primary",
  "landscape-secondary"
};

OrientationType 열거형 값들은 화면의 현재 방향 타입을 나타내는 데 사용됩니다.

8. 알고리즘

8.1 ScreenOrientation 객체 초기화

브라우징 컨텍스트 context가 생성될 때, 사용자 에이전트는 반드시 다음을 수행해야 합니다:

  1. screenOrientationcontext연관된 ScreenOrientation로 둡니다.
  2. screenOrientation[[initialType]] 내부 슬롯을 화면의 현재 방향 타입으로 초기화합니다.
  3. screenOrientation[[type]] 내부 슬롯을 화면의 현재 방향 타입으로 초기화합니다.
  4. screenOrientation[[angle]] 내부 슬롯을 화면의 현재 방향 각도로 초기화합니다.

8.2 문서의 현재 잠금 프라미스 거부

단계가 문서의 현재 잠금 프라미스를 거부하고 null로 만드는 것을 DOMString exceptionName으로 Document document에 대해 요구할 때, 사용자 에이전트반드시 다음을 수행해야 합니다:

  1. Assert: [[orientationPendingPromise]]null이 아닙니다.
  2. Let promise be document's [[orientationPendingPromise]].
  3. Queue a global task on the DOM manipulation task source with document's relevant global object to reject promise with a new exceptionName DOMException.
  4. Set document's [[orientationPendingPromise]]null로 설정합니다.

8.3 화면 방향 잠금 적용

단계가 apply orientation lockOrientationLockType? orientationDocument document에 대해 요구할 때, 사용자 에이전트반드시 다음 절차를 수행해야 합니다:

  1. 만약 documentfully active 상태를 유지하지 못하게 되는 동안 병렬로 실행되고, [[orientationPendingPromise]]null이 아니면, 문서의 현재 잠금 프라미스를 거부하고 null로 만듭니다 (거부 이유는 "AbortError").
  2. topDocumentdocumenttop-level browsing context활성 문서(active document)로 둡니다.
  3. descendantDocsordered set로 정의합니다. 이 집합은 topDocument하위 navigable들활성 문서들을 트리 순서로 포함합니다(존재하는 경우).
  4. For each doc in descendantDocs:
    1. 만약 docdocument이면, 계속합니다.
    2. 만약 doc[[orientationPendingPromise]]null이면, 계속합니다.
    3. 해당 doc의 현재 잠금 프라미스를 거부하고 null로 만듭니다 (거부 이유는 "AbortError").
  5. 다음 하위 단계들을 병렬로 실행합니다:
    1. 만약 document가 fully active 상태를 잃었고, document[[orientationPendingPromise]]null이 아니면, 문서의 현재 잠금 프라미스를 거부하고 null로 만듭니다 (거부 이유는 "AbortError") 그리고 이 단계들을 중단합니다.
    2. 만약 orientationnull이면, 화면 방향 잠금을 해제(unlock)합니다.
    3. 그렇지 않으면, 화면 방향을 orientation으로 잠그려고 시도합니다. 플랫폼 관례에 따라, 뷰포트가 orientation에 맞게 그려지는 방식을 변경할 수 있습니다.
    4. 만약 시도가 이전에 설정된 사용자 선호, 플랫폼 제한, 또는 다른 어떤 이유로 실패하면:
      1. 스크린의 active orientation locknull로 설정합니다.
      2. Queue a task on the DOM manipulation task source with document's relevant global object to:
        1. 만약 document[[orientationPendingPromise]]null이 아니면, 현재 잠금 프라미스를 거부하고 null로 만듭니다 (거부 이유는 "NotSupportedError").
        2. 이 단계들을 중단합니다.
      Note

      이것은 사용자가 웹 애플리케이션이 화면 방향을 변경하지 못하도록 하는 선호를 설정했거나, 기본 플랫폼(사용자 에이전트가 아닌 플랫폼 자체)이 주어진 orientation으로 화면 방향을 잠그는 것을 허용하지 않는 경우에 발생할 수 있습니다.

    5. 스크린의 active orientation lockorientation으로 설정하고, 현재 방향 타입현재 방향 각도를 화면 방향의 변경을 반영하도록 업데이트합니다.
  6. Queue a global task on the DOM manipulation task source with document's relevant global object to:
    1. Let promise be document's [[orientationPendingPromise]].
      Note
    2. document[[orientationPendingPromise]]null로 설정합니다.
    3. 화면 방향 변경 단계topDocument에 대해 실행합니다.
    4. 만약 promisenull이 아니면, resolve하여 promiseundefined로 처리합니다.

8.4 화면 방향 변경

사용자 에이전트가 최상위 브라우징 컨텍스트에 대해 화면의 방향이 변경되었음을 판단하거나, 사용자가 최상위 브라우징 컨텍스트를 다른 화면으로 이동시키면, 해당 최상위 브라우징 컨텍스트활성 문서에서 화면 방향 변경 단계를 실행합니다.

문서(Document)용 화면 방향 변경 단계는 다음과 같습니다:

  1. 만약 document가시성 상태(visibility state)가 "hidden"이면, 이 단계들을 중단합니다.
  2. 변수 typeangle을 화면의 현재 방향 타입현재 방향 각도로 둡니다.
  3. 변수 screenOrientationdocument관련 전역 객체연관된 ScreenOrientation로 둡니다.
  4. 만약 typescreenOrientation[[type]]와 같고, anglescreenOrientation[[angle]]와 같으면, 이 단계들을 중단합니다.
  5. global task를 큐에 추가합니다(사용자 상호작용 작업 소스(user interaction task source)에), 대상은 document관련 전역 객체이며, 다음 단계를 수행합니다:
    1. screenOrientation[[angle]]angle로 설정합니다.
    2. screenOrientation[[type]]type로 설정합니다.
    3. 이벤트를 발생시킵니다 — 이름이 "change"인 이벤트를 screenOrientation에 대해 발생시킵니다.
  6. 변수 descendantDocsordered set으로 정의합니다. 이 집합은 document하위 navigable들활성 문서들을 트리 순서로 포함합니다(있다면).
  7. For each doc in descendantDocs에 대해, 화면 방향 변경 단계를 해당 doc에 대해 실행합니다.

8.5 페이지 가시성 변경 처리

[HTML]'s 가시성 상태 업데이트는 화면 방향 변경 단계를 실행합니다.

Note

8.6 언로드되는 문서 처리

언로드 문서 정리 단계(unloading document cleanup steps)가 document와 함께 실행될 때마다, 사용자 에이전트는 반드시 다음 단계들을 실행해야 합니다:

  1. 만약 document최상위 브라우징 컨텍스트활성 문서가 아니면, 이 단계들을 중단합니다.
  2. 화면 방향 완전 잠금 해제 단계document에 대해 실행합니다.

8.7 화면 방향 완전 잠금 해제

문서(Document)용 화면 방향 완전 잠금 해제 단계는 다음과 같습니다:

  1. 만약 document[[orientationPendingPromise]]null이 아니면, 현재 잠금 프라미스를 거부하고 null로 만듭니다 (거부 이유: "AbortError").
  2. 변수 topDocumentdocument최상위 브라우징 컨텍스트활성 문서로 둡니다.
  3. Apply orientation locknull을 적용하여 topDocument에 적용합니다.

9. 전체 화면 API와의 상호작용

사용자 에이전트는 권장한다 lock()의 사용을 단순 전체 화면 문서(simple fullscreen documents)로 제한하는 것을 사전 잠금 조건으로 삼아야 합니다. [fullscreen]

문서(document)가 전체 화면을 벗어나면, 또한 화면 방향 완전 잠금 해제 단계(fully unlock the screen orientation steps)를 실행해야 합니다. [fullscreen]

10. 웹 애플리케이션 매니페스트와의 상호작용

Web Application Manifest 명세는 웹 애플리케이션이 기본 화면 방향(default screen orientation)orientation 멤버를 통해 설정하도록 허용합니다.

사용자 에이전트는 권장한다 설치된 웹 애플리케이션이 "fullscreen" display mode로 표시되도록 요구할 수 있으며, 이를 사전 잠금 조건으로 삼아야 합니다.

11. 접근성 고려사항

사용자가 기기를 고정된 방향으로 장착할 수 있기 때문에(예: 휠체어 팔대에 장착), 개발자가 화면 방향을 잠글 때 사용자가 기기를 회전시키기를 기대하는 경우에는 Web Content Accessibility Guidelines (WCAG) 2.1Orientation Success Criterion을 인지해야 합니다. 이 기준은 콘텐츠와 기능이 화면 방향에 관계없이 이용 가능해야 한다는 것을 필수적으로 규정합니다. 특정 방향이 필수적인 경우, 웹 애플리케이션은 사용자가 필요한 방향 요구사항을 고지해야 합니다.

12. 개인정보 및 보안 고려사항

화면의 typeangle은 잠재적인 지문(피어프린팅) 벡터가 될 수 있습니다. 다음의 완화책들은 사용자의 장치가 어떻게 들려져 있는지를 노출하지 않음으로써 사용자의 프라이버시를 보호하고, 또한 secondary 방향 타입과 연관된 각도들이 지문 채집에 사용되는 것을 방지합니다.

지문 채집에 저항하기 위해(예: 개인 탐색 모드에서), 사용자 에이전트는 할 수 있다:

  1. 최상위 브라우징 컨텍스트의 수명 동안, 화면의 natural 방향이 [[initialType]]인 것처럼 동작합니다.
  2. type getter가 반환할 수 있는 값을 "portrait-primary" 또는 "landscape-primary"로 제한합니다. 어떤 값이 반환되는지는 화면 종횡비가 결정합니다.
  3. 만약 현재 방향 타입[[initialType]]와 일치하면, angle getter에 대해 0을 반환합니다. 그렇지 않으면 90을 반환합니다.
  4. 화면 방향이 바뀔 때, change 이벤트는 현재 방향 타입portrait에서 landscape로, 또는 그 반대로 바뀔 때에만 발행하도록 제한합니다.

13. 적합성

비규범으로 표시된 섹션들뿐만 아니라, 이 명세서의 모든 작성 지침, 다이어그램, 예시, 및 주석은 비규범입니다. 이 명세서의 나머지 모든 내용은 규범적입니다.

문서에서 사용된 핵심 단어 할 수 있다, 반드시, 및 권장한다는 BCP 14에 설명된 대로 해석되어야 합니다. 관련 문서는 BCP 14 [RFC2119] [RFC8174] 에서와 같이, 오직 모두 대문자로 나타날 때에만 해당 의미로 해석됩니다.

A. IDL 색인

WebIDLpartial interface Screen {
  [SameObject] readonly attribute ScreenOrientation orientation;
};

[Exposed=Window]
interface ScreenOrientation : EventTarget {
  Promise<undefined> lock(OrientationLockType orientation);
  undefined unlock();
  readonly attribute OrientationType type;
  readonly attribute unsigned short angle;
  attribute EventHandler onchange;
};

enum OrientationLockType {
  "any",
  "natural",
  "landscape",
  "portrait",
  "portrait-primary",
  "portrait-secondary",
  "landscape-primary",
  "landscape-secondary"
};

enum OrientationType {
  "portrait-primary",
  "portrait-secondary",
  "landscape-primary",
  "landscape-secondary"
};

B. 색인

B.1 이 명세서에서 정의한 용어

B.2 참조로 정의된 용어

C. 감사의 말

유용한 의견을 주신 Christophe Dumez, Anne van Kesteren, Chundong Wang, Fuqiao Xue, 및 Chaals McCathie Nevile에게 감사드립니다.

이 API 초기 설계에 기여한 Chris Jones와 Jonas Sicking에게 특별히 감사드립니다.

D. 참고문헌

D.1 규범 참조

[appmanifest]
웹 애플리케이션 매니페스트. Marcos Caceres; Kenneth Christiansen; Matt Giuca; Aaron Gustafson; Daniel Murphy; Anssi Kostiainen. W3C. 2023년 5월 2일. W3C 워킹 드래프트. URL: https://www.w3.org/TR/appmanifest/
[cssom-view]
CSSOM 뷰 모듈. Simon Pieters. W3C. 2016년 3월 17일. W3C 워킹 드래프트. URL: https://www.w3.org/TR/cssom-view-1/
[dom]
DOM 표준. Anne van Kesteren. WHATWG. 현행 표준. URL: https://dom.spec.whatwg.org/
[fullscreen]
Fullscreen API Standard. Philip Jägenstedt. WHATWG. 현행 표준. URL: https://fullscreen.spec.whatwg.org/
[HTML]
HTML Standard. Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. 현행 표준. URL: https://html.spec.whatwg.org/multipage/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. 현행 표준. URL: https://infra.spec.whatwg.org/
[mediaqueries-5]
Media Queries Level 5. Dean Jackson; Florian Rivoal; Tab Atkins Jr.; Daniel Libby. W3C. 2021년 12월 18일. W3C 워킹 드래프트. URL: https://www.w3.org/TR/mediaqueries-5/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997년 3월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017년 5월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[WCAG21]
Web Content Accessibility Guidelines (WCAG) 2.1. Andrew Kirkpatrick; Joshue O'Connor; Alastair Campbell; Michael Cooper. W3C. 2018년 6월 5일. W3C 권고. URL: https://www.w3.org/TR/WCAG21/
[WEBIDL]
Web IDL Standard. Edgar Chen; Timothy Gu. WHATWG. 현행 표준. URL: https://webidl.spec.whatwg.org/