Stylové rozbalovací menu - Triky CSS

Anonim

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(); ));