用jquery模拟一淘上面的搜索下拉的功能,利用css3做箭头的动画效果。
JS代码:
/* * 模拟搜索下拉select * 默认调用方式:$(el).setSelect({ * optionList: [], //这里是下拉的选项,如['aa','bb'] * hiddenInput: '#optionHidden', //隐藏的input获取选中后的值,供表单提交时传值 * getOption: '#sOptionBtn', * callback: function(option){} * }) * */ (function ($) { $.fn.setSelect = function(options){ var opt = $.extend({ optionList: [], getOption: '', hiddenInput: '', callback: function(){} }, options || {}); return this.each(function(){ opt._id = this; var _time; var arrow = $(this).find('i'); $(opt._id).append('<ul id="selectList"></ul>'); for(var i=0;i<opt.optionList.length;i++){ $("#selectList").append('<li>'+opt.optionList[i]+'</li>') }; $(opt._id).bind({ mouseenter: function(){ $(arrow).addClass('arrow-hover'); $('#selectList').slideDown(); clearTimeout(_time); }, mouseleave: function(){ _time=setTimeout(function(){ $(arrow).removeClass('arrow-hover'); $('#selectList').slideUp() },300); } }); //获取选择的值 $('#selectList').delegate('li','click',function(){ var option = $(this).text(); $(opt.getOption).text(option); $(opt.hiddenInput).val(option); $('#selectList').slideUp(); return opt.callback(option); }); }); } })(jQuery);
demo:(只有在高级的chrome及firefox下才能看到CSS3动画效果)
截个图:
代码:
<!doctype html> <htm> <head> <meta http-equiv="Content-type" content="text/html charset=utf-8"> <title></title> <style> body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin: 0; padding: 0 } body, button, input, select, textarea { font: 12px Arial, Helvetica, sans-serif } h1, h2, h3, h4, h5, h6 { font-size: 100% } code, kbd, pre, samp { font-family: courier new, courier, monospace } small { font-size: 12px } ul, ol { list-style: none } a { text-decoration: none; color: #333 } a:hover { text-decoration: underline } sup { vertical-align: text-top } sub { vertical-align: text-bottom } legend { color: #000 } fieldset, img { border: 0 } button, input, select, textarea { font-size: 100% } button { border: 0 none; cursor: pointer } table { border-collapse: collapse; border-spacing: 0 } em { font-style: normal } address { font-style: normal } textarea { resize: vertical } html { zoom:expression(function(ele) { ele.style.zoom = "1"; document.execCommand("BackgroundImageCache", false, true) } (this)) }/*解决IE下express重复执行的问题*/ article, aside, audio, canvas, command, datalist, details, embed, figcaption, figure, footer, header, hgroup, keygen, meter, nav, menu, mark, output, progress, section, source, video, address { display: block }/*html5标签向下兼容*/ .clearfix:after { content: '\20'; display: block; height: 0; clear: both; visibility: hidden } .clearfix { *zoom:1 } .arrow-dn { display: inline-block; height: 0; width: 0; font-size: 0; overflow: hidden; border: 3px solid #505050; border-color: #505050 transparent transparent; _border-style: solid dotted dotted dotted } .top-search { width: 497px; height: 30px; _height: 33px; background: url(../images/bg.png) left top no-repeat; _padding-bottom: 0; margin-top: 20px; border: 3px solid #cd0001; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; -ms-border-radius: 5px; position: relative; z-index: 9; margin: 50px auto } .top-search input { width: 350px; float: left; padding: 7px 0; _padding: 6px 0; border: none 0; background: 0; color: #666; font-size: 14px } .top-search input:focus, .area-search .search-intri input:focus { outline: 0 } .top-search button { width: 77px; height: 30px; line-height: 30px; font-weight: bold; font-size: 14px; text-align: center; background: #f4ac1f; float: right } .top-search .select { float: left; font-size: 14px; width: 55px; padding-top: 5px; margin-right: 5px; position: relative; z-index: 3 } .top-search .select ul { position: absolute; left: -3px; top: 30px; width: 55px; background: #fff; border: 3px solid #cd0001; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; border-top: 0; line-height: 1.8; display: none } .top-search .select ul li { cursor: pointer; padding: 2px 0; padding-left: 10px } .top-search .select ul li:hover { background: #f3f3f3 } .top-search .select .s-option { display: inline-block; position: absolute; top: 0; height: 32px; line-height: 28px; width: 45px; padding-left: 8px } .top-search .select a:hover { text-decoration: none } .top-search .select .arrow-dn { border-width: 4px; border-color: #939393 transparent transparent; position: absolute; right: 7px; top: 11px; -webkit-transition: -webkit-transform .2s ease-in-out; -webkit-transform: translate3d(0, 0, 999px); -webkit-backface-visibility: visible; -moz-transition: -moz-transform .2s ease-in-out; -moz-transform: translate3d(0, 0, 999px); -moz-backface-visibility: visible; } .top-search .select .arrow-hover { -webkit-transform: rotate(-180deg); -moz-transform: rotate(-180deg); -o-transform: rotate(-180deg); -webkit-transform: translated3d(0, 0, 999px); border-color: transparent transparent #939393\9; top: 10px; top: 7px\9; _top: 11px } </style> </head> <body> <form class="top-search clearfix"> <!--隐藏的input获取option值--> <input type="hidden" id="optionHidden" value="机构"> <div class="select"> <a id="sOptionBtn" class="s-option" href="javascript:void(0)">机构</a> <i class="arrow-dn"></i> </div> <input type="text" id="kw"> <button type="submit">搜索</button> </form> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> $(function(){ $('.top-search .select').setSelect({ optionList: ['机构','课程'], hiddenInput: '#optionHidden', getOption: '#sOptionBtn', callback: function(option){} }); }); (function ($) { $.fn.setSelect = function(options){ var opt = $.extend({ optionList: [], getOption: '', hiddenInput: '', callback: function(){} }, options || {}); return this.each(function(){ opt._id = this; var _time; var arrow = $(this).find('i'); $(opt._id).append('<ul id="selectList"></ul>'); for(var i=0;i<opt.optionList.length;i++){ $("#selectList").append('<li>'+opt.optionList[i]+'</li>') }; $(opt._id).bind({ mouseenter: function(){ $(arrow).addClass('arrow-hover'); $('#selectList').slideDown(); clearTimeout(_time); }, mouseleave: function(){ _time=setTimeout(function(){ $(arrow).removeClass('arrow-hover'); $('#selectList').slideUp() },300); } }); //获取选择的值 $('#selectList').delegate('li','click',function(){ var option = $(this).text(); $(opt.getOption).text(option); $(opt.hiddenInput).val(option); $('#selectList').slideUp(); return opt.callback(option); }); }); } })(jQuery); </script> </body> </html>
以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍js实现select下拉框菜单,包括了js实现select下拉框菜单的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现select下拉框菜单的详细代码。分享给大家供大家参考。具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> 如果大家还想深入学习,可以点击jquery下拉框效果汇总、JavaScript下拉框效果汇总进行学习。 以上就是js实
本文向大家介绍js+CSS实现模拟华丽的select控件下拉菜单效果,包括了js+CSS实现模拟华丽的select控件下拉菜单效果的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js+CSS实现模拟select控件的下拉菜单效果。分享给大家供大家参考。具体如下: 这是一个JS+CSS技术实现的Select控件效果,模拟出来的,比默认的Select更漂亮,有了这个模板,你修改Select就更
本文向大家介绍jQuery实现简单二级下拉菜单,包括了jQuery实现简单二级下拉菜单的使用技巧和注意事项,需要的朋友参考一下 html代码 js代码 css代码 最好不要忘记插入jQuery js文件,最好下载最新的。 以上所述就是本文的全部内容了,希望大家能够喜欢。
本文向大家介绍jQuery实现的无限级下拉菜单功能示例,包括了jQuery实现的无限级下拉菜单功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现的无限级下拉菜单功能。分享给大家供大家参考,具体如下: 运行效果图如下: 更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery切换特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常用插件及用法总
本文向大家介绍Bootstrop实现多级下拉菜单功能,包括了Bootstrop实现多级下拉菜单功能的使用技巧和注意事项,需要的朋友参考一下 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。 下面给大家分享bootstrap多级下拉菜单功能的实例代码。 先给大家看下效果
本文向大家介绍iOS 三级下拉菜单功能实现,包括了iOS 三级下拉菜单功能实现的使用技巧和注意事项,需要的朋友参考一下 前言 App 常用控件 -- 多级下拉菜单, 如团购类, 房屋类, 对数据进行筛选. 有一级, 二级, 三级, 再多就不会以这种样式,呈现给用户了. 作者就简单聊一下 多级下拉菜单 一 目标 默认显示一个 TableView, 点击数据后, 添加第二个TableView, 并实现