폴리이엔엠 디지털 미디어 연구

HTML 글로벌 속성 "is"를 아시나요? 44

최신 프론트엔드 프레임워크가 유행하면서 순수 웹 컴포넌트에 대한 관심도 높아지고 있습니다. 그중에서도 기존 HTML 태그의 기능을 쉽게 확장할 수 있는 강력한 글로벌 속성인 is 애트리뷰트에 대해 알아보고자 합니다.

글로벌 속성 'is'란 무엇인가요?

is 속성은 개발자가 직접 정의한 '사용자 정의 내장 요소(Customized Built-in Elements)'를 표준 HTML 요소에 연결할 때 사용하는 글로벌 속성입니다. 완전히 새로운 커스텀 태그(예: <my-button>)를 독자적으로 만드는 것(Autonomous custom elements)과 달리, <button>이나 <input>처럼 이미 존재하는 표준 HTML 요소의 고유한 동작과 접근성을 그대로 유지하면서 원하는 새로운 기능이나 스타일만 덧붙일 수 있게 해줍니다.

코드 예시로 이해하기

예를 들어 클릭하면 특별한 애니메이션이 동작하는 버튼이 필요하다고 가정해 봅시다. 가장 먼저 JavaScript의 클래스 문법을 사용해 HTMLButtonElement를 상속받는 클래스를 정의하고 이를 CustomElementRegistry에 등록합니다.

class CustomButton extends HTMLButtonElement {
	constructor() {
		super();
		this.addEventListener("click", () => {
			alert("커스텀 버튼이 클릭되었습니다!");
		});
	}
}

// "custom-button"이라는 이름으로 등록하며, 
// 기존 button 요소를 확장한다는 옵션을 명시합니다.
customElements.define("custom-button", CustomButton, { extends: "button" });

컴포넌트 등록이 완료되었다면, HTML 파일에서는 일반적인 <button> 태그에 is 속성만 추가하여 손쉽게 사용할 수 있습니다.

<button is="custom-button">나만의 버튼</button>

이 방식의 가장 큰 장점은 스크린 리더 같은 보조 기기가 이 요소를 완벽하게 일반 버튼으로 인식한다는 것입니다. 버튼의 disabled 속성이나 폼(Form) 제출 기능 등, 수십 년간 다듬어진 기존 웹 표준 요소들이 제공하는 혜택을 온전히 누릴 수 있습니다.

사파리(Safari)의 반대와 지원 거부

이렇게 유용하고 강력한 기능이지만, 치명적인 단점이 하나 가로막고 있습니다. 웹 표준을 브라우저에 사실상 구현하고 주도하는 3대 주요 표준 단체 및 벤더(구글 크롬, 모질라 파이어폭스, 애플 사파리) 중 유독 애플의 사파리(WebKit 엔진)만이 'is' 속성의 지원을 단호하게 거부하고 있다는 점입니다.

애플과 WebKit 팀이 'is' 속성을 반대하는 주된 이유는 다음과 같이 3가지로 압축할 수 있습니다. 1

사파리의 입장에 반대하는 목소리

사파리의 이런 완고한 태도에 대해 프론트엔드 커뮤니티와 크롬, 파이어폭스 등 다른 브라우저 벤더들은 강하게 반발했습니다. 주요 반대 논리는 다음과 같습니다.

사파리의 입장이 충분히 일리가 있는 이유

하지만 브라우저 엔진을 직접 개발하는 엔지니어들의 시각에서 보면, 사파리 측의 거부 명분 역시 아키텍처의 근본을 지키기 위한 일리 있는 주장입니다.

결론: 웹 생태계를 위한 새로운 대안의 모색

구글 크롬과 애플 사파리의 팽팽한 의견 대립 속에서, 웹 표준 커뮤니티는 is 속성의 논란을 우회하면서도 필요한 기능을 완벽히 구현할 수 있는 혁신적인 대안들을 도입하고 있습니다.

대표적으로 ElementInternals APIFACE(Form-Associated Custom Elements) 스펙이 있습니다. 이를 통해 개발자는 is 속성을 사용하지 않는 순수 자율 컴포넌트 내부에서 attachInternals()를 호출함으로써, 브라우저의 접근성 객체 모델(AOM)에 직접 개입하고 웹 폼 전송 파이프라인 및 유효성 검증 로직에 네이티브 요소처럼 유기적으로 동화될 수 있게 되었습니다. 4

더 나아가 근본적인 네이티브 요소만의 '암묵적 내장 동작'까지 상속받기 위해, 최근 WHATWG에서는 ElementInternals.type = 'submit'과 같이 내부 타입을 명시하는 확장 제안이나 has="" 속성을 활용하여 기능(Behaviors)을 믹스인(Mix-in) 형태로 유연하게 조립하는 진보적인 상향식 구조가 논의되고 있습니다. 56 즉, 수많은 갈등을 딛고 웹 생태계는 브라우저 파서를 교란시키지 않으면서도 개발자에게 강력한 네이티브 권한을 부여하는 새로운 아키텍처의 시대로 우아하게 진화하고 있는 것입니다.

참고 자료

  1. ^ Pea, J. (2016-06-01). The is="" attribute is confusing? Maybe we should encourage only ES6 class-based extension. #509. GitHub. https://github.com/WICG/webcomponents/issues/509
  2. ^ van Kesteren, A. (2022-11-28). Customized built-in elements · Issue #97. GitHub. https://github.com/WebKit/standards-positions/issues/97
  3. ^ Microsoft. (2026-02-18). Microsoft Edge - 2026 web platform top developer needs. GitHub. https://microsoftedge.github.io/TopDeveloperNeeds/
  4. ^ Web APIs | MDN - Mozilla. (2025-10-15). ElementInternals. MDN. https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals
  5. ^ Joshi, S. (2025-02-21). Proposal: Customized built-in elements via `elementInternals.type` #11061. GitHub. https://github.com/whatwg/html/issues/11061
  6. ^ Anderson, B, B. (2023-04-18). Custom Element Features, Built-in Enhancements, Itemscope Managers · Issue #1000. GitHub. https://github.com/WICG/webcomponents/issues/1000