Find-in-Page Highlight Styling
The browser find-in-page feature is intended to allow users to identify where a search term appears in the page. Browsers highlight the locations of the string using highlights, typically one color for the active match and another color for the other matches. Both Chrome and Firefox have this behavior, and problems arise when the default browser color offers poor contrast in the page, or can be easily confused with other highlighted content.
Safari works around this problem by applying an overlay and painting search highlights on top. But what can be done in Chrome and Firefox?
The newly available ::search-text
pseudo highlight provides styling for the
find-in-page highlight using CSS. Within a ::search-text
rule you can use
properties for colors (text and background), text decorations such as underlines,
and shadows. A companion ::search-text:current
selector matches the active
find-in-page result and can be styled separately.
As an example, let’s color find-in-page results green and add a red underline for the active match:
<style>
:root::search-text {
color: green;
}
:root::search-text:current {
color: green;
text-decoration: red solid underline;
}
</style>
<p>Find find in this example of find-in-page result styling.</p>
In general, the find-in-page markers should be consistent across the entire page,
so we recommend that you define the ::search-text
properties on the root. All
other elements will inherit the pseudo class through the
highlight inheritence
mechanism.
Note that if you do not specify ::serach-text:current
,
the active match will use the same styling as inactive matches. In practice, it is best
to always provide styles for ::search-text:current
when defining ::search-text
, and
vice versa, with sufficient difference in visual appearance to make it clear to users
which is the active match.
This feature is available in Chrome 136.0.7090.0 and later, when “Experimental Web Platform features” is enabled with chrome://flags. It will likely be available to all users in Chrome 138.
Accessibility Concerns #
Modifying the appearance of user agent features, such as find-in-page highlighting,
has significant potential to hurt users through poor contrast, small details, or other
accessibility problems. Always maintain good contrast with all the backgrounds present
on the page. Ensure that ::search-text
styling is unambiguous. Include find-in-page
actions in your accessibility testing.
Find-in-page highlight styling is beneficial when the native markers pose accessibility problems, such as poor contrast. It’s one of the motivations for providing this feature.
Privacy Concerns #
User find-in-page actions express personal information, so steps have been
taken to ensure that sites cannot observe the presence or absence of find-in-page
results. Computed style queries in Javascript will report the presence of
::search-text
styles regardless of whether or not they are currently rendered
for an element.
Thanks #
The implementation of CSS Search Text Features was undertaken by Igalia S.L. funded by Bloomberg L.P.
- Previous: Canvas Localization Support