Стильне спливаюче меню - CSS-хитрощі

Anonim

Ця ідея походить від 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(); ));