Tato myšlenka pochází z webu Veer.com a jak zpracovávají rozbalovací nabídky pro věci, jako jsou velikosti triček. Děkuji Dennisu Sa.
Zobrazit ukázku
HTML
Zabalíme běžný textový vstup uvnitř, který také obsahuje neuspořádaný seznam, který bude představovat hodnoty pro rozbalovací nabídku.
- Male - M
- Female - M
- Male - S
- Female - S
CSS
Seznamy budou ve výchozím nastavení skryty, ale přesto budou všechny stylizované a připravené k použití, když se kliknutím zobrazí.
.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
Rychle spojíme rychlý plugin, aby bylo možné tuto funkci volat na jakémkoli wrapperu div, který obsahuje stejné nastavení 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);
Používání
Pak jen zavoláme plugin, když je DOM samozřejmě připraven.
$(function()( $('.size').styleddropdown(); ));