3분만에 CSS 글리치 텍스트 공개 😎
12785 단어 cssanimationjavascriptdesign
작동 중인 글리치 텍스트 공개 😎
이를 위해 CSS 변수 범위 💪의 힘을 활용할 것입니다.
캠프 TL;DR에 있는 분들은 아래로 스크롤하여 데모 및 코드를 확인하세요 👍
부인 성명
이 효과는
HTML
& CSS
에서만 달성할 수 있습니다. 마크업을 강화하기 위해 약간JavaScript
을 사용하고 있습니다. 새로 고칠 때마다 상황이 달라집니다. 자바스크립트가 아닌 버전도 공유하겠습니다 👍마크업
가장 먼저 필요한 것은 마크업입니다 ✅
<p>Glitchy Text Reveal!</p>
자바스크립트
여기 그 자바스크립트가 있습니다.
const { Splitting } = window
const RESULTS = Splitting()
// Set of characters we can use to glitch through
const GLITCH_CHARS = '`¡™£¢∞§¶•ªº–≠åß∂ƒ©˙∆˚¬…æ≈ç√∫˜µ≤≥÷/?░▒▓<>/'.split('')
// Loop through our Splitting results and apply CSS variables.
// The results contain an Array of spans that are the characters.
for (let r = 0; r < RESULTS.length; r++) {
const CHARS = RESULTS[r].chars
for (let c = 0; c < CHARS.length; c++) {
// We are going to inline 10 CSS variables
for (let g = 0; g < 10; g++) {
CHARS[c].style.setProperty(
`--char-${g}`,
`"${GLITCH_CHARS[Math.floor(Math.random() * GLITCH_CHARS.length)]}"`
)
}
}
}
우리는 텍스트를 범위로 분할하기 위해 화려한Splitting.js를 사용하고 있습니다.
이를 통해 개별 문자를 선택할 수 있습니다. 😎 결과가 나오면 문자 요소를 반복하고 인라인
CSS
변수를 적용합니다. 이러한 변수는 글리치 문자가 표시되어야 하는 것을 지시합니다.문자에 대한 결과 마크업은 다음과 같을 수 있습니다.
<span
class="char"
data-char="G"
style="
--char-0:'˙';
--char-1:'§';
--char-2:'º';
--char-3:'∞';
--char-4:'˙';
--char-5:'▒';
--char-6:'˙';
--char-7:'µ';
--char-8:'£';
--char-9:'<';">
l
</span>
CSS
먼저 캐릭터를 복제하기 위해 의사 요소의 스타일을 지정해야 합니다. 그런 다음 원본을 숨깁니다.
[data-char] {
color: transparent;
position: relative;
}
[data-char]:after {
--txt: attr(data-char);
animation-duration: 0.2s;
animation-delay: 0.5s;
animation-timing-function: steps(1);
animation-fill-mode: backwards;
content: var(--txt);
color: var(--color);
position: absolute;
left: 0;
top: 0;
}
콘텐츠가 CSS 변수로 어떻게 채워지는지 확인하세요 👍
트릭이 있습니다. 우리는 CSS 변수 범위를 활용하여 "모두에게 적합한 하나의 애니메이션"유형의 시나리오를 만들 것입니다.
keyframes
속성을 전환할 content
세트를 정의합니다. 무엇으로 전환해야 하는지 어떻게 알 수 있습니까? 이전에 설정한 인라인 변수를 참조합니다 😉@keyframes glitch-switch {
0% { content: var(--char-0); }
10% { content: var(--char-1); }
20% { content: var(--char-2); }
30% { content: var(--char-3); }
40% { content: var(--char-4); }
50% { content: var(--char-5); }
60% { content: var(--char-6); }
70% { content: var(--char-7); }
80% { content: var(--char-8); }
90% { content: var(--char-9); }
100% { content: var(--char-0); }
}
그게 다야!
그래도 별로 흥미롭지 않죠? 효과를 변경하기 위해
animation-iteration-count
로 재생해 봅시다. 인라인 CSS 변수로 정의된 임의 반복 횟수는 어떻습니까?다음과 같이 카운트 변수를 인라인할 수 있습니다.
CHARS[c].style.setProperty('--count', Math.random() * 5 + 1)
그런 다음 CSS에 적용합니다.
animation-iteration-count: var(--count);
우리에게 이런 것을 줘! 🎉
접근성
이것을 접근 가능하게 만드는 방법을 언급할 가치가 있습니다. 가장 간단한 해결책은 텍스트를 복제하고 글리치 텍스트에 적용
aria-hidden
하는 것입니다 👍그게 다야!
CSS 글리치 텍스트가 3분 안에 공개됩니다! 다양한 타이밍 동작에 대한 데모를 확인하십시오.
질문이나 제안 사항이 있으면 언제든지 답장을 남겨주시거나 소셜에서 저와 소통하세요! 🤓
그리고 여기 CSS 전용 버전이 있습니다 😉 제가 잊었다고 생각하셨죠? 다음 시간까지 👋
Reference
이 문제에 관하여(3분만에 CSS 글리치 텍스트 공개 😎), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jh3y/css-glitchy-text-reveal-in-3-minutes-24pb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)