Mga CSS Pseudo-class at Pseudo-element
Ipinaliwanag ng artikulong ito ang mga pseudo-class at pseudo-element ng CSS.
Maaari kang matuto tungkol sa mga pseudo-class tulad ng :hover
at mga pseudo-element tulad ng ::before
.
YouTube Video
HTML para sa Preview
css-pseudo.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Pseudo Class/Element</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-pseudo-class.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Pseudo Class/Element</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header><h2>Pseudo Class</h2></header>
19 <article>
20 <h3>:hover</h3>
21 <section>
22 <header><h4>CSS</h4></header>
23<pre class="sample">
24a:hover {
25 color: red;
26}
27</pre>
28 <header><h4>HTML</h4></header>
29 <pre><a href="#">Example of hover</a></pre>
30 <header><h4>HTML+CSS</h4></header>
31 <section class="sample-view">
32 <a href="#">Example of hover</a><br>
33 </section>
34 </section>
35 </article>
36 <article>
37 <h3>:focus</h3>
38 <section>
39 <header><h4>CSS</h4></header>
40<pre class="sample">
41input:focus {
42 outline: 2px solid blue;
43}
44</pre>
45 <header><h4>HTML</h4></header>
46 <pre><input type="text" placeholder="Example of focus"></pre>
47 <header><h4>HTML+CSS</h4></header>
48 <section class="sample-view">
49 <input type="text" placeholder="Example of focus">
50 </section>
51 </section>
52 </article>
53 <article>
54 <h3>:active</h3>
55 <section>
56 <header><h4>CSS</h4></header>
57<pre class="sample">
58button:active {
59 background-color: green;
60}
61</pre>
62 <header><h4>HTML</h4></header>
63 <pre><button type="button">Example of active</button></pre>
64 <header><h4>HTML+CSS</h4></header>
65 <section class="sample-view">
66 <button type="button">Example of active</button>
67 </section>
68 </section>
69 </article>
70 <article>
71 <h3>:empty</h3>
72 <section>
73 <header><h4>CSS</h4></header>
74<pre class="sample">
75.box:empty {
76 background-color: lightgray;
77 border: 1px dashed black;
78 height: 50px;
79 width: 50px;
80}
81</pre>
82 <header><h4>HTML</h4></header>
83<pre>
84<p class="box"></p>
85<p class="box"> </p>
86</pre>
87 <header><h4>HTML+CSS</h4></header>
88 <section class="sample-view">
89 <p class="box"></p>
90 <p class="box"> </p>
91 </section>
92 </section>
93 </article>
94 <article>
95 <h3>:valid / :invalid</h3>
96 <section>
97 <header><h4>CSS</h4></header>
98<pre class="sample">
99input:valid {
100 border: 2px solid green;
101 background-color: #eaffea;
102}
103
104input:invalid {
105 border: 2px solid red;
106 background-color: #ffeaea;
107}
108</pre>
109 <header><h4>HTML</h4></header>
110<pre>
111<form>
112 <label>Username (min. 5 characters):</label>
113 <input type="text" pattern=".{5,}" required>
114 <button type="submit">Submit</button>
115</form>
116</pre>
117 <header><h4>HTML+CSS</h4></header>
118 <section class="sample-view">
119 <form>
120 <label>Username (min. 5 characters):</label>
121 <input type="text" pattern=".{5,}" required>
122 <button type="submit">Submit</button>
123 </form>
124 </section>
125 </section>
126 </article>
127 <article>
128 <h3>:in-range / :out-of-range</h3>
129 <section>
130 <header><h4>CSS</h4></header>
131<pre class="sample">
132input[type="number"]:in-range {
133 border: 2px solid blue;
134 background-color: #eaf4ff;
135}
136
137input[type="number"]:out-of-range {
138 border: 2px solid orange;
139 background-color: #fff4e6;
140}
141</pre>
142 <header><h4>HTML</h4></header>
143<pre>
144<form>
145 <label>Age (between 18 and 99):</label>
146 <input type="number" min="18" max="99" required>
147 <button type="submit">Submit</button>
148</form>
149</pre>
150 <header><h4>HTML+CSS</h4></header>
151 <section class="sample-view">
152 <form>
153 <label>Age (between 18 and 99):</label>
154 <input type="number" min="18" max="99" required>
155 <button type="submit">Submit</button>
156 </form>
157 </section>
158 </section>
159 </article>
160 <article>
161 <h3>:nth-child(n)</h3>
162 <section>
163 <header><h4>CSS</h4></header>
164<pre class="sample">
165li:nth-child(2) {
166 color: blue;
167 font-weight: bold;
168}
169
170li:nth-child(odd) {
171 background-color: lightblue;
172}
173
174li:nth-child(even) {
175 background-color: steelblue;
176}
177</pre>
178 <header><h4>HTML</h4></header>
179<pre>
180<ul>
181 <li>First Item</li>
182 <li>Second Item</li>
183 <li>Third Item</li>
184 <li>Fourth Item</li>
185</ul>
186</pre>
187 <header><h4>HTML+CSS</h4></header>
188 <section class="sample-view">
189 <ul>
190 <li>First Item</li>
191 <li>Second Item</li>
192 <li>Third Item</li>
193 <li>Fourth Item</li>
194 </ul>
195 </section>
196 </section>
197 </article>
198 <article>
199 <h3>:first-child</h3>
200 <section>
201 <header><h4>CSS</h4></header>
202<pre class="sample">
203small:first-child {
204 font-weight: bold;
205 color: steelblue;
206}
207</pre>
208 <header><h4>HTML</h4></header>
209<pre>
210 <small>First Small Text</small><br>
211 <small>Second Small Text</small><br>
212 <small>Third Small Text</small>
213</pre>
214 <header><h4>HTML+CSS</h4></header>
215 <section class="sample-view">
216 <small>First Small Text</small><br>
217 <small>Second Small Text</small><br>
218 <small>Third Small Text</small>
219 </section>
220 </section>
221 </article>
222 <article>
223 <h3>:last-child</h3>
224 <section>
225 <header><h4>CSS</h4></header>
226<pre class="sample">
227small:last-child {
228 font-weight: bold;
229 color: seagreen;
230}
231</pre>
232 <header><h4>HTML</h4></header>
233<pre>
234 <small>First Small Text</small><br>
235 <small>Second Small Text</small><br>
236 <small>Third Small Text</small>
237</pre>
238 <header><h4>HTML+CSS</h4></header>
239 <section class="sample-view">
240 <small>First Small Text</small><br>
241 <small>Second Small Text</small><br>
242 <small>Third Small Text</small>
243 </section>
244 </section>
245 </article>
246 <article>
247 <h3>:has()</h3>
248 <section>
249 <header><h4>CSS</h4></header>
250<pre class="sample">
251p:has(span.child) {
252 border: 2px solid black;
253}
254</pre>
255 <header><h4>HTML</h4></header>
256<pre>
257<p>Paragraph with <span class="child">span element</span></p>
258<p>Paragraph without span element</p>
259</pre>
260 <header><h4>HTML+CSS</h4></header>
261 <section class="sample-view">
262 <p>Paragraph with <span class="child">span element</span></p>
263 <p>Paragraph without span element</p>
264 </section>
265 </section>
266 </article>
267 <article>
268 <h3>:not()</h3>
269 <section>
270 <header><h4>CSS</h4></header>
271<pre class="sample">
272q:not(.quote2) {
273 font-weight: bold;
274 color: steelblue;
275}
276</pre>
277 <header><h4>HTML</h4></header>
278<pre>
279 <q class="quote1">First Quote</q><br>
280 <q class="quote2">Second Quote</q><br>
281 <q class="quote3">Third Quote</q>
282</pre>
283 <header><h4>HTML+CSS</h4></header>
284 <section class="sample-view">
285 <q class="quote1">First Quote</q><br>
286 <q class="quote2">Second Quote</q><br>
287 <q class="quote3">Third Small Text</q>
288 </section>
289 </section>
290 </article>
291 <article>
292 <h3>:where() / :is()</h3>
293 <section>
294 <header><h4>CSS</h4></header>
295<pre class="sample">
296:where(p, .detail) span {
297 color: darkcyan;
298 text-decoration: line-through;
299}
300:is(p, .detail) span {
301 font-style: italic;
302}
303p span {
304 text-decoration: none; /* Applied */
305 font-style: normal; /* Not Applied */
306}
307</pre>
308 <header><h4>HTML</h4></header>
309<pre>
310<p class="detail">This is a <span>paragraph</span> with the "detail" class.</p>
311<p>This is a <span>paragraph</span> without the "detail" class.</p>
312</pre>
313 <header><h4>HTML+CSS</h4></header>
314 <section class="sample-view">
315 <p class="detail">This is a <span>paragraph</span> with the "detail" class.</p>
316 <p>This is a <span>paragraph</span> without the "detail" class.</p>
317 </section>
318 </section>
319 </article>
320 <article>
321 <h3>:checked</h3>
322 <section>
323 <header><h4>CSS</h4></header>
324<pre class="sample">
325input:checked {
326 outline: 4px solid red;
327}
328</pre>
329 <header><h4>HTML</h4></header>
330<pre>
331 <label><input type="checkbox">First Checkbox</label>
332 <label><input type="checkbox">Second Checkbox</label>
333</pre>
334 <header><h4>HTML+CSS</h4></header>
335 <section class="sample-view">
336 <label><input type="checkbox">First Checkbox</label>
337 <label><input type="checkbox">Second Checkbox</label>
338 </section>
339 </section>
340 </article>
341 <article>
342 <h3>:disabled</h3>
343 <section>
344 <header><h4>CSS</h4></header>
345<pre class="sample">
346button:disabled {
347 background-color: gray;
348 cursor: not-allowed;
349}
350</pre>
351 <header><h4>HTML</h4></header>
352 <pre><button type="button" disabled>Example of active</button></pre>
353 <header><h4>HTML+CSS</h4></header>
354 <section class="sample-view">
355 <button type="button" disabled>Example of active</button>
356 </section>
357 </section>
358 </article>
359 <article>
360 <h3>:visited</h3>
361 <section>
362 <header><h4>CSS</h4></header>
363<pre class="sample">
364.link:visited {
365 color: purple;
366}
367</pre>
368 <header><h4>HTML</h4></header>
369 <pre><a href="https://example.com" class="link">Example</a></pre>
370 <header><h4>HTML+CSS</h4></header>
371 <section class="sample-view">
372 <a href="https://example.com" class="link">Example</a>
373 </section>
374 </section>
375 </article>
376 <article>
377 <h3>:first-of-type</h3>
378 <section>
379 <header><h4>CSS</h4></header>
380<pre class="sample">
381.first-example :first-of-type {
382 font-weight: bold;
383 color: steelblue;
384}
385</pre>
386 <header><h4>HTML</h4></header>
387<pre>
388<p class="first-example">
389 <var>First Variable</var>, <code>First Code Snippet</code><br>
390 <var>Second Variable</var>, <code>Second Code Snippet</code><br>
391 <var>Third Variable</var>, <code>Third Code Snippet</code>
392</p>
393</pre>
394 <header><h4>HTML+CSS</h4></header>
395 <section class="sample-view">
396 <p class="first-example">
397 <var>First Variable</var>, <code>First Code Snippet</code><br>
398 <var>Second Variable</var>, <code>Second Code Snippet</code><br>
399 <var>Third Variable</var>, <code>Third Code Snippet</code>
400 </p>
401 </section>
402 </section>
403 </article>
404 <article>
405 <h3>:last-of-type</h3>
406 <section>
407 <header><h4>CSS</h4></header>
408<pre class="sample">
409.last-example :last-of-type {
410 font-weight: bold;
411 color: seagreen;
412}
413</pre>
414 <header><h4>HTML</h4></header>
415<pre>
416<p class="last-example">
417 <var>First Variable</var>, <code>First Code Snippet</code><br>
418 <var>Second Variable</var>, <code>Second Code Snippet</code><br>
419 <var>Third Variable</var>, <code>Third Code Snippet</code>
420</p>
421</pre>
422 <header><h4>HTML+CSS</h4></header>
423 <section class="sample-view">
424 <p class="last-example">
425 <var>First Variable</var>, <code>First Code Snippet</code><br>
426 <var>Second Variable</var>, <code>Second Code Snippet</code><br>
427 <var>Third Variable</var>, <code>Third Code Snippet</code>
428 </p>
429 </section>
430 </section>
431 </article>
432 <article>
433 <h3>:nth-of-type(n)</h3>
434 <section>
435 <header><h4>CSS</h4></header>
436<pre class="sample">
437.nth-example :nth-of-type(2) {
438 font-weight: bold;
439 color: lightsalmon;
440}
441</pre>
442 <header><h4>HTML</h4></header>
443<pre>
444<p class="nth-example">
445 <var>First Variable</var>, <code>First Code Snippet</code><br>
446 <var>Second Variable</var>, <code>Second Code Snippet</code><br>
447 <var>Third Variable</var>, <code>Third Code Snippet</code>
448</p>
449</pre>
450 <header><h4>HTML+CSS</h4></header>
451 <section class="sample-view">
452 <p class="nth-example">
453 <var>First Variable</var>, <code>First Code Snippet</code><br>
454 <var>Second Variable</var>, <code>Second Code Snippet</code><br>
455 <var>Third Variable</var>, <code>Third Code Snippet</code>
456 </p>
457 </section>
458 </section>
459 </article>
460
461 <header><h2>Pseudo Element</h2></header>
462 <article>
463 <h3>::before</h3>
464 <section>
465 <header><h4>CSS</h4></header>
466<pre class="sample">
467span.note::before {
468 content: "Note: ";
469 color: red;
470}
471</pre>
472 <header><h4>HTML</h4></header>
473 <pre><span class="note">Example Text</span></pre>
474 <header><h4>HTML+CSS</h4></header>
475 <section class="sample-view">
476 <span class="note">Example Text</a><br>
477 </section>
478 </section>
479 </article>
480 <article>
481 <h3>::after</h3>
482 <section>
483 <header><h4>CSS</h4></header>
484<pre class="sample">
485span.five-stars::after {
486 content: "*****";
487 color: gold;
488}
489</pre>
490 <header><h4>HTML</h4></header>
491 <pre><span class="five-stars">Example Text</span></pre>
492 <header><h4>HTML+CSS</h4></header>
493 <section class="sample-view">
494 <span class="five-stars">Example Text</a>
495 </section>
496 </section>
497 </article>
498 <article>
499 <h3>::placeholder</h3>
500 <section>
501 <header><h4>CSS</h4></header>
502<pre class="sample">
503input::placeholder {
504 color: rgba(0, 150, 150, 0.7);
505 font-size: 14px;
506 font-style: italic;
507}
508</pre>
509 <header><h4>HTML</h4></header>
510 <pre><input type="text" placeholder="Enter your name"></pre>
511 <header><h4>HTML+CSS</h4></header>
512 <section class="sample-view">
513 <input type="text" placeholder="Enter your name">
514 </section>
515 </section>
516 </article>
517 <article>
518 <h3>::first-letter</h3>
519 <section>
520 <header><h4>CSS</h4></header>
521<pre class="sample">
522p.first::first-letter {
523 font-size: 2em;
524 color: blue;
525}
526</pre>
527 <header><h4>HTML</h4></header>
528<pre>
529<p class="first">
530 <span>First Text</span><br>
531 <span>Second Text</span><br>
532 <span>Third Text</span>
533</p>
534</pre>
535 <header><h4>HTML+CSS</h4></header>
536 <section class="sample-view">
537 <p class="first">
538 <span>First Text</span><br>
539 <span>Second Text</span><br>
540 <span>Third Text</span>
541 </p>
542 </section>
543<pre class="sample-error">
544/* Not Valid: `::first-letter` can only be applied to
545 block-level elements */
546span::first-letter {
547 font-size: 2em;
548 color: red;
549}
550</pre>
551 </section>
552 </article>
553 <article>
554 <h3>::first-line</h3>
555 <section>
556 <header><h4>CSS</h4></header>
557<pre class="sample">
558p.second::first-line {
559 font-weight: bold;
560 color: green;
561}
562</pre>
563 <header><h4>HTML</h4></header>
564<pre>
565<p class="second">
566 First Text<br>
567 Second Text<br>
568 Third Text
569</p>
570</pre>
571 <header><h4>HTML+CSS</h4></header>
572 <section class="sample-view">
573 <p class="second">
574 First Text<br>
575 Second Text<br>
576 Third Text
577 </p>
578 </section>
579<pre class="sample-error">
580/* Not Valid: `::first-line` can only be applied to block-level elements */
581span::first-line {
582 font-size: 2em;
583 color: red;
584}
585</pre>
586 </section>
587 </article>
588 <article>
589 <h3>::selection</h3>
590 <section>
591 <header><h4>CSS</h4></header>
592<pre class="sample">
593span::selection {
594 background-color: yellow;
595 color: black;
596}
597</pre>
598 <header><h4>HTML</h4></header>
599<pre>
600<p>
601 <span>First Text</span><br>
602 <span>Second Text</span><br>
603 <span>Third Text</span>
604</p>
605</pre>
606 <header><h4>HTML+CSS</h4></header>
607 <section class="sample-view">
608 <p>
609 <span>First Text</span><br>
610 <span>Second Text</span><br>
611 <span>Third Text</span>
612 </p>
613 </section>
614 </section>
615 </article>
616 </main>
617</body>
618</html>
Mga Pseudo-class
Ang mga pseudo-class ng CSS ay mga function na naglalapat ng style sa mga elemento batay sa mga partikular na kundisyon gaya ng estado ng elemento o herarkiya. Pinapayagan ka nitong magdagdag ng espesyal na estilo batay sa estado o posisyon ng elemento, na ginagamit para sa pag representasyon ng mga dinamikong sitwasyon na hindi kayang tukuyin ng regular na mga class o ID. Pinapadali ng mga pseudo-class ang pag-implement ng dinamikong UI at pag-style batay sa mga partikular na kundisyon, na nagbibigay daan sa disenyo na tumutugon sa interaksyon ng gumagamit o istruktura ng nilalaman.
Pangunahing Sintaks ng mga Pseudo-class
Ang pangunahing sintaksis ng mga pseudo-class ay ang mga sumusunod.
1selector:pseudo-class {
2 /* Styles */
3}
- Ang
selector
ay ang target na elemento. - Ang bahagi ng
pseudo-class
ay kumakatawan sa isang pseudo-class na nagpapahiwatig ng tiyak na estado o kundisyon. - Ang
:
ay ginagamit upang pumili ng mga pseudo-class.
Karaniwang Ginagamit na mga Pseudo-class
:hover
1a:hover {
2 color: red;
3}
- Ang
:hover
ay naglalapat ng istilo kapag ang mouse cursor ay pumapatong sa isang elemento. - Sa halimbawang ito, kapag ang mouse ay pumapatong sa isang link, nagbabago ang kulay ng teksto sa pula.
:focus
1input:focus {
2 outline: 2px solid blue;
3}
- Ang
:focus
ay naglalapat ng istilo kapag tumanggap ng pokus ang isang elemento. Ito ay pangunahing ginagamit para sa mga elemento ng form at mga link. - Sa halimbawang ito, lumalabas ang asul na balangkas kapag ang isang
input
na elemento ay nakatutok.
:active
1button:active {
2 background-color: green;
3}
- Ang
:active
ay naglalapat ng istilo sa isang elemento kapag ito ay aktibo (habang ito ay kinaklik pa). - Sa halimbawang ito, habang ang button ay kinaklik, nagbabago ang kulay ng background sa berde.
:empty
1.box:empty {
2 background-color: lightgray;
3 border: 1px dashed black;
4 height: 50px;
5 width: 50px;
6}
- Ang
:empty
pseudo-class ay ginagamit upang maglagay ng mga estilo sa mga elementong walang mga anak. Ang target na elemento ay hindi dapat maglaman ng mga text node, whitespace, o mga komento. - Sa halimbawang ito, kung ang isang elemento na may klase na
box
ay walang laman, isang kulay-abong background at isang itim na dashed na border ang inilalapat sa elementong iyon. Kung mayroong whitespace, ang estilo ay hindi inilalapat.
:valid
/ :invalid
1input:valid {
2 border: 2px solid green;
3 background-color: #eaffea;
4}
5
6input:invalid {
7 border: 2px solid red;
8 background-color: #ffeaea;
9}
-
Ang
:valid
ay isang estilo na inilalapat sa mga elemento ng form na may wastong halaga ng input. Ang estilo ng:valid
ay inilalapat kapag ang mga kundisyon na tinukoy ng mga HTML katangian tulad ngpattern
otype
(hal.email
) ay natugunan. -
Ang
:invalid
ay isang estilo na inilalapat sa mga elemento ng form na may hindi wastong halaga ng input. Ang estilo ng:invalid
ay inilalapat kapag ang isang elemento ng form ay hindi sumusunod sa mga panuntunan ng HTML validation (hal.type="email"
). -
Sa halimbawang ito, isang berdeng border ang ipinapakita kung ang ipinasok na teksto ay 5 o higit pang mga karakter ang haba, gaya ng tinukoy ng katangiang
pattern
. Kung ang ipinasok na teksto ay mas mababa sa 5 karakter, isang pulang border ang ipinapakita.
:in-range
/ :out-of-range
1input[type="number"]:in-range {
2 border: 2px solid blue;
3 background-color: #eaf4ff;
4}
5
6input[type="number"]:out-of-range {
7 border: 2px solid orange;
8 background-color: #fff4e6;
9}
-
Ang
:in-range
ay isang estilo na inilalapat kapag ang isang numeric na input na elemento ay naglalaman ng halaga na nasa loob ng itinakdang saklaw. Ang estilo na:in-range
ay inilalapat kapag ang mga kundisyong itinakda ng mga katangiangmin
atmax
sa HTML ay natutugunan. -
Ang
:out-of-range
ay isang estilo na inilalapat kapag ang isang numeric na input na elemento ay naglalaman ng halaga na wala sa itinakdang saklaw. Ang estilo na:out-of-range
ay inilalapat kapag ang halaga ay lumampas sa saklaw na itinakda ng mga katangiangmin
omax
. -
Sa halimbawang ito, kapag ang halaga na nasa loob ng saklaw na itinakda ng mga katangiang
min="18"
atmax="99"
(18 hanggang 99 kabilang ang mga ito) ay ipinasok, ipapakita ang isang asul na border. Kapag ang isang halaga na wala sa saklaw ay ipinasok, ipapakita ang isang kulay-kahel na border.
:nth-child()
1li:nth-child(2) {
2 color: blue;
3 font-weight: bold;
4}
- Ang
:nth-child()
ay naglalapat ng istilo batay sa posisyon ng isang anak na elemento sa loob ng kanyang magulang. Maaari mong tukuyin ang isang numero o isang expression para san
. - Sa halimbawang ito, ang teksto ng ikalawang bagay sa listahan ay nagiging asul.
Paglalapat sa Hindi Pangkaraniwan at Parehong mga Elemento
1li:nth-child(odd) {
2 background-color: lightblue;
3}
4
5li:nth-child(even) {
6 background-color: steelblue;
7}
- Sa pamamagitan ng pagtukoy ng
even
oodd
, maaari mong ilapat ang istilo sa mga elementong odd o even. - Sa halimbawang ito, iba't ibang kulay ng background ay inilalapat sa magkakasunod na mga hilera ng tabla. Ito ay maaaring gamitin para sa mga disenyo ng tabla na may mga guhit, halimbawa.
:first-child
1small:first-child {
2 font-weight: bold;
3 color: steelblue;
4}
- Ang
:first-child
ay nag-aaplay ng mga estilo sa unang child element ng isang parent. - Sa halimbawang ito, ang teksto ng unang
small
na elemento ay may estilo bilang naka-bold na may lilim ng asul.
:last-child
1small:last-child {
2 font-weight: bold;
3 color: seagreen;
4}
- Ang
:last-child
ay nag-aaplay ng mga estilo sa huling child element ng isang parent. - Sa halimbawang ito, ang teksto ng huling
small
na elemento ay may istilo bilang naka-bold na may lilim ng berde.
:has()
1p:has(span.child) {
2 border: 2px solid black;
3}
- Ang
:has()
pseudo-class sa CSS ay gumagana bilang isang parent selector. Sa paggamit ng pseudo-class na ito, maaari mong piliin ang isang parent element batay sa presensya ng mga anak na elemento. - Sa halimbawa na ito, ang
border
ay inilalapat sa mgap
na elemento na naglalaman ngspan
na mga elemento na may.child
na klase.
:not()
1q:not(.quote2) {
2 font-weight: bold;
3 color: steelblue;
4}
- Ang
:not()
ay nag-aaplay ng mga estilo sa mga element na hindi nakakatugon sa partikular na mga kondisyon. - Sa halimbawang ito, ang teksto ng mga
q
na elemento, maliban sa mga may klase naquote2
, ay may istilo bilang naka-bold na may lilim ng asul.
:where()
/ :is()
1:where(p, .detail) span {
2 color: darkcyan;
3 text-decoration: line-through;
4}
5:is(p, .detail) span {
6 font-style: italic;
7}
8p span {
9 text-decoration: none; /* Applied */
10 font-style: normal; /* Not Applied */
11}
- Ang
:where()
pseudo-class ay isang espesyal na CSS selector na nagtatakda ng specificity sa zero. Ito ay kapaki-pakinabang kapag nais mong hawakan ang maraming mga selector nang pinagsama at maglapat ng mga estilo nang hindi naaapektuhan ang specificity ng mga napiling elemento. - Ang
:is()
pseudo-class ay nagmumungkahi ng maramihang mga selector at pumipili ng mga elementong tumutugma sa alinman sa mga kundisyon. Ang:is()
pseudo-class mismo ay may parehong specificity tulad ng karaniwang mga selector, ngunit ito ay naglalapat ng mga estilo batay sa pinakamataas na specificity sa pagitan ng mga panloob nitong selector. - Sa halimbawang ito, ang
:where()
at:is()
ay ginagamit upang maglapat ng mga estilo sa mga<p>
na elemento at mga<span>
na elemento sa loob ng klase nadetail
. Ang istilo ngtext-decoration
na itinatakda ng:where()
ay na-o-override ng mga sumusunod na CSS. Gayunpaman, ang istilo na itinatakda ng:is()
ay may mas mataas na specificity at hindi na-o-override ng mga sumusunod na CSS.
:checked
1input:checked {
2 outline: 4px solid red;
3}
- Ang
:checked
ay nag-aaplay ng mga estilo kapag isang checkbox o radio button ang napili. - Sa halimbawang ito, isang pulang border ang ipinapakita sa napiling input na elemento.
:disabled
1button:disabled {
2 background-color: gray;
3 cursor: not-allowed;
4}
- Ang
:disabled
ay nag-aaplay ng mga estilo sa mga disabled na form element. - Sa halimbawang ito, isang gray na background at 'not-allowed' na cursor ang inilalapat sa disabled na button.
:visited
1.link:visited {
2 color: purple;
3}
- Ang
:visited
ay ginagamit upang maglapat ng mga estilo sa mga binisitang link. - Sa halimbawang ito, pagkatapos pindutin at bisitahin ang isang link, ang kulay ng teksto ng
<a>
na elemento ay nagbabago sa lilang.
Limitasyon ng Pagkapribado at Estilo
Ang :visited
ay may ilang mga limitasyon sa istilo para sa mga dahilan ng proteksyon ng privacy. Pinipigilan nito ang mga panlabas na site na mahinuha ang kasaysayan ng pagbisita ng user. Ang mga katangiang maaaring baguhin gamit ang :visited
ay limitado lamang sa mga sumusunod:.
color
background-color
border-color
outline-color
column-rule-color
text-decoration-color
fill
stroke
Sa kabilang banda, ang mga katangiang bukod dito (hal., display
, visibility
, position
, atbp.) ay hindi maaaring baguhin gamit ang :visited
. Pinipigilan nito ang paglabas ng privacy ng gumagamit sa pamamagitan ng kasaysayan ng pagbisita.
:first-of-type
1.first-example :first-of-type {
2 font-weight: bold;
3 color: steelblue;
4}
- Ang
:first-of-type
ay pumipili sa unang elemento ng kanyang uri (na may parehong pangalan ng tag) sa loob ng kanyang parent na elemento. - Sa halimbawa na ito, ang teksto ng unang
<var>
na elemento at<code>
na elemento safirst-example
na klase ay naka-ayos sa bold na asul.
:last-of-type
1.last-example :last-of-type {
2 font-weight: bold;
3 color: seagreen;
4}
- Ang
:last-of-type
ay pumipili sa huling elemento ng kanyang uri sa loob ng kanyang parent na elemento. - Sa halimbawa na ito, ang teksto ng huling
<var>
na elemento at<code>
na elemento salast-example
na klase ay naka-ayos sa bold na berde.
:nth-of-type()
1.nth-example :nth-of-type(2) {
2 font-weight: bold;
3 color: lightsalmon;
4}
- Ang
:nth-of-type()
ay nag-aaplay ng mga estilo sa ika-n na paglitaw ng mga elemento ng parehong uri. - Sa halimbawa na ito, ang teksto ng pangalawang
<var>
na elemento at<code>
na elemento santh-example
na klase ay naka-ayos sa bold na kahel.
Mga Pseudo-elemento
Ang mga pseudo-elemento sa CSS ay ginagamit upang mag-apply ng mga estilo sa tiyak na bahagi ng napiling elemento. Hindi tulad ng pseudo-classes, ang pseudo-elements ay nakatuon sa mga partikular na bahagi ng isang elemento kaysa sa buong elemento. Halimbawa, ginagamit ang mga ito upang magdagdag ng nilalaman bago o pagkatapos ng isang elemento o mag-apply ng mga estilo sa partikular na mga karakter o linya.
Pangunahing Sintaks ng Mga Pseudo-elemento
Ang mga pseudo-elemento ay karaniwang isinusulat gamit ang ::
(dobleng tutuldok) pagkatapos ng tagapili. Ito ay upang maiba ang mga ito mula sa pseudo-classes.
1selector::pseudo-element {
2 /* Styles */
3}
- Ang
selector
ay ang target na elemento. - Ang bahagi ng
pseudo-element
ay kumakatawan sa isang pseudo-element na tumutukoy sa isang partikular na bahagi o aspeto ng isang elemento. - Maaari mong tukuyin ang isang pseudo-element sa pamamagitan ng paggamit ng
::
.
Karaniwang Ginagamit na Mga Pseudo-element
::before
1span.note::before {
2 content: "Note: ";
3 color: red;
4}
-
Ang
::before
ay naglalagay ng virtual na nilalaman bago ang nilalaman ng isang elemento at nag-aapply ng mga estilo sa bahaging iyon. Ito ay kapaki-pakinabang para sa paglalagay ng mga icon o label, halimbawa. -
Sa halimbawa na ito, ang teksto na "Note:" ay idinadagdag bago ang
<span>
na mga elemento na may klase nanote
. Ang nilalamang tinukoy dito ay hindi umiiral sa aktwal na HTML; ito ay idinadagdag sa paraang virtual sa pamamagitan ng CSS. Ibig sabihin nito, hindi mo direktang ma-manipula ang nilalaman na idinagdag gamit ang JavaScript, atbp.
::after
1span.five-stars::after {
2 content: "*****";
3 color: gold;
4}
- Ang
::after
ay naglalagay ng virtual na nilalaman pagkatapos ng nilalaman ng isang elemento. Kadalasan itong ginagamit upang magdagdag ng dagdag na nilalaman o pampalamuti pagkatapos ng isang elemento. - Sa halimbawa na ito, isang gintong star icon ang idinagdag pagkatapos ng
<span>
na elemento na may klase nafive-stars
.
::placeholder
1input::placeholder {
2 color: rgba(0, 150, 150, 0.7);
3 font-size: 14px;
4 font-style: italic;
5}
- Ang
::placeholder
na pseudo-element ay ginagamit upang i-ayos ang placeholder na teksto sa mga form na elemento. Sa default, karaniwang ipinapakita ito sa liwanag na kulay abong teksto, ngunit gamit ang::placeholder
na pseudo-element, maaari mong baguhin ang istilo upang tumugma sa iyong disenyo. - Sa halimbawa na ito, ang kulay ng placeholder na teksto para sa
input
na elemento ay itinakda sa 70% transparent na asul, laki ng font sa14px
, at naka-italic.
::first-letter
1p.first::first-letter {
2 font-size: 2em;
3 color: blue;
4}
- Ang
::first-letter
ay nagpapakilala ng estilo sa unang letra ng isang block-level na elemento. Ito ay ginagamit para sa typographic na epekto tulad ng nakikita sa mga magasin o pahayagan, kung saan ang unang letra ay binibigyang-diin. Tandaan na ang pseudo-element na ito ay epektibo lamang sa mga block-level na elemento at hindi maaaring direktang gamitin sa inline na mga elemento tulad ng<span>
. - Sa halimbawa na ito, ang unang letra ng talata ay magiging doble ang laki, bold, at asul.
::first-line
1p.second::first-line {
2 font-weight: bold;
3 color: green;
4}
- Ang
::first-line
ay nagpapakilala ng estilo sa unang linya ng isang block na elemento. Ito ay partikular na ginagamit para sa mga talata ng teksto, na nagbibigay-daan sa iyo na maglagay ng iba’t ibang estilo sa unang linya. - Sa halimbawa na ito, ang unang linya ng talata ay magiging bold at berde.
::selection
1span::selection {
2 background-color: yellow;
3 color: black;
4}
- Ang
::selection
ay naglalapat ng mga estilo sa bahagi ng teksto na pinili (highlighted) ng gumagamit. Sa pamamagitan nito, maaari mong baguhin ang kulay ng background at kulay ng teksto kapag ang teksto ay napili. - Sa halimbawa na ito, kapag ang teksto ng isang
<span>
na elemento ay napili, ang background ay magiging dilaw at ang teksto ay nagiging itim.
Maaari mong sundan ang artikulo sa itaas gamit ang Visual Studio Code sa aming YouTube channel. Paki-check din ang aming YouTube channel.