CSS 연결 매개변수 모듈 레벨 1

W3C 최초 공개 작업 초안,

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/WD-css-link-params-1-20260714/
최신 공개 버전:
https://www.w3.org/TR/css-link-params-1/
편집자 초안:
https://drafts.csswg.org/css-link-params/
변경 이력:
https://www.w3.org/standards/history/css-link-params-1/
피드백:
CSSWG 이슈 저장소
편집자:
Tab Atkins-Bittner (Google)
Daniel Holbert (Mozilla)
Jonathan Watt (Mozilla)
이 사양에 대한 편집 제안:
GitHub 편집기

초록

이 사양은 SVG 이미지와 같은 연결된 리소스에 CSS 값을 전달하여 대상 리소스에서 CSS 사용자 지정 환경 변수로 사용할 수 있도록 하는 방법을 도입한다. 이를 통해 사이트의 테마 색상 등에 맞게 쉽게 조정할 수 있는 "템플릿화된" SVG 이미지를 원본 SVG를 수정하지 않고도 손쉽게 재사용할 수 있다.

CSS는 구조화된 문서 (예: HTML 및 XML)가 화면, 종이 등에 렌더링되는 방식을 설명하는 언어이다.

이 문서의 상태

이 절에서는 이 문서가 발행된 시점의 상태를 설명한다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 확인할 수 있다.

이 문서는 CSS 작업 그룹에서 권고안 트랙을 사용하여 최초 공개 작업 초안으로 발행했다. 최초 공개 작업 초안으로 발행되었다고 해서 W3C와 그 회원이 이를 승인했다는 의미는 아니다.

이 문서는 초안이며 언제든지 다른 문서로 갱신되거나 대체되거나 폐기될 수 있다. 진행 중인 작업 이외의 것으로 이 문서를 인용하는 것은 적절하지 않다.

피드백은 GitHub에 이슈를 제출하여 보내는 것이 좋으며(권장), 제목에 다음과 같이 사양 코드 “css-link-params”를 포함해야 한다: “[css-link-params] …의견 요약…”. 모든 이슈와 의견은 보관된다. 또는 (보관되는) 공개 메일링 리스트 www-style@w3.org로 피드백을 보낼 수도 있다.

이 문서는 2025년 8월 18일 W3C 절차 문서의 적용을 받는다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성했다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지 관리하며, 해당 페이지에는 특허 공개 방법에 대한 지침도 포함되어 있다. 자신이 알고 있는 특허에 필수 청구항이 포함되어 있다고 실제로 알고 있는 개인은 W3C 특허 정책 제6절에 따라 해당 정보를 공개해야 한다.

1. 소개

SVG는 CSS로 스타일을 지정할 수 있으며, HTML에서 인라인으로 사용할 때 이 기능은 매우 유용할 수 있다. 예를 들어 SVG 아이콘에 :hover 규칙을 적용하여 fill 속성을 변경하는 것만으로, 사용자가 아이콘 위에 마우스 포인터를 올렸는지에 따라 아이콘의 색상을 다르게 표시할 수 있다.

외부 페이지의 선택자나 CSS 상속이 SVG에 적용될 수 없는 방식으로 SVG를 참조하는 경우 (예를 들어 HTML에서 img 또는 iframe을 통해 삽입하는 경우), 이 기능을 사용할 수 없게 된다. 이러한 "외부" SVG 이미지의 표시를 변경하는 유일한 방법은 이미지를 여러 개 만들고, 참조하는 이미지를 변경하는 것이다. 이 경우 새로운 리소스를 다운로드하므로 페이지에 지연이 발생하며, CSS 전환과 같은 동적 효과를 사용할 수 없다.

CSS 링크 매개변수는 CSS 속성이나 URL의 특수한 프래그먼트 방식을 통해 "외부" 리소스에 CSS 사용자 지정 환경 변수를 설정하는 방법이다. 이를 통해 "인라인" SVG 이미지가 제공하는 사용자 지정 기능의 제한적이지만 강력한 일부를 "외부" SVG 이미지에서도 사용할 수 있다.

링크 매개변수<dashed-ident> 이름과 임의의 값(비어 있을 수도 있음)인 <declaration-value>의 쌍이다.

예를 들어 SVG 이미지가 링크 매개변수를 사용하도록 작성하면, 다음과 같이 이미지의 색상을 즉시 변경할 수 있다:
<svg>
  <path fill="env(--color, black)" d="..." />
</svg>

기본적으로 지정된 대체 색상이 검은색이므로, 도형을 검은색으로 채운다. 그러나 링크 매개변수를 사용하면 다음과 같은 여러 방법으로 색상을 사용자 지정할 수 있다:

<img src="image.svg#param(--color,green)">
img {
  link-parameters: param(--color, green);
}
.foo {
  background-image: url("image.svg", param(--color, green));
}

2. 링크 매개변수 설정

외부 리소스에는 링크 매개변수 목록을 함께 지정할 수 있으며, 각 항목은 키인 <dashed-ident>와 값인 <declaration-value>(비어 있을 수도 있음)로 구성된다.

링크 매개변수를 지정하는 방법은 세 가지이다:

이러한 방법 중 여러 방법으로 지정하면, 모든 링크 매개변수가 다음 순서로 외부 리소스의 단일 목록에 추가된다:

  1. 해당하는 경우 요소의 link-parameters 속성

  2. param() URL 프래그먼트 식별자

  3. url()param() <url-modifier>

같은 이름의 링크 매개변수가 여러 개 있으면, 목록의 마지막 매개변수를 사용한다.

연결된 리소스에서 링크 매개변수에 접근하는 방법은 다음 절인 § 3 링크 매개변수 사용에서 정의한다.

이름: link-parameters
값: none | <param()>#
초깃값: none
적용 대상: 모든 요소 및 의사 요소
상속 여부: 아니요
백분율: 해당 없음
계산값: 지정된 대로
정규 순서: 문법에 따름
애니메이션 유형: 이산형

link-parameters 속성은 요소 자체 (HTML img 또는 iframe처럼 외부 리소스를 나타내는 요소인 경우)와 해당 요소에 지정된 모든 외부 CSS 리소스 (예: 배경 이미지 등)에 링크 매개변수를 설정하는 방법 중 하나이다. 이 속성의 값은 다음과 같다:

none

링크 매개변수를 지정하지 않는다.

<param()>#

하나 이상의 링크 매개변수 목록.

param() 함수는 링크 매개변수를 지정하며, 키는 <dashed-ident>이고, 값은 <declaration-value>?이다. (<declaration-value>를 생략하면, 빈 값을 나타낸다.) 구문은 다음과 같다:

<param()> = param( <dashed-ident> , <declaration-value>? )

2.2. URL에서

외부 리소스를 참조하는 데 사용하는 URL의 프래그먼트에서 특수한 "프래그먼트 식별자"를 사용할 수 있다. SVG 문서에 이미 존재하는 "프래그먼트 식별자"의 여러 예는 SVG 1.1 사양에서 확인할 수 있다.

SVG 매개변수 프래그먼트 식별자의 구문은 다음과 같다:

param( <dashed-ident> , <declaration-value>? )

(CSS 값 정의 구문을 사용한다. TODO 실제 파서를 정의한다).

예를 들어 SVG 이미지의 env(--text-color) 사용자 지정 환경 변수blue로 설정하려면, 다음과 같은 URL로 이미지를 참조할 수 있다: “http://example.com/image.svg#param(--text-color,blue)”.

URL에 여러 param() 프래그먼트 식별자를 추가하면 여러 링크 매개변수를 이미지에 전달할 수 있다. 서로 결합하거나 다른 "프래그먼트 식별자"와 결합할 때는 URL의 쿼리 매개변수와 마찬가지로 각 값을 & 문자로 구분한다.

예를 들어 이전 예의 이미지가 env(--bg-color)도 사용한다면, 다음과 같은 URL로 이미지를 참조하여 env(--text-color)env(--bg-color)를 모두 설정할 수 있다: “http://example.com/image.svg#param(--text-color,blue)&param(--bg-color,white)

참고: 공백과 CSS 구문에서는 유효할 수 있는 일부 다른 문자는 기술적으로 URL에서 유효하지 않다. 일부 맥락에서는 유효한 URL을 만들기 위해 이러한 문자를 이스케이프해야 할 수 있다. 그러나 대부분의 경우, HTML의 a 요소나 CSS의 url() 함수처럼, 공백이 허용되므로 이스케이프할 필요가 없다.

2.3. CSS url() 함수를 통한 설정

CSS를 통해 외부 리소스를 참조할 때, param() 함수를 url() 함수에서 사용할 수 있다. 그러나 일반적인 사용 사례는 페이지 자체의 사용자 지정 속성 값을 전달하는 것이다. 예를 들어 페이지에서 --primary-color 사용자 지정 속성을 사용하며, SVG 이미지도 이 속성에 맞추려고 할 수 있다. 하지만 CSS의 사용자 지정 속성 값을 url() 함수에 전달되는 URL에 통합할 방법은 없다.

이를 지원하기 위해 param()은 유효한 <url-modifier>이다. <url-modifier>로 지정된 모든 param()link-parameters와 마찬가지로 링크 매개변수를 정의한다.

예를 들어 사이트에서 요소의 테마를 지정하는 데 --primary-color 사용자 지정 속성을 사용하며, env(--color)을 사용하는 SVG 배경에도 이 값을 반영하려면, 다음과 같이 작성할 수 있다:
.foo {
  background-image: url(
    "http://example.com/image.svg"
    param(--color, var(--primary-color))
  );
}

3. 링크 매개변수 사용

외부 리소스 링크에 하나 이상의 링크 매개변수가 지정되어 있고, 연결된 리소스가 CSS를 이해하는 경우 (예: SVG 또는 HTML 문서), 해당 링크 매개변수는 자신의 이름과 값을 사용하여 리소스의 전역 사용자 지정 환경 변수를 설정하며, 스타일시트에서 env() 함수를 통해 접근할 수 있다.

예를 들어 SVG 이미지가 --color 매개변수를 노출하려는 경우, 다음과 같이 사용할 수 있다:
<svg>
  <g style="fill: env(--color);">
    <path d="..." />
  </g>
</svg>
일반적으로 매개변수가 제공되지 않더라도 SVG 이미지를 사용할 수 있도록 각 사용자 지정 속성에 "기본값"을 제공하는 것이 좋다. 이를 수행하는 방법은 여러 가지이다.
  1. env() 함수에 fill: env(--color, blue)와 같은 대체 값을 제공한다.

  2. env()를 많이 사용하여 각각의 env()에 대체 값을 제공하기 번거로운 경우, 기본값을 지정한 상태로 루트 요소의 사용자 지정 속성사용자 지정 환경 변수를 저장한다. 다음과 같다:

    :root {
      --color: env(--color, blue);
    }
    

    이 예에서 --color링크 매개변수를 통해 제공되면, var(--color)에는 해당 값이 포함된다. 제공되지 않으면 기본값인 blue가 포함된다. 어느 경우든 var(--color)에는 항상 값이 있다는 것을 확신하고 스타일시트에서 조건 없이 사용할 수 있다.

개인정보 보호 고려사항

이 사양은 새로운 개인정보 보호 고려사항을 도입하지 않는다.

보안 고려사항

이 사양은 잠재적으로 적대적인 출처에서 연결된 리소스로 정보를 전달하는 새로운 방법을 도입한다.

이 채널에는 명시적인 핸드셰이크가 설정되지 않지만, 정보를 사용하는 데 env()를 사용하면 연결된 리소스가 해당 정보로 인해 예기치 않은 영향을 받을 가능성이 최소화된다. 페이지가 취약해질 수 있는 유일한 경우는 스타일에서 어떻게든 알 수 없는 env()를 사용하는 경우인데, 기본적으로 이는 단순히 속성을 무효화하며 개발자의 개발자 도구에 표시된다.

또한 적대적인 정보는 리소스가 명시적으로 사용하도록 선택한 개별 CSS 속성에만 영향을 줄 수 있다.

적합성

문서 규칙

적합성 요구사항은 설명적 명제와 RFC 2119 용어를 조합하여 표현한다. 이 문서의 규범적 부분에 사용된 핵심 용어인 “반드시 해야 한다”, “절대로 해서는 안 된다”, “필수이다”, “해야 한다”, “해서는 안 된다”, “하는 것이 좋다”, “하지 않는 것이 좋다”, “권장된다”, “할 수 있다” 및 “선택 사항이다”는 RFC 2119에 설명된 대로 해석해야 한다. 그러나 가독성을 위해 이 사양에서는 이러한 용어를 모두 대문자로 표시하지 않는다.

명시적으로 비규범적이라고 표시된 절, 예제 및 참고를 제외한 이 사양의 모든 텍스트는 규범적이다. [RFC2119]

이 사양의 예제는 “예를 들어”라는 말로 시작하거나 다음과 같이 class="example"을 사용하여 규범적 텍스트와 구분한다:

이는 설명 목적의 예제이다.

설명 목적의 참고는 “참고”라는 말로 시작하며 다음과 같이 class="note"를 사용하여 규범적 텍스트와 구분한다:

참고: 이는 설명 목적의 참고이다.

권고문은 특별한 주의를 환기하도록 스타일이 지정된 규범적 절이며 다음과 같이 <strong class="advisement">을 사용하여 다른 규범적 텍스트와 구분한다: UA는 반드시 접근 가능한 대안을 제공해야 한다.

적합성 클래스

이 사양에 대한 적합성은 세 가지 적합성 클래스에 대해 정의한다:

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

이 모듈에서 정의한 구문을 사용하는 모든 문장이 일반 CSS 문법과 이 모듈에서 정의한 각 기능의 개별 문법에 따라 유효한 경우 스타일시트는 이 사양을 준수한다.

렌더러는 적절한 사양에서 정의한 대로 스타일시트를 해석하는 것에 더하여, 이 사양에서 정의한 모든 기능을 올바르게 파싱하고 그에 따라 문서를 렌더링하여 지원하는 경우 이 사양을 준수한다. 그러나 장치의 제한으로 인해 UA가 문서를 올바르게 렌더링할 수 없더라도 UA가 부적합하게 되는 것은 아니다. (예를 들어 UA는 단색 모니터에서 색상을 렌더링할 필요가 없다.)

저작 도구는 일반 CSS 문법과 이 모듈의 각 기능에 대한 개별 문법에 따라 구문적으로 올바른 스타일시트를 작성하고, 이 모듈에 설명된 스타일시트의 다른 모든 적합성 요구사항을 충족하는 경우 이 사양을 준수한다.

부분 구현

작성자가 전방 호환 파싱 규칙을 활용하여 대체 값을 지정할 수 있도록 CSS 렌더러는 사용할 수 있는 수준으로 지원하지 않는 모든 at-규칙, 속성, 속성값, 키워드 및 기타 구문 구조를 유효하지 않은 것으로 취급하고 (적절하게 무시해야 한다). 특히 사용자 에이전트는 지원하지 않는 구성요소 값을 선택적으로 무시하고 하나의 다중 값 속성 선언에서 지원되는 값만 적용해서는 안 된다. 어떤 값이든 유효하지 않은 것으로 간주되면 (지원되지 않는 값은 반드시 유효하지 않은 것으로 간주해야 한다) CSS에서는 전체 선언을 무시하도록 요구한다.

불안정 기능 및 독점 기능의 구현

향후 안정적인 CSS 기능과의 충돌을 방지하기 위해 CSSWG는 CSS의 불안정 기능과 독점 확장을 구현할 때 모범 사례를 따를 것을 권장한다.

비실험적 구현

사양이 후보 권고안 단계에 도달하면 비실험적 구현이 가능하며, 구현자는 사양에 따라 올바르게 구현되었음을 입증할 수 있는 모든 CR 수준 기능을 접두사 없이 구현하여 공개하는 것이 좋다.

구현 간 CSS의 상호 운용성을 확립하고 유지하기 위해 CSS 작업 그룹은 비실험적 CSS 렌더러가 CSS 기능을 접두사 없이 구현하여 공개하기 전에 구현 보고서 (필요한 경우 해당 구현 보고서에 사용한 테스트 케이스도 함께)를 W3C에 제출하도록 요청한다. W3C에 제출된 테스트 케이스는 CSS 작업 그룹의 검토와 수정을 거칠 수 있다.

테스트 케이스와 구현 보고서 제출에 관한 자세한 정보는 CSS 작업 그룹 웹사이트의 https://www.w3.org/Style/CSS/Test/에서 확인할 수 있다. 질문은 public-css-testsuite@w3.org 메일링 리스트로 보내야 한다.

색인

이 사양에서 정의한 용어

참조를 통해 정의된 용어

참고 문헌

규범적 참고 문헌

[CSS-ENV-1]
CSS 환경 변수 모듈 레벨 1. 2025년 9월 23일. FPWD. URL: https://www.w3.org/TR/css-env-1/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS 구문 모듈 레벨 3. 2021년 12월 24일. CRD. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS 값과 단위 모듈 레벨 3. 2024년 3월 22일. CRD. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 값과 단위 모듈 레벨 4. 2024년 3월 12일. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-VARIABLES-1]
Tab Atkins Jr.. 종속 변수용 CSS 사용자 지정 속성 모듈 레벨 1. 2022년 6월 16일. CR. URL: https://www.w3.org/TR/css-variables-1/
[FILL-STROKE-3]
Elika Etemad; Tab Atkins Jr.. CSS 채우기 및 획 모듈 레벨 3. 2017년 4월 13일. FPWD. URL: https://www.w3.org/TR/fill-stroke-3/
[HTML]
Anne van Kesteren; 외. HTML 표준. 현행 표준. URL: https://html.spec.whatwg.org/multipage/
[RFC2119]
S. Bradner. 요구사항 수준을 나타내기 위해 RFC에서 사용하는 핵심 용어. 1997년 3월. 현행 모범 사례. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. 선택자 레벨 4. 2026년 1월 22일. WD. URL: https://www.w3.org/TR/selectors-4/
[URL]
Anne van Kesteren. URL 표준. 현행 표준. URL: https://url.spec.whatwg.org/

비규범적 참고 문헌

[CSS-COLOR-4]
Tab Atkins Jr.; Chris Lilley; Lea Verou. CSS 색상 모듈 레벨 4. 2026년 6월 18일. CRD. URL: https://www.w3.org/TR/css-color-4/

속성 색인

이름 초깃값 적용 대상 상속 백분율 애니메이션 유형 정규 순서 계산값
link-parameters none | <param()># none 모든 요소 및 의사 요소 아니요 해당 없음 이산형 문법에 따름 지정된 대로