CSS 문자 장식만
저번 상자 요소를 시도했고 이번에는 교재를 장식해 보았다.
텍스트에 CSS 그래디언트 드로잉의 배경을 적용합니다
-webkit-background-clip: text;
.장식을 위해 라벨을 끼워 넣거나 빈 라벨을 사용하는 것을 좋아하지 않기 때문에 기본적으로
span
라벨을 사용합니다.그러나
span
의 위조요소:before
,:after
를 이용했다.※ 현대 브라우저만 검증했습니다.
코드
HTML
<p><span class="decorated sample-1">LOLLIPOP</span></p>
<p><span class="decorated sample-2">ROCK YOU</span></p>
<p style="background-color: #222;"><span class="decorated sample-3">NEON</span></p>
<p><span class="decorated sample-4">Shadow</span></p>
<script>
// 疑似要素のcontentを親要素(span)と同じ文字列にするスクリプト
// .decorated というclass名の要素を対象に
// data-text属性を追加しspanのテキストと同じ文字列を値に設定
deco = document.querySelectorAll('.decorated');
deco.forEach(function(element) {
element.setAttribute('data-text', element.textContent);
});
</script>
JavaScript를 사용하지 않으려면<p><span class="decorated sample-1" data-text="LOLLIPOP">LOLLIPOP</span></p>
위에서 설명한 대로 data-text
속성에 대해 동일한 텍스트를 설정하면 OK입니다.기본 CSS
/* Googleフォント */
@import url('https://fonts.googleapis.com/css?family=Abril+Fatface|Alfa+Slab+One|Audiowide|Bevan|Coiny|Poiret+One|Squada+One');
body {
font-size: 100px;
}
p {
margin: 30px 0;
}
/* base */
.decorated {
display: inline-block;
position: relative;
z-index: 1;
margin: 0;
}
.decorated:before {
content: attr(data-text);
position: absolute;
z-index: 2;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.decorated:after {
content: attr(data-text);
position: absolute;
z-index: 3;
-webkit-text-fill-color: transparent;
}
샘플 1
/* sample : LOLLIPOP */
.sample-1 {
color: #FEBA61;
font-family: 'Coiny', cursive;
}
.sample-1:before {
top: 0;
left: 0;
background:
radial-gradient(white 25%, transparent 0),
radial-gradient(circle farthest-side, #FD9BE2, #FEBA61);
background-size: 20px 20px, 100% auto;
-webkit-background-clip: text;
}
.sample-1:after {
top: -6px;
left: -6px;
-webkit-text-stroke: 5px #F32B93;
}
샘플 2
/* sample : ROCK YOU */
.sample-2 {
font-family: 'Squada One';
font-size: 1.2em;
letter-spacing: .05em;
background: linear-gradient(to right, #AA201B 50%, #841A16 0);
background-size: 6px 100%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
filter:
drop-shadow(1px 1px 0 #222)
drop-shadow(1px 1px 0 #222)
drop-shadow(2px 2px 0 #222)
drop-shadow(2px 2px 0 #222)
}
.sample-2:before {
-webkit-text-stroke: 4px #AA201B;
filter: drop-shadow(1px 1px 0 #222);
}
.sample-2:after {
display: none;
}
샘플 3
/* sample : NEON */
.sample-3 {
font-family: 'Audiowide';
font-weight: bold;
filter:
drop-shadow(10px 10px 5px rgba(255, 255, 255, .1))
drop-shadow(10px 10px 10px rgba(255, 255, 255, .05));
}
.sample-3:before {
left: 0;
top: 0;
background: linear-gradient(to right, #bfe5ff 0%,#87ffdb 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
filter: blur(10px);
opacity: .6;
}
.sample-3:after {
left: 0;
top: 0;
background: linear-gradient(to right, #bfe5ff 0%,#87ffdb 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-text-stroke: 2px rgba(255, 255, 255, .2);
}
샘플
/* sample : Shadow */
.sample-4 {
left: 8px;
top: 8px;
background: linear-gradient(-45deg, #CDC6FF 25%, #fff 25.1%, #fff 50%, #CDC6FF 50.1%, #CDC6FF 75%, #fff 75.1%, #fff 0);
background-size: 4px 4px;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-family: 'Abril Fatface';
}
.sample-4:before {
left: -8px;
top: -8px;
-webkit-text-fill-color: #CDC6FF;
-webkit-text-stroke: 1px #B4AFE2;
}
CodePen
이번 코드는 CodePen에 요약되어 있다.
See the Pen Pure CSS Text Decoration by noqua ( @noqua ) on CodePen .
이상입니다.
background
와 text-shadow
를 병용하면 당연히 text-shadow
를 background
위에 그려야 하기 때문에 위조 요소와 z-index
조정이 필요하다고 생각합니다.br/>
이미지도 없고 태그 하나로 표현할 수 있다니 대단하군br/>-webkit-background-clip: text;
지원되지 않는 브라우저를 고려한 경우support
로 스타일을 나누고, 가득 바른+섀도우로 바꾸면 최소한의 대응이 아닌가p>
참고가 되었으면 좋겠습니다
Reference
이 문제에 관하여(CSS 문자 장식만), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/noqua/items/4e418c0af9fe96e7d0ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)