RSS FeedTwitterMastodonBlueskyShare IconHeart IconGithub IconArrow IconClock IconGUI Challenges IconHome IconNote IconBlog IconCSS IconJS IconHTML IconShows IconGit IconSpeaking IconTools Icon
Example selects are shown in light mode and dark mode
My google avatar.

Custom <select> boilerplate + transitions

2 min read
css

Sharing this here because it's an important starting place for working with "customizable selects."

The Boilerplate #

The first step is to give the select and it's picker appearance: base-select, which signals that you intend to build up a select from a set of base styles.

Then enable transitions on the ::picker popover.

Lastly, hook into the :open pseudo class and provide the enter and exit stage animations.

select {
  &, &::picker(select) {
    appearance: base-select;
  }
  
  &::picker(select) {
    transition: 
      display allow-discrete 1s, 
      opacity 1s, 
      overlay 1s allow-discrete
    ;
  }
  
  &:not(:open)::picker(select) {
    opacity: 0;
  }
  
  &:open::picker(select) {
    opacity: 1;
    
    @starting-style {
      opacity: 0;
    }
  }
}

Where & How to try it #

Try it on Codepen:

  1. With Canary
  2. Enable web experiments

What can I do with this? #

Glad you asked!

Here's the Codepen for the demo video at the beginning of this post:

Mentions #

Join the conversation on

53 likes
10 reposts
  • ???? Leviano Cadeirudo ????
  • Andy Bell
  • Cu & Código
  • a blocked post
  • Andy
  • Keith J Grant
  • Tony Ward
  • Ross McKay
  • Fynn Becker
  • Nilesh Prajapati

@argyleink can't come soon enough

Sara Joy :happy_pepper:Sara Joy :happy_pepper:

@argyleink wow thats damn pretty!

wakest ⁂wakest ⁂

Crawl the CSS Webring?

previous sitenext site
a random site