JSFiddle - React, Tailwind, and code Playground
by Nikhil krishnan
HTML
<div class="select">
<div class="styledSelect">Select</div>
<input type="hidden" value"select" class="input-value">
<ul class="options">
<li>Select</li>
<li>Horizontal</li>
<li>Vertical</li>
<li>Horizontal</li>
<li>Vertical</li>
<li>Horizontal</li>
<li>Vertical</li>
<li>Horizontal</li>
<li>Vertical</li>
<li>Vertical</li>
<li>Horizontal</li>
<li>Vertical</li>
<li>Horizontal</li>
<li>Vertical</li>
<li>Horizontal</li>
<li>Vertical</li>
</ul>
</div>
CSS
.select {
cursor: pointer;
display: block;
position: relative;
color: #000;
height: 40px;
width: 200px;
border-radius: 2px;
}
.styledSelect {
position: absolute;
overflow: hidden;
top: 0;
height: 40px;
right: 0;
bottom: 0;
left: 0;
background-color: #ccc;
padding: 0 25px 0 10px;
word-wrap: break-word;
line-height: 35px;
font-size: 16px;
border: 1px solid #ccc;
color: #333;
}
.styledSelect:after {
content: "▼";
color: #333;
position: absolute;
top: 50%;
margin-top: -16px;
font-size: 12px;
right: 10px;
}
.styledSelect:active,
.styledSelect.active {
background-color: #ddd;
}
.options {
display: none;
position: absolute;
top: 100%;
right: 0;
left: 0;
z-index: 999;
margin: 0 0;
padding: 0 0;
list-style: none;
border: 1px solid #ccc;
border-top: none;
background-color: #fff;
font-size: 16px;
color: black;
box-shadow: none;
max-height: 150px;
overflow-y: auto;
}
.options li {
padding: 5px 10px;
margin: 0 0;
}
.options li:hover {
background-color: #ccc;
}
JavaScript
//jquery
//dropdown list
$('body').click(function() {
$('.select .options:visible').slideUp();
});
$('.select .styledSelect').click(function() {
$(this).parent().find('.options').stop(true, true).delay(10).slideToggle();
});
$(".select .options").on("click", "li", function() {
// $(this).parent().parent().find('.styledSelect').trigger("click");
$(this).parent().parent().find('.styledSelect').text($(this).text()).removeClass('opened');
$(this).parent().parent().find('input.input-value').attr('value', $(this).text());
});