CSS-pseudoklasser og -pseudoelementer
Denne artikel forklarer CSS-pseudoklasser og -pseudoelementer.
Du kan lære om pseudoklasser såsom :hover
og pseudoelementer som ::before
.
YouTube Video
HTML til forhåndsvisning
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>
Pseudoklasser
CSS-pseudoklasser er funktioner, der anvender styles på elementer baseret på specifikke betingelser såsom elementtilstande eller hierarki. De giver dig mulighed for at tilføje specielle styles baseret på elementtilstande eller positioner, hvilket gør dem nyttige til at repræsentere dynamiske situationer, der ikke kan specificeres ved hjælp af almindelige klasser eller ID'er. Pseudoklasser gør det nemt at implementere dynamiske brugerflader og styling baseret på specifikke betingelser, hvilket gør det muligt at designe, der reagerer på brugerinteraktion eller indholdsstruktur.
Grundlæggende syntaks for pseudoklasser
Den grundlæggende syntaks for pseudoklasser er som følger.
1selector:pseudo-class {
2 /* Styles */
3}
selector
er det målrettede element.- Delen
pseudo-class
repræsenterer en pseudoklasse, der angiver en specifik tilstand eller betingelse. :
anvendes til at vælge pseudoklasser.
Ofte brugte pseudoklasser
:hover
1a:hover {
2 color: red;
3}
:hover
anvender styles, når musemarkøren svæver over et element.- I dette eksempel ændrer tekstfarven sig til rød, når musen svæver over et link.
:focus
1input:focus {
2 outline: 2px solid blue;
3}
:focus
anvender styles, når et element modtager fokus. Det bruges hovedsageligt til form-elementer og links.- I dette eksempel vises en blå kantlinje, når et
input
-element har fokus.
:active
1button:active {
2 background-color: green;
3}
:active
anvender styles på et element, når det er aktivt (mens det bliver klikket på).- I dette eksempel ændrer baggrundsfarven sig til grøn, mens knappen bliver klikket på.
:empty
1.box:empty {
2 background-color: lightgray;
3 border: 1px dashed black;
4 height: 50px;
5 width: 50px;
6}
:empty
pseudo-klassen bruges til at anvende styles på elementer, der ikke har nogen børn. Det målrettede element må ikke indeholde tekstnoder, mellemrum eller kommentarer.- I dette eksempel bliver en grå baggrund og en sort stiplet kant anvendt på et element med klassen
box
, hvis det ikke indeholder noget. Hvis der er mellemrum, bliver stilen ikke anvendt.
: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}
-
:valid
er en stil, der anvendes på formelementer med gyldige inputværdier.:valid
-stilen anvendes, når betingelser angivet af HTML-attributter sompattern
ellertype
(f.eks.email
) er opfyldt. -
:invalid
er en stil, der anvendes på formelementer med ugyldige inputværdier.:invalid
-stilen anvendes, når et formelement ikke opfylder HTML-valideringsregler (f.eks.type="email"
). -
I dette eksempel vises en grøn kant, hvis den indtastede tekst er 5 eller flere tegn lang, som angivet af
pattern
-attributten. Hvis den indtastede tekst er mindre end 5 tegn, vises en rød kant.
: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}
-
:in-range
er en stil, der anvendes, når et numerisk inputelement har en værdi inden for et angivet interval.:in-range
-stilen anvendes, når betingelserne angivet afmin
- ogmax
-attributterne i HTML er opfyldt. -
:out-of-range
er en stil, der anvendes, når et numerisk inputelement har en værdi uden for det angivne interval.:out-of-range
-stilen anvendes, når værdien overskrider intervallet angivet afmin
- ellermax
-attributterne. -
I dette eksempel, når en værdi inden for intervallet angivet af
min="18"
ogmax="99"
(inklusive 18 til 99) indtastes, vises en blå kant. Når en værdi uden for intervallet indtastes, vises en orange kant.
:nth-child()
1li:nth-child(2) {
2 color: blue;
3 font-weight: bold;
4}
:nth-child()
anvender styles baseret på en børns position inden for dets forældrelement. Du kan specificere et tal eller et udtryk forn
.- I dette eksempel bliver teksten på det andet listepunkt blå.
Anvendelse på ulige og lige elementer
1li:nth-child(odd) {
2 background-color: lightblue;
3}
4
5li:nth-child(even) {
6 background-color: steelblue;
7}
- Ved at angive
even
ellerodd
kan du anvende styles på ulige eller lige elementer. - I dette eksempel bliver forskellige baggrundsfarver anvendt på lige og ulige rækker. Dette kan for eksempel bruges til at designe stribede tabeller.
:first-child
1small:first-child {
2 font-weight: bold;
3 color: steelblue;
4}
:first-child
anvender styles på det første børneelement af et forældreelement.- I dette eksempel bliver teksten i det første
small
element gjort fed og får en blå nuance.
:last-child
1small:last-child {
2 font-weight: bold;
3 color: seagreen;
4}
:last-child
anvender styles på det sidste børneelement af et forældreelement.- I dette eksempel bliver teksten i det sidste
small
element gjort fed og får en grøn nuance.
:has()
1p:has(span.child) {
2 border: 2px solid black;
3}
:has()
pseudo-klassen i CSS fungerer som en forældervælger. Ved at bruge denne pseudo-klasse kan du vælge et forældreelement baseret på tilstedeværelsen af børneelementer.- I dette eksempel anvendes
border
påp
-elementer, der indeholderspan
-elementer med klassen.child
.
:not()
1q:not(.quote2) {
2 font-weight: bold;
3 color: steelblue;
4}
:not()
anvender styles på elementer, der ikke opfylder specifikke kriterier.- I dette eksempel bliver teksten på
q
-elementer, undtagen dem med klassenquote2
, gjort fed og får en blå nuance.
: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}
:where()
pseudo-klassen er en speciel CSS-vælger, der sætter specificiteten til nul. Dette er nyttigt, når du ønsker at håndtere flere vælgere samlet og anvende styles uden at påvirke specificiteten af de valgte elementer.:is()
pseudo-klassen grupperer flere vælgere og vælger elementer, der opfylder nogen af betingelserne.:is()
pseudo-klassen har samme specificitet som normale vælgere, men anvender styles baseret på den højeste specificitet blandt sine interne vælgere.- I dette eksempel bruges
:where()
og:is()
til at anvende styles på<p>
-elementer og<span>
-elementer inden fordetail
-klassen. Dentext-decoration
style, der er sat af:where()
, bliver tilsidesat af efterfølgende CSS. Dog har stilen, der er sat af:is()
, en højere specificitet og bliver ikke tilsidesat af efterfølgende CSS.
:checked
1input:checked {
2 outline: 4px solid red;
3}
:checked
anvender styles, når en checkbox eller radioknap er valgt.- I dette eksempel vises en rød ramme omkring det valgte input-element.
:disabled
1button:disabled {
2 background-color: gray;
3 cursor: not-allowed;
4}
:disabled
anvender styles på deaktiverede formelementer.- I dette eksempel anvendes en grå baggrund og en 'not-allowed'-cursor på den deaktiverede knap.
:visited
1.link:visited {
2 color: purple;
3}
:visited
bruges til at anvende styles på besøgte links.- I dette eksempel ændres tekstfarven på
<a>
-elementet til lilla efter at have klikket på og besøgt linket.
Privatliv og style-begrænsninger
:visited
har visse style-begrænsninger af hensyn til privatlivsbeskyttelse. Dette forhindrer eksterne sider i at udlede brugerens besøgsoversigt. De egenskaber, der kan ændres med :visited
, er begrænset til følgende:.
color
background-color
border-color
outline-color
column-rule-color
text-decoration-color
fill
stroke
På den anden side kan egenskaber udover disse (f.eks. display
, visibility
, position
osv.) ikke ændres med :visited
. Dette forhindrer, at brugerens privatliv afsløres gennem besøgsoversigten.
:first-of-type
1.first-example :first-of-type {
2 font-weight: bold;
3 color: steelblue;
4}
:first-of-type
vælger det første element af sin type (med samme tag-navn) inden for dets forældre-element.- I dette eksempel styles teksten af det første
<var>
-element og<code>
-element ifirst-example
-klassen med fed blå.
:last-of-type
1.last-example :last-of-type {
2 font-weight: bold;
3 color: seagreen;
4}
:last-of-type
vælger det sidste element af sin type inden for dets forældre-element.- I dette eksempel styles teksten af det sidste
<var>
-element og<code>
-element ilast-example
-klassen med fed grøn.
:nth-of-type()
1.nth-example :nth-of-type(2) {
2 font-weight: bold;
3 color: lightsalmon;
4}
:nth-of-type()
anvender styles på det nte element af samme type.- I dette eksempel styles teksten af det andet
<var>
-element og<code>
-element inth-example
-klassen med fed orange.
Pseudo-elementer
Pseudo-elementer i CSS bruges til at anvende styles på specifikke dele af det valgte element. I modsætning til pseudo-klasser fokuserer pseudo-elementer på specifikke dele af et element frem for hele elementet. For eksempel bruges de til at tilføje indhold før eller efter et element eller anvende stilarter på specifikke tegn eller linjer.
Grundlæggende syntaks for pseudo-elementer
Pseudo-elementer skrives normalt med ::
(dobbelt kolon) efter vælgeren. Dette er for at skelne dem fra pseudo-klasser.
1selector::pseudo-element {
2 /* Styles */
3}
selector
er det målrettede element.pseudo-element
-delen repræsenterer et pseudo-element, der henviser til en specifik del eller et aspekt af et element.- Du kan angive et pseudo-element ved at bruge
::
.
Almindeligt brugte pseudo-elementer
::before
1span.note::before {
2 content: "Note: ";
3 color: red;
4}
-
::before
indsætter virtuelt indhold før et elements indhold og anvender stilarter på den del. Det er nyttigt til for eksempel at indsætte ikoner eller etiketter. -
I dette eksempel indsættes teksten "Note:" før
<span>
-elementer med klassennote
. Indholdet, der er angivet her, eksisterer ikke i den faktiske HTML; det tilføjes virtuelt gennem CSS. Dette betyder, at du ikke direkte kan manipulere med indhold, der er tilføjet via JavaScript osv.
::after
1span.five-stars::after {
2 content: "*****";
3 color: gold;
4}
::after
indsætter virtuelt indhold efter et elements indhold. Det bruges typisk til at tilføje supplerende eller dekorativt indhold efter et element.- I dette eksempel tilføjes et gyldent stjerneikon efter
<span>
-elementet med klassenfive-stars
.
::placeholder
1input::placeholder {
2 color: rgba(0, 150, 150, 0.7);
3 font-size: 14px;
4 font-style: italic;
5}
- Pseudo-elementet
::placeholder
bruges til at style pladsholderteksten i formelementer. Som standard vises det normalt i lys grå tekst, men med pseudo-elementet::placeholder
kan du ændre stilen, så den passer til dit design. - I dette eksempel er pladsholdertekstens farve for
input
-elementet indstillet til 70% transparent blå, skrifttypestørrelsen til14px
og kursiveret.
::first-letter
1p.first::first-letter {
2 font-size: 2em;
3 color: blue;
4}
::first-letter
anvender stil til det første bogstav i et blokniveau-element. Det bruges til typografiske effekter som dem, der ses i magasiner eller aviser, hvor det første bogstav fremhæves. Bemærk, at dette pseudo-element kun er effektivt på blokniveau-elementer og ikke kan anvendes direkte på inline-elementer som<span>
.- I dette eksempel vil det første bogstav i afsnittet være dobbelt så stort, fedt og blåt.
::first-line
1p.second::first-line {
2 font-weight: bold;
3 color: green;
4}
::first-line
anvender stil på den første linje i et blok-element. Den bruges især til tekstafsnit, så du kan anvende forskellige stilarter på den første linje.- I dette eksempel vil den første linje i afsnittet være fed og grøn.
::selection
1span::selection {
2 background-color: yellow;
3 color: black;
4}
::selection
anvender stilarter på den del af teksten, der er valgt (fremhævet) af brugeren. Med dette kan du ændre baggrundsfarven og tekstfarven, når teksten er valgt.- I dette eksempel, når teksten i et
<span>
-element vælges, bliver baggrunden gul, og teksten bliver sort.
Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.