PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.11
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.11
2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 trunk 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
blockenberg / blocks / glitch-text / style.css

style.css in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.11, at blocks/glitch-text/style.css

241 lines 12.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* Glitch Text — style */
2 .bkgl-wrap {
3 box-sizing: border-box;
4 display: block;
5 line-height: 1;
6 }
7
8 .bkgl-outer {
9 position: relative;
10 display: inline-block;
11 }
12
13 /* ── shared pseudo-element setup ──────────────────────────────────────────── */
14 .bkgl-outer .bkgl-text {
15 position: relative;
16 font-family: var(--bkgl-tt-font-family, inherit);
17 font-size: var(--bkgl-tt-font-size-d, 64px);
18 font-weight: var(--bkgl-tt-font-weight, 900);
19 font-style: var(--bkgl-tt-font-style, normal);
20 text-decoration: var(--bkgl-tt-text-decoration, none);
21 text-transform: var(--bkgl-tt-text-transform, uppercase);
22 line-height: var(--bkgl-tt-line-height-d, 1.1);
23 letter-spacing: var(--bkgl-tt-letter-spacing-d, 4px);
24 word-spacing: var(--bkgl-tt-word-spacing-d, normal);
25 }
26
27 /* Pseudo-elements via .bkgl-before / .bkgl-after classes (injected by frontend.js) */
28 .bkgl-clone {
29 position: absolute;
30 top: 0;
31 left: 0;
32 width: 100%;
33 height: 100%;
34 pointer-events: none;
35 overflow: hidden;
36 user-select: none;
37 }
38
39 .bkgl-clone-red {
40 color: var(--bkgl-red, #ff0040);
41 left: calc(-1 * var(--bkgl-shift, 6px));
42 animation: bkglRed var(--bkgl-ms, 800ms) steps(1) infinite;
43 }
44
45 .bkgl-clone-blue {
46 color: var(--bkgl-blue, #00e5ff);
47 left: var(--bkgl-shift, 6px);
48 animation: bkglBlue var(--bkgl-ms, 800ms) steps(1) infinite;
49 }
50
51 /* ── chromatic keyframes ───────────────────────────────────────────────────── */
52 @keyframes bkglRed {
53 0% { clip-path: inset(80% 0 0 0); transform: translateY(2px); }
54 5% { clip-path: inset(5% 0 60% 0); transform: translateY(-2px); }
55 10% { clip-path: inset(40% 0 30% 0); transform: translateY(1px); }
56 15% { clip-path: inset(70% 0 10% 0); transform: translateY(0); }
57 20% { clip-path: inset(20% 0 50% 0); transform: translateY(-3px); }
58 25% { clip-path: inset(90% 0 0 0); transform: translateY(1px); }
59 30% { clip-path: inset(0 0 80% 0); transform: translateY(2px); }
60 35% { clip-path: inset(55% 0 25% 0); transform: translateY(-1px); }
61 40% { clip-path: inset(30% 0 45% 0); transform: translateY(3px); }
62 45% { clip-path: inset(0 0 0 0); transform: translateY(0); }
63 50% { clip-path: inset(60% 0 20% 0); transform: translateY(-2px); }
64 55% { clip-path: inset(10% 0 70% 0); transform: translateY(1px); }
65 60% { clip-path: inset(45% 0 35% 0); transform: translateY(-3px); }
66 65% { clip-path: inset(0 0 90% 0); transform: translateY(2px); }
67 70% { clip-path: inset(75% 0 5% 0); transform: translateY(-1px); }
68 75% { clip-path: inset(15% 0 65% 0); transform: translateY(0); }
69 80% { clip-path: inset(85% 0 0 0); transform: translateY(2px); }
70 85% { clip-path: inset(25% 0 55% 0); transform: translateY(-2px); }
71 90% { clip-path: inset(50% 0 30% 0); transform: translateY(1px); }
72 95% { clip-path: inset(0 0 75% 0); transform: translateY(-1px); }
73 100% { clip-path: inset(65% 0 15% 0); transform: translateY(0); }
74 }
75
76 @keyframes bkglBlue {
77 0% { clip-path: inset(0 0 80% 0); transform: translateY(-2px); }
78 5% { clip-path: inset(60% 0 10% 0); transform: translateY(2px); }
79 10% { clip-path: inset(25% 0 55% 0); transform: translateY(-1px); }
80 15% { clip-path: inset(0 0 0 0); transform: translateY(3px); }
81 20% { clip-path: inset(50% 0 20% 0); transform: translateY(0); }
82 25% { clip-path: inset(5% 0 75% 0); transform: translateY(-2px); }
83 30% { clip-path: inset(80% 0 0 0); transform: translateY(1px); }
84 35% { clip-path: inset(35% 0 40% 0); transform: translateY(-3px); }
85 40% { clip-path: inset(0 0 60% 0); transform: translateY(2px); }
86 45% { clip-path: inset(70% 0 15% 0); transform: translateY(-1px); }
87 50% { clip-path: inset(20% 0 65% 0); transform: translateY(0); }
88 55% { clip-path: inset(90% 0 0 0); transform: translateY(1px); }
89 60% { clip-path: inset(10% 0 80% 0); transform: translateY(-2px); }
90 65% { clip-path: inset(45% 0 30% 0); transform: translateY(3px); }
91 70% { clip-path: inset(0 0 50% 0); transform: translateY(-1px); }
92 75% { clip-path: inset(65% 0 20% 0); transform: translateY(0); }
93 80% { clip-path: inset(30% 0 45% 0); transform: translateY(2px); }
94 85% { clip-path: inset(0 0 85% 0); transform: translateY(-2px); }
95 90% { clip-path: inset(55% 0 35% 0); transform: translateY(1px); }
96 95% { clip-path: inset(15% 0 70% 0); transform: translateY(-3px); }
97 100% { clip-path: inset(40% 0 25% 0); transform: translateY(0); }
98 }
99
100 /* ── shake animation ───────────────────────────────────────────────────────── */
101 @keyframes bkglShake {
102 0%, 100% { transform: translateX(0); }
103 10% { transform: translateX(calc(-1 * var(--bkgl-shift, 6px))); }
104 20% { transform: translateX(var(--bkgl-shift, 6px)); }
105 30% { transform: translateX(calc(-0.7 * var(--bkgl-shift, 6px))) skewX(-2deg); }
106 40% { transform: translateX(calc(0.6 * var(--bkgl-shift, 6px))); }
107 50% { transform: translateX(0) skewX(1deg); }
108 60% { transform: translateX(calc(-0.5 * var(--bkgl-shift, 6px))); }
109 70% { transform: translateX(var(--bkgl-shift, 6px)) skewX(-1deg); }
110 80% { transform: translateX(0); }
111 90% { transform: translateX(calc(-0.3 * var(--bkgl-shift, 6px))); }
112 }
113
114 .bkgl-outer[data-type="shake"] .bkgl-text {
115 animation: bkglShake var(--bkgl-ms, 800ms) steps(1) infinite;
116 }
117
118 /* ── flicker animation ─────────────────────────────────────────────────────── */
119 @keyframes bkglFlicker {
120 0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { opacity: 1; }
121 20%, 22%, 24%, 55% { opacity: 0.1; }
122 }
123
124 .bkgl-outer[data-type="flicker"] .bkgl-text {
125 animation: bkglFlicker var(--bkgl-ms, 800ms) linear infinite;
126 }
127
128 /* ── cursor blink ──────────────────────────────────────────────────────────── */
129 .bkgl-cursor {
130 display: inline-block;
131 margin-left: 2px;
132 animation: bkglBlink 1s step-end infinite;
133 font-size: var(--bkgl-tt-font-size-d, 64px);
134 font-weight: var(--bkgl-tt-font-weight, 900);
135 }
136
137 @keyframes bkglBlink {
138 0%, 100% { opacity: 1; }
139 50% { opacity: 0; }
140 }
141
142 /* ── scanlines ─────────────────────────────────────────────────────────────── */
143 .bkgl-scanlines {
144 pointer-events: none;
145 z-index: 2;
146 }
147
148 /* ── hover trigger: pause when not hovered ─────────────────────────────────── */
149 .bkgl-outer[data-trigger="hover"] .bkgl-clone-red,
150 .bkgl-outer[data-trigger="hover"] .bkgl-clone-blue,
151 .bkgl-outer[data-trigger="hover"][data-type="shake"] .bkgl-text,
152 .bkgl-outer[data-trigger="hover"][data-type="flicker"] .bkgl-text {
153 animation-play-state: paused;
154 }
155
156 .bkgl-outer[data-trigger="hover"]:hover .bkgl-clone-red,
157 .bkgl-outer[data-trigger="hover"]:hover .bkgl-clone-blue,
158 .bkgl-outer[data-trigger="hover"]:hover[data-type="shake"] .bkgl-text,
159 .bkgl-outer[data-trigger="hover"]:hover[data-type="flicker"] .bkgl-text {
160 animation-play-state: running;
161 }
162
163 /* ── interval trigger: paused at start, JS controls ───────────────────────── */
164 .bkgl-outer[data-trigger="interval"] .bkgl-clone-red,
165 .bkgl-outer[data-trigger="interval"] .bkgl-clone-blue,
166 .bkgl-outer[data-trigger="interval"][data-type="shake"] .bkgl-text,
167 .bkgl-outer[data-trigger="interval"][data-type="flicker"] .bkgl-text,
168 .bkgl-outer[data-trigger="click"] .bkgl-clone-red,
169 .bkgl-outer[data-trigger="click"] .bkgl-clone-blue {
170 animation-play-state: paused;
171 }
172
173 .bkgl-outer.bkgl-playing .bkgl-clone-red,
174 .bkgl-outer.bkgl-playing .bkgl-clone-blue,
175 .bkgl-outer.bkgl-playing[data-type="shake"] .bkgl-text,
176 .bkgl-outer.bkgl-playing[data-type="flicker"] .bkgl-text {
177 animation-play-state: running;
178 }
179
180 /* ── reduced motion ─────────────────────────────────────────────────────────── */
181 @media (prefers-reduced-motion: reduce) {
182 .bkgl-clone-red, .bkgl-clone-blue, .bkgl-text, .bkgl-cursor {
183 animation: none !important;
184 }
185 }
186
187 /* Typography responsive */
188 @media (max-width: 1024px) {
189 .bkgl-outer .bkgl-text {
190 font-size: var(--bkgl-tt-font-size-t, var(--bkgl-tt-font-size-d, 64px));
191 line-height: var(--bkgl-tt-line-height-t, var(--bkgl-tt-line-height-d, 1.1));
192 letter-spacing: var(--bkgl-tt-letter-spacing-t, var(--bkgl-tt-letter-spacing-d, 4px));
193 word-spacing: var(--bkgl-tt-word-spacing-t, var(--bkgl-tt-word-spacing-d, normal));
194 }
195 .bkgl-cursor {
196 font-size: var(--bkgl-tt-font-size-t, var(--bkgl-tt-font-size-d, 64px));
197 line-height: var(--bkgl-tt-line-height-t, var(--bkgl-tt-line-height-d, 1.1));
198 letter-spacing: var(--bkgl-tt-letter-spacing-t, var(--bkgl-tt-letter-spacing-d, 4px));
199 word-spacing: var(--bkgl-tt-word-spacing-t, var(--bkgl-tt-word-spacing-d, normal));
200 }
201 .bkgl-subtext {
202 font-size: var(--bkgl-st-font-size-t, var(--bkgl-st-font-size-d, 14px));
203 line-height: var(--bkgl-st-line-height-t, var(--bkgl-st-line-height-d, 1.5));
204 letter-spacing: var(--bkgl-st-letter-spacing-t, var(--bkgl-st-letter-spacing-d, 2px));
205 word-spacing: var(--bkgl-st-word-spacing-t, var(--bkgl-st-word-spacing-d, normal));
206 }
207 }
208 @media (max-width: 767px) {
209 .bkgl-outer .bkgl-text {
210 font-size: var(--bkgl-tt-font-size-m, var(--bkgl-tt-font-size-t, var(--bkgl-tt-font-size-d, 64px)));
211 line-height: var(--bkgl-tt-line-height-m, var(--bkgl-tt-line-height-t, var(--bkgl-tt-line-height-d, 1.1)));
212 letter-spacing: var(--bkgl-tt-letter-spacing-m, var(--bkgl-tt-letter-spacing-t, var(--bkgl-tt-letter-spacing-d, 4px)));
213 word-spacing: var(--bkgl-tt-word-spacing-m, var(--bkgl-tt-word-spacing-t, var(--bkgl-tt-word-spacing-d, normal)));
214 }
215 .bkgl-cursor {
216 font-size: var(--bkgl-tt-font-size-m, var(--bkgl-tt-font-size-t, var(--bkgl-tt-font-size-d, 64px)));
217 line-height: var(--bkgl-tt-line-height-m, var(--bkgl-tt-line-height-t, var(--bkgl-tt-line-height-d, 1.1)));
218 letter-spacing: var(--bkgl-tt-letter-spacing-m, var(--bkgl-tt-letter-spacing-t, var(--bkgl-tt-letter-spacing-d, 4px)));
219 word-spacing: var(--bkgl-tt-word-spacing-m, var(--bkgl-tt-word-spacing-t, var(--bkgl-tt-word-spacing-d, normal)));
220 }
221 .bkgl-subtext {
222 font-size: var(--bkgl-st-font-size-m, var(--bkgl-st-font-size-t, var(--bkgl-st-font-size-d, 14px)));
223 line-height: var(--bkgl-st-line-height-m, var(--bkgl-st-line-height-t, var(--bkgl-st-line-height-d, 1.5)));
224 letter-spacing: var(--bkgl-st-letter-spacing-m, var(--bkgl-st-letter-spacing-t, var(--bkgl-st-letter-spacing-d, 2px)));
225 word-spacing: var(--bkgl-st-word-spacing-m, var(--bkgl-st-word-spacing-t, var(--bkgl-st-word-spacing-d, normal)));
226 }
227 }
228
229 .bkgl-subtext {
230 margin-top: 16px;
231 font-family: var(--bkgl-st-font-family, inherit);
232 font-size: var(--bkgl-st-font-size-d, 14px);
233 font-weight: var(--bkgl-st-font-weight, 400);
234 font-style: var(--bkgl-st-font-style, normal);
235 text-decoration: var(--bkgl-st-text-decoration, none);
236 text-transform: var(--bkgl-st-text-transform, none);
237 line-height: var(--bkgl-st-line-height-d, 1.5);
238 letter-spacing: var(--bkgl-st-letter-spacing-d, 2px);
239 word-spacing: var(--bkgl-st-word-spacing-d, normal);
240 }
241