20 CSS Custom Select Dropdowns

20 hand-coded CSS custom select dropdown templates for checkout, dashboards, and SaaS forms — country selector with flag chips, currency picker with USD / EUR / GBP symbols, credit card type selector with Visa / Mastercard / Amex marks, three-tier pricing plan switcher, user avatar profile menu, minimalist language switcher with native + English names, B2B workspace switcher with team badges, dark-mode theme selector (Light / Dark / System), multi-select tag dropdown with removable chips, status filter with In Progress / Completed pills, date-range picker with Last 7 Days presets, product sorting filter, dropdown with option subtext, font-family preview picker, file-type media uploader with PDF / CSV / PNG icons, color swatch picker, Tailwind-style utility select, slide/fade transition dropdown, floating-label form select, and a glassmorphism dark-UI dropdown with backdrop blur. Every widget ships role="listbox", aria-expanded, arrow-key navigation, Enter/Space commit, Escape close, and focus return — the WAI-ARIA combobox pattern for accessible custom selects. Scoped under .cs-NN for no-collision pasting, prefers-reduced-motion guarded on every open/close animation, framework-agnostic (Tailwind arbitrary values + React / Vue / Next mappings documented per demo).

20 light JSPublished

Related16 CSS Floating Label Inputs22 CSS Dropdown Menu Designs20 CSS Popovers

CSS Country Selector Dropdown With Flags — preview
01 / 20CSS + JS

CSS Country Selector Dropdown With Flags

An accessible country picker with pure-CSS SVG-style flag chips, keyboard arrow navigation, and a smooth discrete-property open animation for shipping and checkout forms.

Published

CSS Currency Picker Dropdown With Symbols — preview
02 / 20CSS + JS

CSS Currency Picker Dropdown With Symbols

A compact currency selector showing bold symbol badges, ISO codes, and full names in a monospace-aligned layout, with a glowing gradient trigger suited to fintech checkout UIs.

Published

CSS Credit Card Type Selector Dropdown — preview
03 / 20CSS + JS

CSS Credit Card Type Selector Dropdown

A payment-method dropdown rendering pure-CSS card brand marks (Visa, Mastercard, Amex) beside masked card numbers, styled as a dark glass fintech control.

Published

CSS Pricing Plan Switcher Dropdown — preview
04 / 20CSS + JS

CSS Pricing Plan Switcher Dropdown

A checkout-ready plan selector where each tier shows a colored gradient orb, plan name, and per-month price, with an animated highlight bar that glides to the active row.

Published

CSS User Avatar Profile Dropdown Menu — preview
05 / 20CSS + JS

CSS User Avatar Profile Dropdown Menu

A navbar-anchored profile menu with a gradient monogram avatar, a header card showing name and email, grouped menu items with icons, and a distinct destructive logout row.

Published

CSS Minimalist Language Switcher Dropdown — preview
06 / 20CSS + JS

CSS Minimalist Language Switcher Dropdown

A tiny globe-icon language switcher for clean headers, expanding to a compact list of languages with native names and a subtle check on the active locale.

Published

CSS Account Workspace Switcher Dropdown — preview
07 / 20CSS + JS

CSS Account Workspace Switcher Dropdown

A B2B SaaS workspace switcher with rounded team logos, member counts, plan badges, and a pinned 'Create workspace' action at the bottom of the panel.

Published

CSS Dark Mode Theme Selector Dropdown — preview
08 / 20CSS + JS

CSS Dark Mode Theme Selector Dropdown

A Light / Dark / System theme picker with inline sun, moon, and monitor SVG icons and a live preview swatch, wired so the demo container actually re-themes on selection.

Published

CSS Multi-Select Tag Dropdown With Chips — preview
09 / 20CSS + JS

CSS Multi-Select Tag Dropdown With Chips

A multi-select dropdown that injects removable chips into the field as you check options, with a live count, checkbox rows, and an x-to-delete on every chip.

Published

CSS Status Filter Badge Dropdown Select — preview
10 / 20CSS + JS

CSS Status Filter Badge Dropdown Select

A task-status filter where each option is a colored pill — amber In Progress, green Completed, gray Backlog — with a matching dot, mirrored into the trigger on select.

Published

CSS Date Range Time Period Picker Dropdown — preview
11 / 20CSS + JS

CSS Date Range Time Period Picker Dropdown

An analytics date-range dropdown with quick presets (Last 7 Days, Month to Date, Custom Range), each showing its resolved date span as muted subtext and a calendar-icon trigger.

Published

CSS Product Sorting Filter Dropdown — preview
12 / 20CSS + JS

CSS Product Sorting Filter Dropdown

A retail sort dropdown (Featured, Price low→high, Newest, Rating) with directional arrow icons and an animated active-state underline that slides beneath the current option.

Published

CSS Dropdown With Subtext And Descriptions — preview
13 / 20CSS + JS

CSS Dropdown With Subtext And Descriptions

A rich two-line option dropdown pairing a bold title with a descriptive second line and a leading gradient icon tile, ideal for plan or role pickers that need context.

Published

CSS Font Family Preview Picker Dropdown — preview
14 / 20CSS + JS

CSS Font Family Preview Picker Dropdown

An editor-style font picker where each option renders its own label in that font family, with a live preview sentence and a monospace/serif/sans category tag.

Published

CSS File Type Media Uploader Dropdown — preview
15 / 20CSS + JS

CSS File Type Media Uploader Dropdown

An upload-field dropdown listing accepted formats (PDF, CSV, PNG, MP4) each with a colored file-type badge, size limit subtext, and a dashed drop-zone trigger.

Published

CSS Color Swatch Picker Dropdown — preview
16 / 20CSS + JS

CSS Color Swatch Picker Dropdown

A color picker dropdown where each option leads with a real colored swatch circle, shows the color name and hex, and previews the chosen color as a glowing ring on the trigger.

Published

CSS Tailwind Style Utility First Select Dropdown — preview
17 / 20CSS + JS

CSS Tailwind Style Utility First Select Dropdown

A clean utility-first select mimicking Tailwind's aesthetic — subtle ring focus, rounded-lg surfaces, gray-scale palette, and an indigo accent — ready to translate to utility classes.

Published

CSS Animated Slide Fade Dropdown Transition — preview
18 / 20CSS + JS

CSS Animated Slide Fade Dropdown Transition

A dropdown focused purely on the open/close choreography — options cascade in with staggered slide-and-fade, and the panel itself expands with a spring while a blurred backdrop settles.

Published

CSS Floating Label Select Dropdown Field — preview
19 / 20CSS + JS

CSS Floating Label Select Dropdown Field

A full-width form select where the label floats up into the border once a value is chosen or the field is focused, matching Material-style text-field behavior.

Published

CSS Glassmorphism Dark UI Dropdown Select — preview
20 / 20CSS + JS

CSS Glassmorphism Dark UI Dropdown Select

A design-forward glassmorphism dropdown over an animated aurora backdrop, using backdrop-filter blur, layered translucency, and a subtle border sheen for a premium SaaS feel.

Published

FAQ

Frequently asked questions

What is a CSS custom select dropdown, and why customize the native <select> element?
A CSS custom select is a hand-coded replacement for the browser's native because browsers historically restricted what CSS could style: the option list, the highlight color, the padding, the icons — all locked. The workarounds (like replacing ships. Focus management: on close, focus MUST return to the trigger (not the document body, not the panel that just disappeared) — otherwise screen-reader users lose their place. Every demo in this gallery implements this contract with ~40 lines of vanilla JavaScript per demo — no library required. WCAG 2.1 SC 2.1.1 (Keyboard), 2.1.2 (No Keyboard Trap), 2.4.3 (Focus Order), 2.4.7 (Focus Visible), 4.1.2 (Name, Role, Value) all pass by construction. prefers-reduced-motion: reduce guards every open / close animation.
Should I style the native <select> with appearance: base-select, or build a custom listbox?
As of 2026, appearance: base-select (paired with the ::picker(select) pseudo-element) lets you style the native cannot render even under base-select — or if you need Safari and Firefox parity today — build a custom role="combobox" + role="listbox" widget with the ARIA pattern described above. This gallery's 20 demos all ship the custom-listbox pattern precisely because they render rich per-option content that the native , so pre-fill the trigger from the user's saved address book on page load if you have it — read PublicKeyCredential metadata or your own user profile). US-specific: if you also ship a state-of-shipping dropdown (Demo 07's B2B workspace pattern is a good template — swap the workspace icon for a US state flag), watch for California's Consumer Privacy Act — you may need to display a CCPA opt-out link when California is selected.
Which CSS custom select pattern works best for CRM and project-management filter dropdowns (Linear, Jira, Notion)?
Demo 09 Multi-Select Tag Dropdown With Chips and Demo 10 Status Filter Badge Dropdown Select are the two patterns Linear, Jira, Airtable, and Notion converged on for filter surfaces. Demo 09 (multi-select tag) ships the pattern for filtering tickets, tasks, or records by multiple tags simultaneously: the trigger displays currently-selected tags as removable chips (each chip has an inline × button that removes only that tag without closing the panel), the panel shows all available tags with checkboxes, and typing filters the panel down to matching tags. Full ARIA: the trigger is role="combobox" with aria-expanded and aria-multiselectable="true", each panel item is role="option" with aria-selected reflecting the checkbox state, and each in-trigger chip is a
How do I ship a language switcher dropdown for a legal, healthcare, or multi-jurisdiction compliance website?
Demo 06 Minimalist Language Switcher Dropdown ships the base pattern — a globe icon trigger + panel of language options with both native and English names (e.g., "Deutsch (German)", "Français (French)", "日本語 (Japanese)"). For legal, healthcare, insurance, or multi-jurisdiction compliance sites the pattern requires additional care beyond the base ARIA contract. Rendering the language name in its OWN script (Deutsch in Latin script, 日本語 in kanji, العربية in Arabic script) is a WCAG 3.1.2 (Language of Parts) requirement — screen readers switch pronunciation engines based on the lang attribute, so each option MUST carry lang="de" / lang="ja" / lang="ar" matching its script. Right-to-left languages (Arabic, Hebrew, Persian, Urdu) additionally need dir="rtl" on the option element AND on the element after commit — otherwise punctuation and numerals render mirrored. Jurisdictional compliance implications: (1) Legal firms operating in California, New York, Texas, and Florida (ABA Model Rule 7.1) must include the languages of the jurisdictions they serve; if you display Spanish for a Los Angeles legal practice you must ensure the Spanish-language content itself is attorney-reviewed, not machine-translated (per ABA Formal Opinion 493 on unauthorized practice of law across languages). (2) Healthcare providers subject to HIPAA and the ACA Section 1557 anti-discrimination rule must offer a language switcher for the 15 most-common non-English languages spoken in their service area — the current CMS list is Spanish, Traditional and Simplified Chinese, Vietnamese, Korean, Tagalog, Russian, Arabic, French, German, Haitian Creole, Portuguese, Polish, Italian, and Japanese. (3) EU sites subject to GDPR must render privacy policy and cookie consent in each supported language — the language switcher must NOT auto-apply based on IP geolocation without explicit user action (Article 21 right to object). (4) Financial services subject to Reg B (Equal Credit Opportunity Act) must disclose in the applicant's chosen language when that language is one of the 5 most-common alternate languages in the market. Autocomplete attribute: autocomplete="language" on the trigger, and persist the selection to a first-party cookie with Secure; SameSite=Lax — do NOT store in localStorage where a subdomain XSS can leak it, and do NOT store in a third-party cookie where the visitor's browser will block it in 2026-forward Chrome tracking-prevention.

Related collections

15 CSS 3D Tilt Hover Cards preview

15 CSS 3D Tilt Hover Cards

15 mouse-aware 3D tilt hover cards — e-commerce product spotlight, glassmorphism parallax team card, interactive pricing tier, holographic NFT collectible, pop-out mascot, dark tech grid with border glow, media player album art, blog article preview, cyberpunk neon glow, dashboard KPI widget, minimalist real estate, flip-to-back tilt, mobile app showcase, course learning card, and a Pure CSS touch-friendly tilt. Vanilla JS writes --rx/--ry/--mx/--my; all rendering stays in CSS on the GPU.

24 CSS Animated Cards preview

24 CSS Animated Cards

24 hand-coded CSS animated card patterns organised by what triggers the motion, not by card style. Scroll and entrance triggers: staggered grid reveals, @starting-style mount-in, scroll-driven scale and fade on animation-timeline: view(), View Transitions API card-to-detail morphs, blur-to-sharp lazy image loading, and FLIP re-layout when a filter changes. State-change triggers: add-to-cart success morph, like and save particle burst, expand and collapse to intrinsic height with calc-size(), swipe-to-dismiss on Pointer Events, and skeleton-to-loaded crossfade. Data-driven triggers: count-up KPI metrics, SVG sparkline draw-on-enter, and progress ring fill on load. Ambient idle loops: breathing glow, floating drift, animated gradient mesh backgrounds, conic rotating borders, auto-cycling testimonial decks, and live status pulses. Plus four hover patterns where the effect is the topic itself: cursor spotlight, holographic foil glare, corner ribbon slide, and horizontal accordion expand. Every card is scoped under a .ac-NN prefix for no-collision pasting, guards prefers-reduced-motion, animates compositor-only properties, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.

22 CSS Avatars preview

22 CSS Avatars

22 hand-coded CSS avatars for chat apps, team dashboards, comment threads, account menus, and social profiles. Covers circular and squircle shapes, gradient and conic story rings, hexagon clip-path crops, online status dots, notification count badges, verified checkmarks, stacked facepiles with plus-N overflow, initials fallbacks for users without photos, broken-image recovery, avatar pickers, and a size scale system where the ring, badge, and status dot all scale from a single custom property.

Search CodeFronts

Loading…