селект только вверх или вниз
by Denis Tverdokhlebov
HTML
<div class="text">
Тут очень много текста на вашей странице. :)
</div>
<div class="select">
<input type="hidden" name="item" value="1">
<div class="selected">Arabian</div>
<div class="option-list">
<div class="option" data-select-val="0">All cuisines</div>
<div class="option" data-select-val="1">Arabian</div>
<div class="option" data-select-val="2">Asian</div>
<div class="option" data-select-val="3">Bagels</div>
</div>
</div>
CSS
*{
color: #fff;
font-family: Tahoma, Geneva, sans-serif;
font-size: 14px;
box-sizing: border-box;
transition: background 0.2s ease-out 0ms;
}
body{
background: rgba(39,39,41,.8);
}
.text{
height: 150px;
width: 300px;
margin: 0 auto 10px;
padding: 10px;
border-radius: 2px;
background: #006ea1;
box-shadow: 0 0 10px 0 #000;
}
.select{
width: 350px;
height: 25px;
padding: 0 10px;
margin: 0 auto;
border: 1px solid #777;
border-radius: 2px;
background: rgba(0,0,0,.2);
position: relative;
}
.select:hover{
border: 1px solid #aaa;
}
.select-active {
border-radius: 0 0 2px 2px;
border: 1px solid #aaa;
}
.selected{
width: 100%;
height: 100%;
line-height: 23px;
cursor: pointer;
}
.option-list{
display: none;
position: absolute;
width: 100%;
/* если нужен селект вниз */
/* top:100%; */
/* если нужен селект вверх */
bottom: 100%;
left: -1px;
box-sizing: content-box;
border: 1px solid #aaa;
border-radius: 2px 2px 0 0;
background: #6a6a6a;
z-index: 2;
}
.option{
width: 100%;
height: 25px;
line-height: 25px;
padding: 0 10px;
cursor: pointer;
}
.option:hover{
background: rgba(255,255,255,.2);
cursor: pointer;
}
JavaScript
$(function(){
$('.selected').click(function(){
$('.option-list').slideToggle(100);
$('.select').toggleClass('select-active');
});
$('.option').click(function(){
select_val = $(this).attr('data-select-val');
select_div = $(this).parent().parent();
$(select_div).children('.selected').html($(this).html());
$(select_div).children('input').val(select_val);
$('.option-list').slideToggle(200);
$('.select').toggleClass('select-active');
});
});