Kas ir šis rīks?
CSS glitch efekts imitē bojāta apraides signāla vai saplēstas VHS lentes izskatu, teksta gabalu dublējot divreiz, izmantojot ::before un ::after pseido-elementus, katru kopiju nedaudz nobīdot ar krāsainu text-shadow (klasiski sarkanu un ciānu, atsaucoties uz analogā RGB signāla kļūdām), un animējot katras kopijas clip-path ar @keyframes, lai dažādas katras krāsotās kopijas horizontālas joslas laika gaitā mirgotu.
Šai tehnikai nav vajadzīgi attēli, JavaScript animācijas cikls vai canvas — tas ir tīrs CSS, kas uzlikts vienam HTML elementam, kurš pats satur tekstu divreiz: vienreiz kā reālu teksta saturu un vienreiz caur data-text atribūtu, ko pseido-elementi nolasa ar content: attr(data-text).
Avots: CSS Pseudo-Elements Module Level 4, W3C — definē ::before/::after pseido-elementus un attr() funkciju, uz kuras šis efekts ir balstīts.
Kāpēc to izmantot?
- Tiešraides animēts priekšskatījums — redzi faktisko glitch efektu, rakstot un pielāgojot iestatījumus, nevis tikai statisku maketu.
- Divas neatkarīgi pielāgojamas akcentkrāsas, pēc noklusējuma klasiskais sarkans/ciāns RGB sadalījuma izskats, bet pielāgojams jebkuram zīmolam vai tēmai.
- Intensitātes slīdnis kontrolē krāsu ēnas nobīdi pikseļos; ātruma slīdnis kontrolē, cik ātri cikliski mainās clip-path atslēgas kadri.
- Kopē gan CSS (ieskaitot pilnus @keyframes blokus), gan precīzu nepieciešamo HTML struktūru, jo efekts ir atkarīgs no data-text atribūta, kas sakrīt ar redzamo tekstu.
- Tīrs CSS — pēc ievietošanas lapā izpildlaikā JavaScript nav nepieciešams, nav ārēju bibliotēku vai attēlu, kas jāielādē.
- Bezmaksas, bez reģistrācijas, darbojas pilnībā tavā pārlūkā.
Kā to lietot
- Ieraksti tekstu, ko vēlies izglitizēt, teksta laukā — tas uzreiz atjaunina tiešraides priekšskatījumu.
- Izvēlies divas akcentkrāsas; klasiskais noklusējums ir sarkans un ciāns retro RGB sadalījuma izskatam, bet der jebkuras divas kontrastējošas krāsas.
- Pielāgo intensitātes slīdni, lai kontrolētu, cik tālu viena no otras atrodas abas krāsu kārtas — augstākas vērtības rada agresīvāku glitch iespaidu.
- Pielāgo ātruma slīdni, lai kontrolētu, cik ātri glitch mirgo.
- Kopē CSS bloku un ielīmē to savā stila failā.
- Kopē HTML fragmentu un izmanto to precīzi tā, kā parādīts — data-text atribūtam jāsakrīt ar elementa redzamo tekstu, lai efekts darbotos.
Piemērs
Ievade
Teksts: "GLITCH" · Krāsa 1: #ff0040 (sarkana) · Krāsa 2: #00fff9 (ciāna) · Intensitāte: 5pxIzvade
<div class="glitch" data-text="GLITCH">GLITCH</div>
.glitch::before { text-shadow: 5px 0 #ff0040; ... }
.glitch::after { text-shadow: -5px 0 #00fff9; ... }Pamatteksts paliek balts, kamēr tā divas pseido-elementu kopijas mirgo sarkanā un ciānā katrā pusē, radot klasisko bojāta signāla izskatu.
Kāpēc elementam nepieciešams data-text atribūts
::before un ::after pseido-elementi nevar tieši nolasīt elementa parasto teksta saturu — CSS content: attr() strādā tikai ar īstiem HTML atribūtiem, nevis pēcteču teksta mezgliem. Tāpēc ģenerētais HTML atkārto tekstu kā data-text="..." atribūtu tajā pašā elementā: redzamais teksts renderējas normāli, kamēr katrs pseido-elements neatkarīgi izvelk to pašu virkni caur content: attr(data-text) un uzliek savu krāsaino, animēto kopiju virsū.
Kā tiek radīts mirgojums
Katrs pseido-elements ir animēts ar savu @keyframes bloku, kas iet cauri virknei clip-path: inset(...) vērtību. Katrā atslēgas kadrā tiek atklāta cita krāsotās kopijas horizontāla josla, kamēr pārējais tiek apgriezts, tāpēc sarkanā (vai ciānas) redzamā šķautne lēkā vertikāli animācijas laikā — kombinācijā ar krāsaino text-shadow nobīdi tas rada saplēstas, nesaskaņotas krāsu joslas iespaidu, nevis gludu spīdumu.
Kur šis efekts der
- Virsraksti spēļu, kiberpanka, straumēšanas vai mūzikas zīmolu galvenajās lapās.
- 404 / kļūdu lapas, kur glitch pastiprina 'kaut kas salūza' tēmu.
- Peles novietojuma vai fokusa stāvokļi virsrakstam vai logotipam kā īss uzmanību piesaistošs akcents.
- Ielādes vai 'apstrādes' stāvokļi, kur glitch pauž sistēmas aktivitāti.
- Izmanto ar mēru pamattekstam — efekts ir tīši grūti lasāms uzmetumā, tāpēc tas labāk darbojas īsiem virsrakstiem vai logotipa tekstam, nevis rindkopām.
Kombinēšana ar citiem CSS rīkiem
Glitch virsraksts bieži ir tikai viens elements lielākā tumšā, augsta kontrasta izkārtojumā. Kombinē to ar mīkstu spīduma ēnu vai noapaļotām kartes malām no citiem CSS rīkiem zemāk pabeigtākam izskatam.
Biežāk uzdotie jautājumi
Kāpēc noklusējuma krāsas ir sarkana un ciāna?
Sarkanā un ciānā imitē klasisko RGB kanālu nesakritību, kāda redzama bojātā analogajā video un agrīnajās digitālā signāla kļūdās, no kurienes sākotnēji nāk 'glitch' efekta vizuālā valoda. Vari nomainīt uz jebkurām divām krāsām, bet stipri kontrastējoši toņi visskaidrāk nolasās kā krāsu sadalījums.
Vai šim efektam nepieciešams JavaScript?
Nē — kad CSS ir lapā, glitch ir tīrs CSS animācijas efekts, ko vada @keyframes. JavaScript izmanto tikai šis rīks pats, tavā pārlūkā, lai atjauninātu tiešraides priekšskatījumu un ģenerētu kopējamo kodu.
Kāpēc efekts neparādās, kad ielīmēju CSS savā projektā?
Visbiežākais iemesls ir nesakrītošs vai trūkstošs data-text atribūts. Pseido-elementi renderē to, kas ierakstīts data-text="..." elementā, nevis paša elementa teksta saturu, tāpēc abiem jābūt iestatītiem un precīzi jāsakrīt, ieskaitot lielos/mazos burtus.
Vai to var pielietot virsrakstam, piemēram, h1, nevis div?
Jā — tehnika darbojas jebkuram inline vai bloka elementam, kas atbalsta ::before/::after pseido-elementus un data-text atribūtu. Vienkārši pielieto to pašu klasi un data-text atribūtu savam h1, span vai citam elementam div vietā.
Vai spēcīgs glitch efekts kaitēs pieejamībai vai SEO?
Pamatā esošais teksta saturs ir reāls, atlasāms teksts, tāpēc ekrāna lasītāji un meklētājprogrammas to lasa normāli neatkarīgi no vizuālās animācijas. Lietotājiem, kas jutīgi pret mirgošanu, apsver prefers-reduced-motion ievērošanu, atslēdzot vai palēninot animāciju šiem lietotājiem.