[javascript] 웹 컴포넌트의 스타일 관리 방법
웹 컴포넌트를 개발하면서 스타일링은 중요한 부분이다. 컴포넌트 내부에서 스타일을 관리하는 방법을 알아보자.
내부 스타일 시트
가장 간단한 방법은 컴포넌트 내부에 <style>
태그를 사용하는 것이다. 이 방식은 컴포넌트 외부에서 스타일이 적용되지 않으며, 컴포넌트 내부에서만 유효하다.
<template>
<style>
.component {
color: blue;
font-size: 16px;
}
</style>
<div class="component">
내부 스타일링으로 스타일을 적용한 컴포넌트입니다.
</div>
</template>
이 방식은 컴포넌트의 스타일을 관리하기 편하며, 다른 컴포넌트와 겹치지 않는 스타일을 적용할 수 있다. 하지만 스타일이 컴포넌트의 내부에 종속되어 있기 때문에 재사용성이 좋지 않을 수 있다.
외부 스타일 시트
컴포넌트의 스타일을 외부에서 관리하고 싶다면 외부 스타일 시트를 사용할 수 있다. 이를 위해 shadow DOM
을 사용하면 컴포넌트 내부의 스타일만 유효하게 할 수 있다.
- 컴포넌트의 외부 스타일 시트 파일을 생성한다. (예:
component.css
)
.component {
color: blue;
font-size: 16px;
}
- 컴포넌트의 JavaScript 파일에서
shadowRoot
를 생성하고 외부 스타일 시트 파일을 링크한다.
class MyComponent extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `
<link rel="stylesheet" href="./component.css">
<div class="component">
외부 스타일링으로 스타일을 적용한 컴포넌트입니다.
</div>
`;
}
}
이 방식은 컴포넌트의 스타일을 외부에서 관리하므로 여러 컴포넌트에서 동일한 스타일을 공유하거나, 스타일을 쉽게 변경할 수 있다는 장점이 있다.
CSS-in-JS
CSS-in-JS는 JavaScript를 사용하여 스타일을 작성하는 방식이다. 여러 라이브러리가 존재하며, 가장 인기있는 라이브러리 중 하나는 styled-components
이다.
import styled from 'styled-components';
const StyledComponent = styled.div`
color: blue;
font-size: 16px;
`;
// 사용 예
<StyledComponent>
CSS-in-JS로 스타일을 적용한 컴포넌트입니다.
</StyledComponent>
CSS-in-JS를 사용하면 스타일과 컴포넌트를 함께 작성할 수 있으며, 동적인 스타일링을 쉽게 처리할 수 있다는 장점이 있다.
결론
웹 컴포넌트를 개발할 때 스타일 관리는 중요한 고려사항이다. 내부 스타일 시트, 외부 스타일 시트, CSS-in-JS 등 각각의 방법을 적절히 사용하여 컴포넌트의 스타일링을 효율적으로 관리할 수 있다.