CSS 변경 예정 모듈 레벨 1

W3C 후보 권고안 초안,

이 문서에 대한 추가 정보
이 버전:
https://www.w3.org/TR/2022/CRD-css-will-change-1-20220505/
최신 공개 버전:
https://www.w3.org/TR/css-will-change/
편집자 초안:
https://drafts.csswg.org/css-will-change/
이전 버전:
히스토리:
https://www.w3.org/standards/history/css-will-change-1
구현 보고서:
https://wpt.fyi/results/css/css-will-change
테스트 스위트:
https://wpt.fyi/results/css/css-will-change
피드백:
CSSWG 이슈 저장소
편집자:
Tab Atkins Jr. (Google)
이 명세에 대한 수정 제안:
GitHub 편집자

요약

이 문서는 will-change CSS 속성을 정의합니다. 이 속성을 사용하면 작성자가 요소에 대해 앞으로 어떤 종류의 변경을 할 가능성이 있는지 UA에 미리 알릴 수 있습니다. 이를 통해 UA는 요소를 미리 최적화할 수 있으며, 애니메이션이 실제로 시작되기 전에 애니메이션 준비를 위한 비용이 많이 드는 작업을 미리 수행할 수 있습니다.

CSS는 구조화된 문서(HTML, XML 등)의 렌더링을 화면, 인쇄물 등에서 기술하는 언어입니다.

이 문서의 상태

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

이 문서는 CSS 워킹 그룹에서 후보 권고안 초안으로 권고안 트랙을 이용해 발행되었습니다. 후보 권고안으로 발행된다는 것은 W3C와 그 회원사의 승인임을 의미하지 않습니다. 후보 권고안 초안에는 워킹 그룹이 이후 후보 권고안 스냅샷에 포함하기로 한 이전 후보 권고안의 변경 사항이 통합되어 있습니다.

이 문서는 초안 문서로, 언제든지 업데이트, 대체 또는 폐기될 수 있습니다. 진행 중인 작업이 아닌 것으로 이 문서를 인용하는 것은 적절하지 않습니다.

피드백은 GitHub에서 이슈 작성(권장)으로 보내주세요. 제목에 명세 코드 “css-will-change”를 포함해 다음과 같이 작성해 주세요: “[css-will-change] …코멘트 요약…”. 모든 이슈와 코멘트는 아카이브됩니다. 또는 (아카이브됨) 공개 메일링 리스트 www-style@w3.org로 피드백을 보낼 수 있습니다.

이 문서는 2021년 11월 2일 W3C 프로세스 문서에 따라 관리됩니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성되었습니다. W3C는 그룹의 산출물과 관련하여 공개된 특허 공개 목록을 공개적으로 유지합니다; 그 페이지에는 특허 공개 방법도 포함되어 있습니다. 어떤 개인이 개별적으로 특허를 실질적으로 알고 있고 해당 특허가 필수 청구항을 포함한다고 생각한다면, W3C 특허 정책 6번 섹션에 따라 정보를 공개해야 합니다.

1. 소개

최신 CSS 렌더러는 웹페이지를 빠르고 효율적으로 렌더링하기 위해 다양한 복잡한 최적화를 수행합니다. 하지만 이러한 최적화를 적용하는 데는 적지 않은 초기 비용이 들 수 있어, 페이지의 반응성에 부정적인 영향을 줄 수 있습니다.

예를 들어, CSS 3D 변환을 사용해 요소를 화면에서 이동시키는 경우, 해당 요소와 그 내용이 “레이어”로 승격될 수 있습니다. 이렇게 하면 페이지의 나머지 부분과 독립적으로 렌더링되고, 이후 합성됩니다. 이 방식은 콘텐츠 렌더링을 분리해 프레임 간에 변하는 것이 요소의 변환뿐이라면 페이지의 나머지를 다시 렌더링할 필요가 없으므로 상당한 속도 이점을 제공하는 경우가 많습니다.

하지만, 요소를 새로운 레이어로 설정하는 작업은 비교적 비용이 많이 드는 작업으로, transform 애니메이션 시작을 눈에 띄게 지연시킬 수 있습니다.

이 명세서에서 정의한 will-change 속성을 사용하면, 작성자가 미리 어떤 속성이 미래에 변경될 가능성이 있는지 선언하여, UA가 해당 최적화를 미리 준비할 수 있게 합니다. 이렇게 하면 실제 변경이 발생할 때, 페이지가 빠르게 업데이트됩니다.

1.1. 값 정의

이 명세서는 [CSS2]CSS 속성 정의 규약[CSS-VALUES-3]값 정의 문법을 따릅니다. 이 명세서에서 정의되지 않은 값 유형은 CSS Values & Units [CSS-VALUES-3]에서 정의됩니다. 다른 CSS 모듈과의 결합으로 이러한 값 유형의 정의가 확장될 수 있습니다.

각 속성 정의에 명시된 속성별 값 외에도, 이 명세서에서 정의한 모든 속성은 CSS-전역 키워드를 속성값으로 허용합니다. 가독성을 위해 명시적으로 반복하지 않았습니다.

1.2. will-change 올바르게 사용하기

will-change 속성은 모든 성능 힌트와 마찬가지로 “올바르게” 사용하는 방법을 배우기 어렵지만, 특히 직접적으로 감지할 수 있는 효과가 거의 없기 때문입니다. 하지만 will-change를 잘 사용하는 데 도움이 될 수 있는 몇 가지 간단한 “해야 할 것과 하지 말아야 할 것”이 있습니다.

너무 많은 속성이나 요소에 will-change를 남발하지 마세요

will-change 속성을 처음 접하면 다음과 같은 코드가 좋은 방법이라고 생각하기 쉽습니다:

* { will-change: transform, opacity /* , ... */; }

어쨌든 이 코드는 브라우저에게 모든 것을 미리 최적화하라고 지시하니 좋다고 생각할 수 있습니다.

잘못된 생각입니다. 브라우저는 이미 모든 것을 최적화하기 위해 최대한 노력합니다. 명시적으로 그렇게 하라고 해도 도움이 되지 않으며, 오히려 심각한 해를 끼칠 수 있습니다; will-change에 연관된 강력한 최적화는 기기의 많은 자원을 사용하게 되고, 이렇게 남발하면 페이지가 느려지거나 심지어 크래시를 유발할 수 있습니다.

또한, will-change에는 일부 부작용이 있으므로, 실제로 모든 요소에 이런 부작용을 원할 가능성은 매우 낮습니다.

스타일시트에서 will-change를 신중하게 사용하세요

will-change를 스타일시트에서 직접 사용하면, 해당 요소들이 항상 곧 변경될 것임을 의미하게 됩니다. 이는 보통 실제로 의도한 바가 아닙니다; 대신 will-change는 변경이 발생하기 전후에 스크립트를 통해 켜고 끄는 방식으로 사용하는 것이 좋습니다(자세한 내용은 변경이 끝난 요소에 자원을 낭비하지 마세요 참고). 하지만 will-change를 스타일시트에서 직접 사용하는 것이 적합한 경우도 있습니다.

예를 들어, 페이지 내에서 소수의 지속적인 UI 요소에 will-change를 지정해 사용자에게 빠르게 반응하도록 하는 경우에는 적합합니다:
body > .sidebar {
   will-change: transform;
   /* 사용자가 요청할 때 transform으로 슬라이드됩니다. */
}

이처럼 소수의 요소에 한정하면, 최적화가 실제로 자주 사용되지 않더라도 큰 문제가 되지 않습니다.

어떤 요소는 정말 항상 속성이 거의 끊임없이 변하는 경우도 있습니다. 예를 들어, 사용자의 마우스 움직임에 반응하거나, 주기적으로 애니메이션을 발생시키는 경우입니다. 이런 경우에는 스타일시트에서 will-change 값을 선언해도 괜찮으며, 해당 요소가 정기적으로/상시 변경되므로 최적화를 유지하는 것이 적합합니다.
.cats-flying-around-the-screen {
  will-change: left, top;
}

will-change가 효과를 발휘할 충분한 시간을 주세요

또 다른 흔한 잘못된 패턴은, will-change를 애니메이션이나 속성 변화를 시작하기 직전에 적용하는 것입니다. 실제로 대부분의 최적화는 적용에 시간이 필요하므로, 이렇게 하면 준비할 시간이 부족해서 will-change가 거의 효과를 내지 못합니다. 실제로 변경이 일어나기 전에 미리 예측하여 will-change미리 설정하는 방법을 찾으세요.

예를 들어, 사용자가 클릭할 때 요소가 변경된다면, hover 시에 will-change를 설정하면 최적화 준비를 위해 최소 200밀리초의 시간이 확보됩니다(사람의 반응 시간이 비교적 느리기 때문). 이는 스크립트로 할 수도 있고, 간단한 CSS 규칙으로도 가능합니다:
.element { transition: opacity .2s; opacity: 1; }
.element:hover { will-change: opacity; }
.element:active { opacity: .3; }

하지만 이런 규칙은 만약 효과가 hover에서 바로 발생한다면 소용없습니다. 이런 경우에도 보통 액션을 미리 예측할 방법이 있습니다. 예를 들어, 상위 요소에 hover가 걸리면 충분한 선행 시간을 줄 수 있습니다:

.element { transition: opacity .2s; opacity: 1; }
.container:hover > .element { will-change: opacity; }
.element:hover { opacity: .3; }

변경이 끝난 요소에 자원을 낭비하지 마세요

일부 속성 변경을 위한 브라우저의 최적화는 비용이 많이 들기 때문에, 브라우저는 일반적으로 가능한 한 빨리 이를 제거하고 정상 동작으로 되돌립니다. 하지만 will-change는 이러한 동작을 무시하고, 브라우저가 더 오래 최적화를 유지하도록 합니다.

따라서 will-change를 요소에 추가할 때, 특히 스크립트로 추가하는 경우에는 요소의 변경이 끝나면 꼭 제거하여 브라우저가 최적화에 사용된 자원을 회수할 수 있도록 해야 합니다.

2. 미래 동작 힌트: will-change 속성

이름: will-change
값: auto | <animateable-feature>#
초기값: auto
적용 대상: 모든 요소
상속: no
백분율: 해당 없음
계산된 값: 명시된 값
표준 순서: 문법에 따름
애니메이션 유형: 애니메이션 불가
<animateable-feature> = scroll-position | contents | <custom-ident>

will-change 속성은 렌더링에 대한 힌트를 사용자 에이전트(UA)에 제공하여, 작성자가 해당 요소에 어떤 종류의 변경을 수행할 것으로 예상하는지 알립니다. 이를 통해 UA는 이러한 변경을 매끄럽게 렌더링하기 위한 필요한 최적화를 미리 수행할 수 있어, 실제로 해당 기능을 변경하거나 애니메이션할 때 “버벅임”을 피할 수 있습니다.

브라우저마다 will-change 정보를 서로 다르게 활용할 수 있으며, 하나의 브라우저도 상황에 따라 다르게 사용할 수 있습니다. 예를 들어, will-change: transform이 지정된 경우 요소를 자체 “GPU 레이어”로 승격시키는 브라우저라도, 그런 요소가 너무 많으면 GPU 메모리 소진을 방지하기 위해 승격을 하지 않을 수 있습니다.

값의 의미는 다음과 같습니다:

auto
특별한 의도가 없음을 표현합니다. UA는 일반적으로 사용하는 휴리스틱과 최적화를 적용하면 됩니다.
scroll-position
작성자가 가까운 미래에 해당 요소의 스크롤 위치를 변경하거나 애니메이션할 것으로 예상함을 나타냅니다.

예를 들어, 브라우저는 일반적으로 스크롤 가능한 요소에 대해 "스크롤 윈도우" 내의 콘텐츠와 그 주변 일부만 렌더링하며, 렌더링을 생략하여 메모리와 시간 절약 효과를 얻으면서도 스크롤이 부드럽게 보이도록 균형을 잡습니다. 이 값을 신호로 받아, 브라우저가 스크롤 윈도우 주변의 렌더링 범위를 확장해 더 길거나 빠른 스크롤도 부드럽게 처리할 수 있습니다.

contents
작성자가 가까운 미래에 해당 요소의 콘텐츠에 대해 애니메이션하거나 변화를 줄 것으로 예상함을 나타냅니다.
예를 들어, 브라우저는 대부분의 요소가 자주 변하지 않거나 위치만 바뀌는 경우가 많기 때문에 시간이 지나면서 요소의 렌더링을 "캐시"합니다. 하지만 요소의 콘텐츠가 지속적으로 변경된다면, 캐시를 유지하는 건 시간 낭비가 될 수 있습니다. 브라우저는 이 값을 신호로 받아 해당 요소에 대한 캐싱을 덜 적극적으로 하거나, 아예 캐시하지 않고 계속 처음부터 다시 렌더링할 수 있습니다.

이 값은 주로 JS 기반 콘텐츠 애니메이션(초당 여러 번 요소의 콘텐츠가 바뀌는 경우)의 최적화를 위해 쓰입니다. 이런 최적화는 선언적 애니메이션을 사용할 때 브라우저가 이미 자동으로 해줍니다.

참고: 이 값은 해당 요소의 전체 하위 트리에도 적용될 수 있습니다. 브라우저가 모든 자손이 어떤 방식으로든 변할 것으로 기대해야 함을 의미하기 때문입니다. 문서 트리에서 "상위" 요소에 이 값을 사용하면 페이지 성능에 매우 나쁜 영향을 줄 수 있으니, 최대한 "하위" 요소에만, 가능한 한 적은 부분에만 사용하세요.

<custom-ident>
<custom-ident>가 내장 CSS 속성 이름과 ASCII 대소문자 구분 없이 일치하면, 작성자가 해당 속성 명으로 요소의 속성을 가까운 미래에 변경하거나 애니메이션할 것으로 예상함을 의미합니다. 지정한 속성이 약어(shorthand)라면, 그 약어가 확장하는 모든 개별 속성에 대한 기대를 의미합니다.

예를 들어, will-change: background;를 지정하면 will-change: background-image, background-position, ...과 동일하며, background가 확장하는 모든 속성에 적용됩니다.

여기서 사용하는 <custom-ident> 생성 규칙은 will-change, none, all, auto, scroll-position, contents와, <custom-ident>에서 일반적으로 제외되는 키워드를 제외합니다.

참고: 대부분의 속성은 지정하더라도 아무 효과가 없는 경우가 많습니다. UA가 대부분의 속성 변경에 대해 특별한 최적화를 하지 않기 때문입니다. 그래도 지정해도 안전합니다. 단지 아무 효과가 없을 뿐입니다.

사용자 정의 속성(custom property)을 지정해도 아무 효과 없어야 하며, 사용자 정의 속성을 통해 발생하는 효과는 아래 규칙에서 "속성의 비초기값(non-initial value)이 무언가를 유발"하는 조건에 해당하지 않습니다.

참고: 속성으로 인식되지 않는 값을 지정해도 괜찮으며, 단순히 아무 효과가 없습니다. 이는 일부 UA에만 존재하는 새로운 속성을 지정해도, 해당 속성을 모르는 구형 UA에는 부정적인 영향이 없도록 해줍니다.

예를 들어, transform이 비초기값으로 설정된 요소는 일반 요소와 다르게 처리되며, 예를 들어 자체 “GPU 레이어”로 렌더링하거나, transform이 만들어내는 변환을 빠르게 처리할 수 있는 방식으로 처리할 수 있습니다. 브라우저는 transform 값을 신호로 받아 요소가 변환되기 전에 미리 레이어로 승격시켜, 이전/새 레이어 렌더링 지연을 피할 수 있습니다.

어떤 속성의 비초기값이 요소에 stacking context를 생성한다면, 해당 속성을 will-change로 지정하면 stacking context를 생성해야 합니다.

어떤 속성의 비초기값이 요소에 절대 위치 요소의 containing block을 생성한다면, 해당 속성을 will-change로 지정하면 절대 위치 요소의 containing block을 생성해야 합니다.

어떤 속성의 비초기값이 고정 위치 요소의 containing block을 생성한다면, 해당 속성을 will-change로 지정하면 고정 위치 요소의 containing block을 생성해야 합니다.

어떤 속성의 비초기값이 요소의 렌더링 전략(예: 텍스트 안티에일리어싱 방식)을 변경한다면, UA는 해당 속성이 will-change에 지정된 경우에도 결국 변경될 때 갑작스러운 렌더링 변화가 없도록 미리 대체 렌더링 전략을 적용해야 합니다.

예를 들어, opacity1이 아닌 값으로 설정하면 stacking context가 생성됩니다. 따라서 will-change: opacity를 지정하면 opacity현재 1이라도 stacking context가 생성됩니다.

will-change 속성은 stacking context와 containing block 생성 외에는 요소에 직접적인 영향을 주지 않습니다. 오직 UA에 렌더링 힌트를 주는 역할만 하며, 특정 변경이 실제로 시작되기 전에 비용이 많이 드는 최적화를 미리 준비할 수 있게 합니다.

3. 보안 고려 사항

이 문서에 대해 제기된 보안 문제는 없습니다.

4. 개인정보 보호 고려 사항

이 문서에 대해 제기된 개인정보 보호 문제는 없습니다.

5. 감사의 글

Benoit Girard에게 will-animate 속성을 처음 제안해주고, 초기 설계 작업을 많이 해주신 점에 감사드립니다.

6. 변경 사항

2015년 12월 3일 CR 이후 변경 사항:

2014년 4월 29일 WD 이후 변경 사항:

준수

문서 규약

준수 요구 사항은 설명적 명제와 RFC 2119 용어의 조합으로 표현됩니다. 규범적 부분에서 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL” 등의 키워드는 RFC 2119에 설명된 대로 해석되어야 합니다. 단, 가독성을 위해 이 명세서에서는 대문자로 표기하지 않았습니다.

이 명세서의 모든 본문은 명시적으로 비규범적임이 표시된 섹션, 예제, 참고를 제외하고 규범적입니다. [RFC2119]

이 명세서의 예제는 “예를 들어”라는 말로 시작하거나, class="example"로 구분되어 있습니다. 예시:

이것은 정보 전달을 위한 예시입니다.

정보성 참고는 “참고”라는 단어로 시작하며, class="note"로 구분되어 있습니다. 예시:

참고, 이것은 정보성 참고입니다.

권고(advisement)는 규범적 섹션으로 특별한 주의를 환기하기 위해 스타일링되며, <strong class="advisement">로 구분됩니다. 예시: UA는 반드시 접근 가능한 대안을 제공해야 합니다.

준수 클래스

이 명세서의 준수는 세 가지 준수 클래스로 정의됩니다:

스타일시트
CSS 스타일시트.
렌더러
UA가 스타일시트의 의미를 해석하고 해당 스타일시트를 사용하는 문서를 렌더링함.
저작 도구
UA가 스타일시트를 작성함.

스타일시트가 이 명세서에 준수하려면, 이 모듈에서 정의한 문법을 사용하는 모든 문장이 일반 CSS 문법과 각 기능의 개별 문법에 따라 유효해야 합니다.

렌더러가 이 명세서에 준수하려면, 적절한 명세에 따라 스타일시트를 해석하는 것 외에도 이 명세서에서 정의한 모든 기능을 올바르게 파싱하고 문서를 이에 따라 렌더링해야 합니다. 단, 기기의 한계로 인해 UA가 문서를 올바르게 렌더링하지 못해도 준수하지 않는 것으로 간주하지 않습니다. (예: UA가 흑백 모니터에서 색상을 렌더링할 필요는 없습니다.)

저작 도구가 이 명세서에 준수하려면, 이 모듈의 일반 CSS 문법과 각 기능의 개별 문법에 따라 구문적으로 올바른 스타일시트를 작성해야 하며, 이 모듈에 설명된 스타일시트의 다른 모든 준수 요구 사항도 충족해야 합니다.

부분 구현

작성자가 미래 호환 파싱 규칙을 활용해 대체값을 지정할 수 있도록, CSS 렌더러는 반드시 사용 가능한 수준의 지원이 없는 모든 at-rule, 속성, 속성값, 키워드, 그리고 기타 구문 구조를 무효(및 적절히 무시)로 처리해야 합니다. 특히 UA는 지원되지 않는 구성값만 무시하고 지원되는 값만 처리하는 일이 없어야 하며, 다중값 속성 선언에서 일부 값이 무효(지원되지 않는 값)로 간주되면 CSS 규칙에 따라 전체 선언을 무시해야 합니다.

불안정 및 독점 기능 구현

미래의 안정적인 CSS 기능과 충돌을 방지하기 위해, CSSWG는 모범 사례를 따라 불안정한 기능 및 독점적 확장 구현을 권장합니다.

비실험적 구현

명세서가 후보 권고안(CR) 단계에 도달하면, 비실험적 구현이 가능해지며, 구현자는 명세에 따라 올바르게 구현되었음을 입증할 수 있는 모든 CR 단계 기능에 대해 접두사 없는 구현을 배포해야 합니다.

CSS의 상호 운용성을 확보하고 유지하기 위해, CSS 워킹 그룹은 비실험적 CSS 렌더러가 구현 보고서(필요시 해당 테스트케이스 포함)를 W3C에 제출한 후 CSS 기능에 대한 접두사 없는 구현을 배포할 것을 요청합니다. W3C에 제출된 테스트케이스는 CSS 워킹 그룹의 검토 및 수정 대상이 됩니다.

테스트케이스와 구현 보고서 제출에 대한 자세한 정보는 CSS 워킹 그룹 웹사이트 https://www.w3.org/Style/CSS/Test/ 에서 확인할 수 있습니다. 문의는 public-css-testsuite@w3.org 메일링 리스트로 해주세요.

CR 종료 기준

이 명세서가 제안 권고안(Proposed Recommendation)으로 진전되려면, 각 기능에 대해 최소 두 개의 독립적이고 상호 운용 가능한 구현이 있어야 합니다. 각 기능은 서로 다른 제품 세트에서 구현될 수 있으며, 모든 기능을 하나의 제품이 모두 구현할 필요는 없습니다. 이 기준의 용어 정의는 다음과 같습니다:

독립적(Independent)
각 구현은 다른 당사자가 개발해야 하며, 다른 구현의 코드를 공유, 재사용, 파생해서는 안 됩니다. 이 명세서 구현과 무관한 코드 영역은 제외됩니다.
상호 운용 가능(Interoperable)
공식 CSS 테스트 스위트의 해당 테스트케이스를 통과하거나, 웹 브라우저가 아니면 동등한 테스트를 통과해야 합니다. 모든 관련 테스트는 동등한 테스트가 있어야 하며, 해당 UA가 상호 운용성 주장에 사용될 경우 동일한 방식으로 통과할 수 있는 추가 UA가 있어야 합니다. 동등한 테스트는 동료 검토(peer review)를 위해 공개되어야 합니다.
구현(Implementation)
다음을 만족하는 사용자 에이전트:
  1. 명세서를 구현함.
  2. 일반 대중에게 제공됨. 구현은 출시 제품 또는 공개 버전(베타, 프리뷰, 나이트리 빌드 등)일 수 있음. 미출시 제품의 경우 기능이 최소 1개월간 구현되어 안정성을 입증해야 함.
  3. 실험적이지 않음(테스트 통과만을 위해 설계된 버전은 정상적인 사용을 위한 것이 아님).

명세서는 최소 6개월 동안 후보 권고안(CR) 단계로 유지됩니다.

색인

이 명세서에서 정의한 용어

참조로 정의된 용어

참고 문헌

규범적 참고 문헌

[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2019년 6월 6일. CR. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2021년 12월 16일. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS2]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011년 6월 7일. REC. URL: https://www.w3.org/TR/CSS21/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra Standard. Living Standard. URL: https://infra.spec.whatwg.org/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119

참고용 참고 문헌

[CSS-BACKGROUNDS-3]
Bert Bos; Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2021년 7월 26일. CR. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-COLOR-4]
Tab Atkins Jr.; Chris Lilley; Lea Verou. CSS Color Module Level 4. 2021년 12월 15일. WD. URL: https://www.w3.org/TR/css-color-4/
[CSS-TRANSFORMS-1]
Simon Fraser; et al. CSS Transforms Module Level 1. 2019년 2월 14일. CR. URL: https://www.w3.org/TR/css-transforms-1/

속성 색인

이름 초기값 적용 대상 상속 백분율 애니메이션 유형 문법 순서 계산된 값
will-change auto | <animateable-feature># auto 모든 요소 no 해당 없음 애니메이션 불가 문법에 따름 명시된 값