CSS로 레트로 텍스트 효과 만들기
text-shadow
, background-clip
, filter
, 선형 그라디언트 및 -webkit-text-stroke
를 사용하여 멋진 금속성 효과를 얻습니다.실제 CSS에 들어가기 전에 최종 결과를 보고 싶을 것입니다.
사용할 HTML 마크업을 정의하는 것으로 시작하겠습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Retro effect with CSS</title>
</head>
<body>
<div class="container">
<h1 class="title">
<span class="metal clip raise">Retro</span><br>
<span class="metal clip raise">effect</span>
</h1>
<h2 class="subtitle">With CSS</h2>
</div>
</body>
</html>
HTML 마크업에는 컨테이너
div
요소와 두 개의 헤더 요소가 있습니다. h1
요소에는 레트로 및 효과 텍스트가 있는 두 개의 span
요소가 있습니다. 텍스트는 span
개 요소로 분할되어 두 요소에 개별적으로 효과를 적용할 수 있습니다.container
, title
및 subtitle
클래스는 대부분 위치 지정 규칙을 정의하므로 다루지 않습니다. GitHub repo에서 전체 CSS 코드를 찾을 수 있습니다.span
요소에는 효과를 정의하는 데 사용할 두 개의 클래스가 있습니다. metal
CSS 클래스를 추가하여 텍스트의 금속 채우기를 만들어 보겠습니다.HTML의
head
태그 안에 다음 코드를 추가합니다.<style type="text/css">
.metal {
background: linear-gradient(
hsl(239, 50%, 30%) 15%,
hsl(239, 50%, 40%) 25%,
hsl(200, 60%, 50%) 35%,
hsl(100, 70%, 80%) 45%,
hsl(60, 100%, 98%) 50%,
hsl(240, 0%, 0%) 52%,
hsl(240, 10%, 10%) 60%,
hsl(240, 50%, 30%) 70%,
hsl(220, 70%, 60%) 80%,
hsl(212, 92%, 76%) 85%
);
}
</style>
그러면 10가지 색상의 선형 그라데이션으로 구성된 텍스트의 배경이 정의됩니다. 출력은 다음과 같습니다.
그라디언트는 진한 파란색에서 거의 흰색에 가까운 녹색으로 이동한 다음 검은색으로 전환되고 그라데이션이 옅은 파란색으로 전환됩니다. 이것은 금속 반사 및 광택 효과를 만듭니다.
하지만 그라데이션을 배경이 아닌 텍스트 채우기로 사용하려면 어떻게 해야 할까요? 이것은
background-clip
규칙을 사용하여 수행할 수 있습니다. .metal
클래스에 다음 규칙을 추가해 보겠습니다..metal {
/* ... */
color: transparent;
background-clip: text;
-webkit-background-clip: text;
}
background-clip: text
텍스트에서 클리핑 마스크를 만들어 배경을 렌더링할 때 마스크로 사용합니다. 클리핑 마스크 영역만 렌더링됩니다. 텍스트 자체도 렌더링되므로 배경을 덮지 않도록 color: transparent
를 추가해야 합니다. WebKit 기반 브라우저에서 작동하려면 -webkit-background-clip: text
를 추가해야 합니다.다음으로 광택 😜으로 텍스트에 테두리를 추가합니다.
border: ...
만 추가하면 전체 요소에 대해 상자 모양의 테두리가 생기지만 이는 우리가 원하는 것이 아닙니다. 🤔다행히 supported by all the major browsers except IE 인 비표준 CSS 규칙
-webkit-text-stroke
이 있습니다. Firefox 및 Edge는 webkit
접두어 버전을 지원하며 자체 접두어가 없습니다..metal {
/* ... */
-webkit-text-stroke: 2px hsl(200, 65%, 80%);
}
멋진! 남은 것은 3D 효과를 추가하는 것뿐입니다. 스택의 모든 수준에서 오프셋을 늘리고 색상을 변경하여 여러 그림자를 쌓는 깔끔한 트릭을 사용하여 효과를 얻을 수 있습니다. CSS에는 우리가 사용할 수 있는
text-shadow
규칙이 있지만 불행히도 그림자가 배경 위에 그려지기 때문에 background-clip
와 잘 작동하지 않습니다 😔그러나 CSS Filter effects에는 우리가 사용할 수 있는
drop-shadow
필터도 있습니다.raise
규칙을 사용하여 CSS에 새 클래스filter
를 추가해 보겠습니다. 여기에는 3D 효과용 필터 5개drop-shadow
와 실제 그림자용 필터 1개가 포함되어 있습니다..raise {
filter: drop-shadow(1px 3px 0px hsl(242, 54%, 10%))
drop-shadow(1px 3px 0px hsl(242, 54%, 15%))
drop-shadow(1px 3px 0px hsl(242, 54%, 20%))
drop-shadow(1px 3px 0px hsl(242, 54%, 25%))
drop-shadow(1px 3px 0px hsl(242, 54%, 30%))
drop-shadow(0px 0px 10px rgba(16, 16, 16, 0.4));
}
광도를 높여 같은 색상을 사용하여 그라데이션 효과를 만듭니다. 필터 효과가 작동하는 방식 때문에 오프셋은 모두 같은 값을 가집니다. 여러 필터
drop-shadow
를 추가하면 각 후속 그림자는 이전 그림자의 결과를 그림자 윤곽선으로 사용합니다. 따라서 오프셋을 3px
로 유지하면 각 단계에서 3px
씩 증가합니다.CodeSandbox demo의
With CSS
텍스트는 두 개의 text-shadows
를 사용하여 파란색과 노란색 그림자를 만듭니다.단순화를 위해 글꼴 및 위치 지정 CSS 규칙을 생략했습니다.
.subtitle {
/* ... */
transform: rotateZ(-10deg);
color: hsl(318, 100%, 51%); /* pink */
text-shadow: -2px -3px hsl(53, 100%, 81%) /* yellow */, 5px 5px hsl(240, 90%, 61%); /* blue */
}
더 알아보기
MDN on background-clip
MDN on text-shadow
CSS-Tricks article on filter effects
CSS-Tricks article on -webkit-text-stroke
Reference
이 문제에 관하여(CSS로 레트로 텍스트 효과 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/juhanakristian/create-a-retro-text-effect-with-css-4a1j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)