Тази идея е от Veer.com и как се справят с падащите менюта за неща като размери на тениските. Благодаря на Денис Са.
Преглед на демонстрацията
HTML
Ще обгърнем обичайно въвеждане на текст вътре в, който също съдържа неуреден списък, който ще представлява стойностите за изскачащото меню.
- Male - M
- Female - M
- Male - S
- Female - S
CSS
Списъците ще бъдат скрити по подразбиране, но все пак всички оформени и готови за работа, когато кликването ги задейства за показване.
.size ( position:relative ) .size .field ( width:300px; background:#EC6603; color:#fff; padding:5px; border:none; cursor:pointer; font-family:'lucida sans unicode',sans-serif; font-size:1em; border:solid 1px #EC6603; -webkit-transition: all .4s ease-in-out; transition: all .4s ease-in-out; ) .size .field:hover ( border:solid 1px #fff; -moz-box-shadow:0 0 5px #999; -webkit-box-shadow:0 0 5px #999; box-shadow:0 0 5px #999 ) .size>ul.list ( display:none; position:absolute; left:30px; top:-30px; z-index:999; width:300px; margin:0; padding:10px; list-style:none; background:#fff; color:#333; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; -moz-box-shadow:0 0 5px #999; -webkit-box-shadow:0 0 5px #999; box-shadow:0 0 5px #999 ) .size>ul.list li ( padding:10px; border-bottom: solid 1px #ccc; ) .size>ul.list li:hover ( background:#EC6603; color:#fff; ) .size>ul.list li:last-child ( border:none )
jQuery
Ще хвърлим един бърз плъгин, така че тази функционалност да може да бъде извикана във всяка обвивка на div, която съдържа същата настройка на HTML. =
(function($)( $.fn.styleddropdown = function()( return this.each(function()( var obj = $(this) obj.find('.field').click(function() ( //onclick event, 'list' fadein obj.find('.list').fadeIn(400); $(document).keyup(function(event) ( //keypress event, fadeout on 'escape' if(event.keyCode == 27) ( obj.find('.list').fadeOut(400); ) )); obj.find('.list').hover(function()( ), function()( $(this).fadeOut(400); )); )); obj.find('.list li').click(function() ( //onclick event, change field value with selected 'list' item and fadeout 'list' obj.find('.field') .val($(this).html()) .css(( 'background':'#fff', 'color':'#333' )); obj.find('.list').fadeOut(400); )); )); ); ))(jQuery);
Употреба
След това просто извикваме приставката, когато DOM е готов, разбира се.
$(function()( $('.size').styleddropdown(); ));