Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS :lang() 가상 클래스 완벽 정리 – 언어별 요소 선택과 스타일링

CSS의 :lang() 가상 클래스는 요소에 지정된 lang 속성 값을 기준으로 해당 요소를 선택하는 선택자입니다. 이를 활용하면 콘텐츠가 어떤 언어로 작성되어 있는지에 따라 서로 다른 스타일을 적용할 수 있어, 다국어 웹사이트를 개발할 때 특히 유용하게 사용됩니다.

문법(Syntax)

:lang() 가상 클래스의 기본 문법은 다음과 같습니다.

:lang(언어코드) {
    /* 스타일 선언 */

괄호 안에는 ko(한국어), en(영어), it(이탈리아어), es(스페인어)처럼 BCP 47 표준에 따른 언어 코드를 지정합니다. 예를 들어 p:lang(ko)라고 작성하면 lang="ko" 속성을 가진 모든 <p> 요소만 선택됩니다.

그럼 첫 번째 예제를 통해 :lang() 가상 클래스의 동작 방식을 살펴보겠습니다.

예제 1 – 언어별 텍스트 라벨 추가하기

아래 예제에서는 각 단락(<p>)의 lang 속성 값에 따라 ::after 가상 요소를 이용해 언어 이름 라벨을 자동으로 붙여줍니다.

<!DOCTYPE html>
<html>
<head>
<style>
p:lang(it)::after {
    padding: 20px;
    content: '~ Italian';
    font-style: italic;
}
p:lang(es)::after {
    padding: 8px;
    content: '~ Spanish';
    font-style: italic;
}
p:lang(en)::after {
    padding: 20px;
    content: '~ English';
    font-style: italic;
}
</style>
</head>
<body>
<p lang='it'>Bella ciao</p>
<p lang='en'>Nice hello</p>
<p lang='es'>Bueno adios</p>
</body>
</html>

실행 결과

CSS :lang() 가상 클래스 완벽 정리 – 언어별 요소 선택과 스타일링

위 결과에서 볼 수 있듯이, 각 문장 뒤에는 해당 요소의 lang 속성 값에 맞는 언어 라벨(~ Italian, ~ English, ~ Spanish)이 이탤릭체로 자동 출력됩니다. HTML 구조를 변경하지 않고도 CSS만으로 언어 정보를 시각적으로 표시할 수 있는 것이죠.

이번에는 조금 더 실용적인 예제를 살펴보겠습니다.

예제 2 – 국기 그라디언트 배경 적용하기

다음 예제에서는 <div> 요소의 lang 속성 값에 따라 각국 국기를 연상시키는 그라디언트 배경과 도시 이름 라벨을 함께 적용합니다.

<!DOCTYPE html>
<html>
<head>
<style>
div{
    margin: 10px;
    padding: 10px;
    text-align: center;
    border: 1px solid black;
}
div:lang(it)::after {
    padding: 20px;
    content: '~ Italy';
    font-style: italic;
}
div:lang(es)::after {
    padding: 8px;
    content: '~ Spain';
    font-style: italic;
}
div:lang(nl)::after {
    padding: 20px;
    content: '~ Belgium';
    font-style: italic;
}
div:lang(es){
    background-image: linear-gradient(red 25%, yellow 25%, yellow 75%, red 75%);
}
div:lang(it){
    background-image:linear-gradient(90deg, #00ae00 33.3%, white 33.3%, white 66.6%, red 66.6%);
}
div:lang(nl){
    background-image:linear-gradient(90deg, black 33.3%, yellow 33.3%, yellow 66.6%, red 66.6%);
}
</style>
</head>
<body>
<div lang='it'>Rome</div>
<div lang='nl'>Brussels</div>
<div lang='es'>Madrid</div>
</body>
</html>

실행 결과

CSS :lang() 가상 클래스 완벽 정리 – 언어별 요소 선택과 스타일링

실행 결과를 보면 로마(Rome)는 이탈리아 국기의 초록·흰색·빨강 세로 줄무늬 배경을, 브뤼셀(Brussels)은 벨기에 국기의 검정·노랑·빨강 줄무늬 배경을, 마드리드(Madrid)는 스페인 국기를 연상시키는 빨강·노랑 가로 그라디언트 배경을 각각 갖게 됩니다. 이처럼 :lang() 가상 클래스를 사용하면 하나의 스타일시트에서 언어 속성만으로 요소를 구분해 다양한 스타일을 손쉽게 분기 처리할 수 있습니다.

마무리

:lang() 가상 클래스는 [lang="..."] 속성 선택자와 비슷해 보이지만, 하이픈(-)으로 연결된 부분 일치도 지원한다는 점에서 차이가 있습니다. 예를 들어 :lang(en)lang="en-US", lang="en-GB" 같은 요소까지 모두 매칭할 수 있어 다국어 사이트에서 더 유연하게 활용됩니다. 언어별 폰트, 따옴표 스타일, 하이픈 처리 등 타이포그래피를 세밀하게 조정해야 할 때 :lang() 가상 클래스를 적극적으로 활용해 보시기 바랍니다.