例1,利用div+ul实现实例
因为在IE6下,表单元素select的高度实在不好控制,即使让其和其他元素看起来一样高宽相符,那也仅仅是通过内边距进行的一种视觉误差实现的,而且呢,select控件的滚动条也难看。
正是如此,才会有很多人用div+ul来模拟select下拉框。
HTML代码如下,简简单单,一个外div,嵌套一个input和一个ul列表(input用于提交选中的数据):
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>div+ul模拟select下拉框</title> <script type="text/javascript" src="js/jquery-1.9.0.min.js"></script> </head> <body> <div class="i_select"> <input id="h_x" type="text" value="户型" /> <ul> <li>单间</li> <li>两居室</li> <li>三居室</li> <li>四居室</li> </ul> </div> </body> </html> <pre> |
样式大家可以自行美化,我就简单写了下面的Css
代码如下 | 复制代码 |
<pre lang="css"> *{ margin:0; padding:0; } li{ list-style:none; } body{ font-size:12px; } .i_select{ margin:50px; position:relative; } .i_select input{ display:block; cursor:pointer; width:75px; height:20px; padding-right:25px; text-align:center; background:url(images/select_bg.gif) no-repeat right -22px; } .i_select ul{ position:absolute; left:0; top:22px; width:80px; background:#fff; border:solid #ccc; border-width:1px 1px 1px 2px; border-top:1px solid #fff; display:none; /*暂且将列表隐藏,后面点击才出现 */ } .i_select ul li{ height:24px; line-height:24px; width:80px; text-align:center; cursor:pointer; } |
列表没隐藏之前的效果:
div+ul模拟select的html
代码如下 | 复制代码 |
//简单的几句jquery,不过记得引入jQuery框架 $(function(){ $('.i_select input').click(function(){ var thisinput=$(this); // 将this保存到变量 var thisul=$(this).parent().find('ul'); // 从this的父元素中查找到ul表单,并保存到变量 thisul.fadeIn(300).hover(function(){},function(){$(this).fadeOut(300)}); /* 点击$('.i_select input')后,ul列表淡入,鼠标经过后离开之后,ul列表淡出 */ thisul.find('li').click(function(){ thisinput.val($(this).text()); //点击li后,将input的值更改为当前li的值 thisul.fadeOut(100); //最后,ul列表消失 }); }); }); |
完整代码(排版有点乱):
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
例二,利用jquery div实例
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>自己实现的下拉框</title> <style type="text/css" media="all"> *{font-size:12px;line-height:18px;list-style:none;padding:0;margin:0;text-decoration:none;color:#000;border:0} .page{text-align:center;margin:50px;} input{border-bottom:solid 1px #ccc;height:18px} .expand{display:none;position:absolute;width:200px;height:100px;overflow-y:auto;border:solid 1px #ccc}; .expand li{margin:1px 0;background:#fff} .expand a{text-decoration:none;display:block;padding:0 5px;background:#efefef;margin:1px 0} .expand a:hover{background:#ff9} </style> <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.min.js"></script> <script type="text/javascript"> function showExpand(targetId, expandId, expand_class) { //判断是否为IE var expand = $("#" + expandId); var dx = 0; //每个li点击时赋值 function search(srcId, expandId) { var A = expand.find("a"); A.each(function (i) { $().ready(function(){ $("#txt_city2").keyup(function(){ function fnTest(){ <br/> |
不足之处:
1、按键盘上下键时,没有高亮的自动移动
2、键入文字自动过滤结果时,感觉相对原生的select有些不自然