::picker-icon CSS pseudo-element

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

The ::picker-icon CSS pseudo-element targets the picker icon inside form controls that have an icon associated with them. In the case of a customizable select element, it selects the arrow icon shown on the <select> element that points down when it is closed.

Syntax

css
::picker-icon {
  /* ... */
}

Description

The ::picker-icon pseudo-element targets the picker icon of form controls, that is, the icon shown on the control button. It is only available to target when the originating element has a picker and has base appearance set on it via the appearance property base-select value. Its generated box appears after any boxes generated by the ::after pseudo-element, with the icon specified in default browser stylesheet; you can customize it using the content property.

The ::picker-icon selector can be used to select the down-facing arrow on the inline-end side of a customizable select element. This is useful for example if you want to customize the color or size of the icon, use a different icon (using content or SVG), or animate it when the picker is opened and closed.

Selecting customizable <select> picker icons is the only current use case for ::picker-icon, but more may be added in the future.

Note: The ::picker-icon pseudo-element is not included in the accessibility tree, so any generated content set on it will not be announced by assistive technologies. You should still make sure that any new icon you set visually makes sense for its intended purpose.

Examples

Animating the picker icon

To opt-in to customizable select functionality, the <select> element and its picker both need to have an appearance value of base-select set on them:

css
select,
::picker(select) {
  appearance: base-select;
}

You could then, for example, target the ::picker-icon and give it a custom color and a transition so that changes to its rotate property are smoothly animated:

css
select::picker-icon {
  color: #999999;
  transition: 0.4s rotate;
}

In the next rule, ::picker-icon is combined with the :open pseudo-class — which targets the icon only when the picker is open — transitioning it to a rotate value of 180deg when the <select> is opened.

css
select:open::picker-icon {
  rotate: 180deg;
}

See Styling the picker icon for a full example that uses this code, along with a live example rendering.

Specifications

Specification
CSS Form Control Styling Level 1
# picker-icon

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
::picker-icon
Chrome – Full support
Chrome 133 (Release date: 2025-02-04)
footnote Full support
Edge – Full support
Edge 133 (Release date: 2025-02-06)
footnote Full support
Firefox – No support
Firefox
footnote No support
Opera – Full support
Opera 118 (Release date: 2025-04-15)
footnote Full support
Safari – Preview support
Safari TP
footnote Preview browser support
Chrome Android – Full support
Chrome Android 133 (Release date: 2025-02-04)
footnote Full support
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – Full support
Opera Android 88 (Release date: 2025-03-19)
footnote Full support
Safari on iOS – No support
Safari on iOS
footnote No support
Samsung Internet – Full support
Samsung Internet 29 (Release date: 2025-10-25)
footnote Full support
WebView Android – Full support
WebView Android 133 (Release date: 2025-02-04)
footnote Full support
WebView on iOS – No support
WebView on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support

See also