Pseudo-elements Flashcards

1
Q

What is a pseudo-element?

A

A CSS pseudo-element is a keyword added to a selector that lets you style a specific part of the selected element(s).

Syntax

selector::pseudo-element {
  property: value;
}

For example, ::first-line can be used to change the font of the first line of a paragraph.

/* The first line of every <p> element. */
p::first-line {
  color: blue;
  text-transform: uppercase;
}

Double colons (::) are used for pseudo-elements. This distinguishes pseudo-elements from pseudo-classes that use single colon (:) in their notation.

Restrictions

  • You can use only one pseudo-element in a selector.
  • The pseudo-element must appear after all the other components in the complex or compound selector in which it appears.

For example, you can select a paragraph’s first line using p::first-line but not the first-line’s children or a hovered first line. So both p::first-line > * and p::first-line:hover are invalid.

While it is not possible to select an element based on its state by using pseudo-elements, a pseudo-element can be used to select and style a part of an element that already has a state applied to it.

For example, p:hover::first-line selects the first line (pseudo-element) of a paragraph when the paragraph itself is being hovered (pseudo-class).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

::after pseudo-element

A

In CSS, ::after creates a pseudo-element that is the last child of the selected element. It is often used to add cosmetic content to an element with the content property. It is inline by default.

Note: The pseudo-elements generated by ::before and ::after are contained by the element’s formatting box, and thus don’t apply to replaced elements such as <img>, or to <br> elements.

Syntax

\::after {
  content: /* value */;
  /* properties */
}

If the content property is not specified, has an invalid value, or has normal or none as a value, then the ::after pseudo-element is not rendered. It behaves as if display: none is set.

Accessibility concerns

Using an ::after pseudo-element to add content is discouraged, as it is not reliably accessible to screen readers.

Examples:

.exciting-text::after {
  content: " <- EXCITING!";
  color: green;
}

.boring-text::after {
  content: " <- BORING";
  color: red;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

::before pseudo-element

A

In CSS, ::before creates a pseudo-element that is the first child of the selected element. It is often used to add cosmetic content to an element with the content property. It is inline by default.

Note: The pseudo-elements generated by ::before and ::after are boxes generated as if they were immediate children of the element on which they are applied, or the “originating element,” and thus can not apply to replaced elements, such as <img>, whose content is outside the scope of the CSS formatting model.

Syntax

\::before {
  content: /* value */;
  /* properties */
}

If the content property is not specified, has an invalid value, or has normal or none as a value, then the ::before pseudo-element is not rendered. It behaves as if display: none is set.

Examples:

q::before {
  content: "«";
  color: blue;
}

q::after {
  content: "»";
  color: red;
}

Accessibility concerns

Using a ::before pseudo-element to add content is discouraged, as it is not reliably accessible to screen readers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

::backdrop pseudo-element

A

The ::backdrop CSS pseudo-element is a box the size of the viewport, which is rendered immediately beneath any element being presented in the top layer.

Syntax

\::backdrop {
  /* ... */
}

Description
Backdrops appear in the following instances:

When multiple elements have been placed into the top layer, each one has its own ::backdrop pseudo-element.

/* Backdrop is only displayed when dialog is opened with dialog.showModal() */
dialog::backdrop {
  background: rgb(255 0 0 / 25%);
}

Elements are placed in a last-in/first out (LIFO) stack in the top layer. The ::backdrop pseudo-element makes it possible to obscure, style, or completely hide everything located below a top layer element.

::backdrop neither inherits from nor is inherited by any other elements. No restrictions are made on what properties apply to this pseudo-element.

Examples:
Styling the backdrop for fullscreen video
In this example, the backdrop style used when a video is shifted to fullscreen mode is configured to be a grey-blue color rather than the black it defaults to in most browsers.

video::backdrop {
  background-color: #448;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

::file-selector-button pseudo-element

A

The ::file-selector-button CSS pseudo-element represents the button of an <input> of type="file".

Syntax

selector::file-selector-button

Examples:

HTML

<form>
  <label for="fileUpload">Upload file</label>
  <input type="file" id="fileUpload" />
</form>

CSS

input[type="file"]::file-selector-button {
  border: 2px solid #6c5ce7;
  padding: 0.2em 0.4em;
  border-radius: 0.2em;
  background-color: #a29bfe;
  transition: 1s;
}

input[type="file"]::file-selector-button:hover {
  background-color: #81ecec;
  border: 2px solid #00cec9;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

::first-letter pseudo-element

A

The ::first-letter CSS pseudo-element applies styles to the first letter of the first line of a block container, but only when not preceded by other content (such as images or inline tables).

Only a small subset of CSS properties can be used with the ::first-letter pseudo-element please check this link to see the full list.

Syntax

\::first-letter {
  /* ... */
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

::part() pseudo-element

A

The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute.

Syntax

\::part(<ident>+) {
  /* ... */
}

Example:

custom-element::part(foo) {
  /* Styles to apply to the `foo` part */
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

::placeholder pseudo-element

A

The ::placeholder CSS pseudo-element represents the placeholder text in an <input> or <textarea> element.

Syntax

\::placeholder {
  /* ... */
}

Note: Placeholders are not a replacement for the <label> element. Without a label that has been programmatically associated with an input using a combination of the for and id attributes, assistive technology such as screen readers cannot parse <input> elements.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

::selection pseudo-element

A

The ::selection CSS pseudo-element applies styles to the part of a document that has been highlighted by the user (such as clicking and dragging the mouse across text).

Allowable properties
Only certain CSS properties can be used with ::selection:

In particular, background-image is ignored.

Syntax

\::selection {
  /* ... */
}

Examples:

/* Make selected text gold on a red background */
\::selection {
  color: gold;
  background-color: red;
}

/* Make selected text in a paragraph white on a blue background */
p::selection {
  color: white;
  background-color: blue;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly