Skip to content

Conversation

josepharhar
Copy link
Contributor

@josepharhar josepharhar commented Oct 3, 2024

This PR adds a stylesheet for customizable select which applies when the select element has base appearance.

Discussion here: w3c/csswg-drafts#10857

Customizable select proposal: #9799

(See WHATWG Working Mode: Changes for more details.)


/infrastructure.html ( diff )
/rendering.html ( diff )


<!-- TODO should this go at the top of the section right below "the select element"? -->
<p>The following styles are expected to apply to <code>select</code> elements when they are being
rendered as a <span>drop-down box</span> with <span>base appearance</span>:</p>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where do we define what base computes to when it's a list box?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this iteration I'm not proposing supporting base appearance on list box rendering. In chromium, I am making it do the same thing as appearance:auto, and our plan to do forward compat is to add a CSS @supports rule when appearance:base is ready for list box rendering.

@annevk annevk added the topic: select The <select> element label Nov 8, 2024
Copy link
Member

@annevk annevk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nt1m have you had a chance to review this?

@josepharhar
Copy link
Contributor Author

I just updated this PR to match the latest styles from the CSS issue.

I'm not sure what we should say about properties that are supposed to be inherited, like color and font. Should we explicitly say color:inherit? Should we have some text which says that all properties not listed here should be whatever their unset value is? Should we just say that other UA styles should not apply?

There is a bunch of UA styles in chromium I have to undo by adding extra CSS, and while I don't want to list all those properties specifically in this spec I also think it would be a good idea to mention that when implementing this feature, you have to undo those.

@domenic
Copy link
Member

domenic commented Feb 28, 2025

I think we need to list all those properties explicitly in the spec! Why would we not?

@annevk
Copy link
Member

annevk commented Feb 28, 2025

I think @josepharhar is describing Chromium's implementation of "base appearance", as in principle "base appearance" would start from an unstyled element so you would not have to undo styling, unless it was some global style.

@domenic
Copy link
Member

domenic commented Feb 28, 2025

I see. That's probably covered by the CSS spec for appearance: base then?

@josepharhar
Copy link
Contributor Author

Agreed! I'll omit the properties which have their default.

Copy link
Member

@domfarolino domfarolino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I recommend we merge this in one week since I haven't seen any further objections, and I think it's ready to go.

This prevents authors from breaking accessibility
source Outdated
Comment on lines 138075 to 138076
min-block-size: max(24px, 1lh);
min-inline-size: 24px;
Copy link
Member

@nt1m nt1m Apr 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think @dbaron had thoughts on better defaults for these so they can work better in flexbox/grid

Copy link
Collaborator

@scottaohara scottaohara Apr 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so long as the minimum sizing doesn't fall below 24px height/width. these were specifically added so that the customizable select would meet the WCAG 2.2 minimum target size success criterion by default.

text-transform: initial;
text-align: initial;
text-indent: initial;
background-color: transparent;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chrome seems to set this to color-mix(in lab, currentColor 10%, transparent) in Forced colors mode. Should that be copied to this PR or should chrome actually just be keeping this as transparent?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chrome also seems to set different values in forced colors mode for a few other properties too.

Such as the selects border both normally and on hover.

The hover background change for the options is also lost in forced colors mode too?

I think it would be good to define how all this is expected to work to ensure we're interopable in that mode too.

@josepharhar josepharhar mentioned this pull request Jun 11, 2025
5 tasks
@josepharhar
Copy link
Contributor Author

This PR won't be merged and will instead be included in a bigger PR including all customizable select PRs: #10548

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
addition/proposal New features or enhancements topic: forms topic: rendering topic: select The <select> element
Development

Successfully merging this pull request may close these issues.

8 participants