:current

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The :current CSS pseudo-class selector represents an element or the ancestor of an element that is currently being displayed or highlighted.

Syntax

css
:current {
  /* ... */
}

:current(<compound-selector-list>) {
  /* ... */
}

Description

The :current pseudo-class is used to represent the "currently displayed" element out of a series of elements.

This can mean "current" in terms of time: :current can be used to target the currently displayed captions or subtitles (represented using WebVTT) that are associated with a playing video.

It can also refer to the currently highlighted element in a series. For example, :current can be combined with the ::search-text pseudo-element to provide specific styles to the currently-focused search result from the browser's "Find in page" text search feature.

For example:

css
p::search-text {
  color: white;
  background-color: purple;
}

p::search-text:current {
  background-color: crimson;
}

Examples

Custom styles for text search results

This example shows how to use ::search-text and :current to create custom styles for your browser's "Find in page" search results.

HTML

The HTML consists of a basic paragraph of text. We won't show the HTML source, both for brevity, and so that it is easier to navigate the search results in the rendered example.

CSS

In our CSS, we start by styling the ::search-text pseudo-element. We give it custom background-color, color, and text-shadow styles.

css
::search-text {
  background-color: purple;
  color: white;
  text-shadow: 1px 1px 1px black;
}

Finally, we style the currently-focused search result via ::search-text:current, providing it with a different background-color and some text-decoration styles so that it is distinguishable from the rest of the results.

css
::search-text:current {
  background-color: crimson;
  text-decoration-line: underline;
  text-decoration-color: yellow;
  text-decoration-thickness: 3px;
}

Result

The example renders as follows:

Try using the browser's find in page interface to find a word that appears multiple times in the example text, such as "aliquam", "amet", or "tortor". Move between the previous and next results to check out the :current styling.

Styling currently-shown WebVTT subtitles

CSS

css
:current(p, span) {
  background-color: yellow;
}

HTML

html
<video controls preload="metadata">
  <source src="video.mp4" type="video/mp4" />
  <source src="video.webm" type="video/webm" />
  <track
    label="English"
    kind="subtitles"
    srclang="en"
    src="subtitles.vtt"
    default />
</video>

WebVTT

WEBVTT FILE

1
00:00:03.500 --> 00:00:05.000
This is the first caption

2
00:00:06.000 --> 00:00:09.000
This is the second caption

3
00:00:11.000 --> 00:00:19.000
This is the third caption

Specifications

This feature does not appear to be defined in any specification.

Browser compatibility

See also