How to style <select>s using DropKick

Wdd Logo.
August 26, 2013
How to style <select>s using DropKick.

thumbnailWhen it comes to styling webpages, nothing's as tricky as forms. And when it comes to styling forms — almost — nothing's as tricky as the <select> input.

We can style a <select> with CSS, but there are big limitations on how much we can achieve with CSS alone. Often, the only viable option is styling via JavaScript, and as a form of progressive enhancement it's not something we need to shy away from.

In this article we'll be using DropKick to create out dropdown. What dropkick does is transform the <select> list into a fully customizable HTML dropdown and when one option is selected the corresponding select value will be updates as part of your form. OK, let's get started then…

Setting up our <select>

The first thing we need to do is set up a <select>, we'll create one for the business days in the week:

<select id='mySelect'>
<option value='mon'>Monday</option>
<option value='tue'>Tuesday</option>
<option value='wed'>Wednesday</option>
<option value='thu'>Thursday</option>
<option value='fri'>Friday</option>
</select>

Calling DropKick

Once we've set up our <select> we need to load three files into our document: the JavaScript DropKick file, the CSS, and of course jQuery. We should load the CSS in the head and JavaScripts at the foot of the page. With that done, all we need to do to activate the plugin and create our fully customizable dropdowns is to call DropKick, like so:

$('#mySelect').dropkick();

By doing so we transform our HTML into this:

<div class="dk_container dk_theme_default" id="dk_container_undefined">
<a class="dk_toggle">
<span class="dk_label">Thursday</span>
</a>
<div class="dk_options">
<ul class="dk_options_inner">
<li class="">
<a data-dk-dropdown-value="mon">Monday</a>
</li>
<li class="">
<a data-dk-dropdown-value="tue">Tuesday</a>
</li>
<li class="">
<a data-dk-dropdown-value="wed">Wednesday</a>
</li>
<li class="dk_option_current">
<a data-dk-dropdown-value="thu">Thursday</a>
</li>
<li class="">
<a data-dk-dropdown-value="fri">Friday</a>
</li>
</ul>
</div>
</div>

As you can see, DropKick has transformed our <select> into something we can be confident of styling with CSS. Furthermore, our values have been inserted in the new HTML5 data attributes (with the name data-dk-dropdown-value).

We can now style our dropdown with CSS, or use one the DropKick's themes if we prefer; at the time of writing there are three themes available, the default, dark gloss and light gloss. But most people will want to use their own styles that match their project's needs.

Extending DropKick

Extending DropKick is a simple process. For example, if we wanted to detect when a change is made to the dropdown, we can add the change event handler, like so:

$('select').dropkick({
change: function (value) {
console.log('Option selected: ' + value);
}
});

Final thoughts

I'm sure there are a thousand ways to style a select menu without the use of jQuery, but the ones that use just CSS are fighting a losing battle against the browser's defaults. The simplicity of this plugin and the tremendous flexibility it offers and the progressive enhancement approach that it takes means DropKick is an excellent solution.

Have you used DropKick in a project? Do you have a preferred method of styling <select>s? Let us know in the comments.

WDD Staff

WDD staff are proud to be able to bring you this daily blog about web design and development. If there's something you think we should be talking about let us know @DesignerDepot.

Read Next

Exciting New Tools for Designers, April 2024

Welcome to our April tools collection. There are no practical jokes here, just practical gadgets, services, and apps to…

14 Top UX Tools for Designers in 2024

User Experience (UX) is one of the most important fields of design, so it should come as no surprise that there are a…

What Negative Effects Does a Bad Website Design Have On My Business?

Consumer expectations for a responsive, immersive, and visually appealing website experience have never been higher. In…

10+ Best Resources & Tools for Web Designers (2024 update)

Is searching for the best web design tools to suit your needs akin to having a recurring bad dream? Does each…

3 Essential Design Trends, April 2024

Ready to jump into some amazing new design ideas for Spring? Our roundup has everything from UX to color trends…

How to Plan Your First Successful Website

Planning a new website can be exciting and — if you’re anything like me — a little daunting. Whether you’re an…

15 Best New Fonts, March 2024

Welcome to March’s edition of our roundup of the best new fonts for designers. This month’s compilation includes…

LimeWire Developer APIs Herald a New Era of AI Integration

Generative AI is a fascinating technology. Far from the design killer some people feared, it is an empowering and…

20 Best New Websites, March 2024

Welcome to our pick of sites for March. This month’s collection tends towards the simple and clean, which goes to show…

Exciting New Tools for Designers, March 2024

The fast-paced world of design never stops turning, and staying ahead of the curve is essential for creatives. As…

Web Tech Trends to Watch in 2024 and Beyond

It hardly seems possible given the radical transformations we’ve seen over the last few decades, but the web design…

6 Best AI Productivity Apps in 2024

There’s no escaping it: if you want to be successful, you need to be productive. The more you work, the more you…