Last active
February 24, 2016 12:57
-
-
Save Scretch-1/463436322a4a3d08dbb9 to your computer and use it in GitHub Desktop.
jQ Выпадающий список (ul) с возможностью выбора пункта. (custom)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Документация http://codepen.io/markhillard/pen/Pwaqdb | |
//--HTML--// | |
<div class="wrap-drop" id="noble-gases"> | |
<span>All Noble Gases</span> | |
<ul class="drop"> | |
<li class="selected"><a>All Noble Gases</a></li> | |
<li><a>Helium</a></li> | |
<li><a>Neon</a></li> | |
</ul> | |
</div> | |
//--end HTML--// | |
//--CSS--// | |
//drop-select-ul | |
.wrap-drop { | |
background:#fff; | |
box-shadow:3px 3px 3px rgba(0,0,0,.2); | |
cursor:pointer; | |
margin:0 auto; | |
max-width:225px; | |
padding:1rem; | |
position:relative; | |
width:75%; | |
z-index:3; | |
} | |
.wrap-drop::after { | |
border-color:#695d52 transparent; | |
border-style:solid; | |
border-width:10px 10px 0; | |
content:""; | |
height:0; | |
margin-top:-4px; | |
position:absolute; | |
right:1rem; | |
top:50%; | |
width:0; | |
} | |
.wrap-drop .drop { | |
background:#fff; | |
box-shadow:3px 3px 3px rgba(0,0,0,.2); | |
display:none; | |
left:0; | |
list-style:none; | |
margin-top:0; | |
opacity:0; | |
padding-left:0; | |
pointer-events:none; | |
position:absolute; | |
right:0; | |
top:100%; | |
z-index:2; | |
} | |
.wrap-drop .drop li a { | |
color:#695d52; | |
display:block; | |
padding:1rem; | |
text-decoration:none; | |
} | |
.wrap-drop span { | |
color:#928579; | |
} | |
.wrap-drop .drop li:hover a { | |
background-color:#fffaec; | |
color:#000; | |
} | |
.wrap-drop.active::after { | |
border-width:0 10px 10px; | |
} | |
.wrap-drop.active .drop { | |
display:block; | |
opacity:1; | |
pointer-events:auto; | |
} | |
//--end CSS--// | |
//--JS--// | |
//drop-select-ul | |
function DropDown(el) { | |
this.dd = el; | |
this.placeholder = this.dd.children('span'); | |
this.opts = this.dd.find('ul.drop li'); | |
this.val = ''; | |
this.index = -1; | |
this.initEvents(); | |
} | |
DropDown.prototype = { | |
initEvents: function () { | |
var obj = this; | |
obj.dd.on('click', function (e) { | |
e.preventDefault(); | |
e.stopPropagation(); | |
$(this).toggleClass('active'); | |
}); | |
obj.opts.on('click', function () { | |
var opt = $(this); | |
obj.val = opt.text(); | |
obj.index = opt.index(); | |
obj.placeholder.text(obj.val); | |
opt.siblings().removeClass('selected'); | |
opt.filter(':contains("' + obj.val + '")').addClass('selected'); | |
}).change(); | |
}, | |
getValue: function () { | |
return this.val; | |
}, | |
getIndex: function () { | |
return this.index; | |
} | |
}; | |
$(function () { | |
// create new variable for each menu | |
var dd1 = new DropDown($('#noble-gases')); | |
// var dd2 = new DropDown($('#other-gases')); | |
$(document).click(function () { | |
// close menu on document click | |
$('.wrap-drop').removeClass('active'); | |
}); | |
}); | |
//--end JS--// |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment