How to style a select dropdown with only CSS?

The <select> element creates dropdown lists for forms, but its default appearance is limited. While complete customization of native select elements has restrictions, we can apply various CSS properties to improve their styling and create visually appealing dropdowns.

Syntax

select {
    property: value;
}

select option {
    property: value;
}

Key Properties for Select Styling

Property Description
appearance Removes default browser styling
border Controls border style and thickness
border-radius Adds rounded corners
padding Controls internal spacing
background-color Sets background color
font-size Controls text size

Example: Basic Select Styling

The following example demonstrates how to style a select dropdown with custom colors and spacing

<!DOCTYPE html>
<html>
<head>
<style>
    .custom-select {
        width: 250px;
        padding: 12px;
        font-size: 16px;
        border: 2px solid #4CAF50;
        border-radius: 8px;
        background-color: #f9f9f9;
        color: #333;
        appearance: none;
        cursor: pointer;
        outline: none;
    }
    
    .custom-select:hover {
        background-color: #e8f5e8;
        border-color: #45a049;
    }
    
    .custom-select option {
        padding: 10px;
        background-color: white;
        color: #333;
    }
    
    .container {
        margin: 20px;
        text-align: center;
    }
</style>
</head>
<body>
    <div class="container">
        <h3>Custom Styled Select</h3>
        <select class="custom-select">
            <option value="">Choose a Subject</option>
            <option value="math">Mathematics</option>
            <option value="science">Science</option>
            <option value="english">English</option>
            <option value="history">History</option>
        </select>
    </div>
</body>
</html>
A styled dropdown list with green border, rounded corners, and custom hover effects. The select box has improved padding and typography compared to the default browser styling.

Example: Advanced Select with Custom Arrow

This example shows how to remove the default arrow and add a custom one using CSS

<!DOCTYPE html>
<html>
<head>
<style>
    .select-wrapper {
        position: relative;
        display: inline-block;
        margin: 20px;
    }
    
    .styled-select {
        width: 200px;
        padding: 12px 40px 12px 16px;
        font-size: 14px;
        border: 1px solid #ddd;
        border-radius: 4px;
        background-color: white;
        color: #333;
        appearance: none;
        cursor: pointer;
        outline: none;
    }
    
    .select-wrapper::after {
        content: '?';
        position: absolute;
        top: 50%;
        right: 12px;
        transform: translateY(-50%);
        pointer-events: none;
        color: #666;
        font-size: 12px;
    }
    
    .styled-select:focus {
        border-color: #007cba;
        box-shadow: 0 0 5px rgba(0, 124, 186, 0.3);
    }
</style>
</head>
<body>
    <div class="select-wrapper">
        <select class="styled-select">
            <option value="">Select Course</option>
            <option value="html">HTML</option>
            <option value="css">CSS</option>
            <option value="js">JavaScript</option>
            <option value="react">React</option>
        </select>
    </div>
</body>
</html>
A select dropdown with a custom arrow icon (?) positioned on the right side. The dropdown has focus effects with blue border and subtle shadow when clicked.

Key Points

  • Use appearance: none to remove default browser styling
  • The ::after pseudo-element can create custom arrows
  • Option styling has limited cross-browser support
  • Focus states improve accessibility and user experience

Conclusion

CSS provides several properties to enhance select dropdown styling, though complete customization has limitations. Using appearance: none and custom styling creates better-looking dropdowns that maintain functionality across different browsers.

Updated on: 2026-03-15T16:53:46+05:30

254 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements