← All Examples

Styled Select Dropdown

Custom <select> appearance using appearance:none and an inline SVG background arrow.

Published May 24, 2026

Demo

HTML

<select class="custom-select">
  <option>Choose an option</option>
  <option>Apple</option>
  <option>Banana</option>
</select>

CSS

select {
  appearance: none;
  -webkit-appearance: none;
  padding: .7rem 2.75rem .7rem 1rem;
  background-image: url("data:image/svg+xml,..."); /* SVG arrow */
  background-repeat: no-repeat;
  background-position: right 1rem center;
  border: 2px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  cursor: pointer;
}

How it works

The native <select> dropdown is notoriously hard to style. appearance: none (with its -webkit- prefix) removes the browser's default arrow and appearance. A custom arrow is injected as an inline SVG via background-image, positioned with background-position to the right. The background-repeat: no-repeat prevents it from tiling, and extra right padding ensures text doesn't overlap the arrow.