用jquery实现下拉框的美化

例子地址:http://download.csdn.net/detail/cyoubunketu/4131093   Email:cyoubunketu@126.com

/**
 * jQuery ooppiu select Plugin 1.0.1
 *
 * Copyright (c) 2009 - 2012 oopiu
 * Email: cyoubunketu@126.com
 */
 
$.extend({

	oopiuSelectClickFlg:false,
	
	oopiuInit: function($selects) {
		if (!$selects){
			$selects = $('select');
		}
		
		$selects.each(function(i) {
			$this = $(this);
			if (!this.id){
				$this.attr("id","oopiu_auto_create_select_id"+i);
			}
			id = this.id;
			oopiu_val_w = $this.width();
			oopiu_val_p = $this.offset();
			$this.hide();
			oopiu_val_t = $this.oopiuCreateText(oopiu_val_w,id);
			oopiu_val_img = $this.oopiuCreateTre(oopiu_val_w,oopiu_val_p,id);
			$this.after(oopiu_val_t);
			$("body").append(oopiu_val_img);
			
			oopiu_val_dp = $(oopiu_val_t).offset();
			oopiu_val_divLeft = oopiu_val_dp.left;
			oopiu_val_divTop = oopiu_val_dp.top + $(oopiu_val_t).height();
			oopiu_val_param = {left:oopiu_val_divLeft,top:oopiu_val_divTop,width:oopiu_val_w,selId:this.id};
			var oopiu_val_divNode = $this.oopiuCreateDiv(oopiu_val_param);
			
			$("body").append(oopiu_val_divNode);
			
		});
		$(document).click(function(){
			if ($.oopiuSelectClickFlg == false){
				$(".oopiu_select_div:visible").hide();
			}
		});
	}
});

$.fn.extend({
	
	oopiuSelectClick:function(id){
		
		$(this).click(function(){
			if ("none" == $("#" + id + "_div").css("display")){
				$(".oopiu_select_div:visible").hide();
				$.oopiuSelectClickFlg = true;
				window.setTimeout(function(){$.oopiuSelectClickFlg = false;},300)
				$("#"+id + "_div").slideDown("fast",$(this).oopiuFindRow(id));
			}else{
				$.oopiuSelectClickFlg = false;
				$("#"+id + "_div").hide();
			}
		});
	},

	
	oopiuCreateText:function(w,id){
		var oopiu_val_t = document.createElement("input");
		$(oopiu_val_t).attr("id",id+"_text");
		$(oopiu_val_t).attr("selId",id);
		$(oopiu_val_t).attr("type","text");
		$(oopiu_val_t).attr("value",$("#"+id+" option:selected").text());
		$(oopiu_val_t).attr("readonly","true");
		$(oopiu_val_t).css("width",w+15);
		$(oopiu_val_t).css("marginTop",0); 
		$(oopiu_val_t).css("border","1px solid lightslategray");
		$(oopiu_val_t).css("-webkit-border-radius","5px");
		$(oopiu_val_t).css("-moz-border-radius","5px");
		$(oopiu_val_t).css("cursor","pointer");
		$(oopiu_val_t).css("padding-right","15px");

		$(oopiu_val_t).hover(
			function(){
				$(this).css("border","1px solid lightsteelblue");
			},
			function(){
				$(this).css("border","1px solid lightslategray");
			}
		);
		$(oopiu_val_t).oopiuSelectClick(id);
		return oopiu_val_t;
	},
	
	oopiuCreateTre:function(width,pos,id){
		var oopiu_val_i = document.createElement("div");
		$(oopiu_val_i).html('<em style="width:5px;"></em><em style="margin:0 1px;width:3px;"></em><em style="margin:0 2px;width:1px;"></em>');
		$(oopiu_val_i).css({"position":"absolute","left":pos.left+width+6,"top":pos.top+8,"width":"5px","height":"5px","display":"block","overflow":"hidden"});
		$(oopiu_val_i).css("cursor","pointer");
		$(oopiu_val_i).find("em").each(function(){
			$(this).css({"height":"1px","overflow":"hidden","display":"block","background-color":"#666666"});
		});
		$(oopiu_val_i).oopiuSelectClick(id);
		return oopiu_val_i;
	},
	
	oopiuCreateDiv:function(param){
		var left = param.left;
		var top = param.top;
		var width = param.width;
		var selId = param.selId;
		
		var d = document.createElement('div');
		$(d).css("position","absolute");
		$(d).css("width",width + 13);
		$(d).css("border","1px solid gray");
		$(d).css("border-top-style","none");
		$(d).css("font-size","12px");
		$(d).css("backgroundColor","#FFF");
		$(d).addClass("oopiu_select_div");
		$(d).css("left",left);
		$(d).css("top",top + 4);
		if ($("#"+selId+" option").length > 11){
			$(d).css("overflow","auto");
			$(d).css("height",20 * 11);
		}
		$("#"+selId+" option").each(function(i){
				value = this.value;
				text = this.text;
				a = $(this).oopiuCreateOptions({value:value,text:text,id:selId,width:width,row:i});
				$(d).append(a);					
		});

		$(d).hide();
		$(d).attr("id",selId+"_div");
		return d;
	},
	
	oopiuCreateOptions:function(pam){
		var id = pam.id;
					
		var tbl = $("<table></table>");
		var trNode = $("<tr></tr>");
		var td = $("<td></td>");
		
		$(tbl).css("width","100%");
		$(tbl).css("cursor","hand");
		$(tbl).css("table-layout","fixed");
		$(tbl).css("font-size","12px");
		
		$(tbl).attr("cellSpacing","0");
		$(tbl).hover(function(){$(td).css("background","gainsboro")},function(){$(td).css("background","")});
		
		$(td).attr("value",pam.value);
		$(td).attr("innerHTML",pam.text);
		$(td).css("padding","2");
		$(td).css("height","20");
		$(td).css("overflow","hidden");
		if (pam.text.length * 12 > pam.width){
			$(td).attr("title",pam.text);
		}					
		$(td).css("white-space","nowrap");
		$(td).click(function(){
			$("#"+id+"_div").hide();
			$("#"+id)[0].selectedIndex = pam.row;
			$("#"+id+"_text").attr("value",pam.text);
			$("#"+id).change();
		});
		
		td.appendTo(trNode);
		trNode.appendTo(tbl);

		return tbl;
	},
	
	oopiuFindRow:function(id){
		var showText = $("#"+id+"_text").val();
		$("#"+id+"_div > table").each(function(){
			txt = $(this).find("td").text();
			$(this).css("background","");
			if (showText == txt){
				$(this).css("background","whitesmoke");
			}
		});
	}
}); 
		
			
	


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 CSS 样式和 jQuery 实现按钮的美化和自定义样式,下面是一个简单的样例: HTML 代码: ```html <label for="mySelect">选择一个选项:</label> <div class="select-wrapper"> <select id="mySelect"> <option value="option1">选项1</option> <option value="option2">选项2</option> <option value="option3">选项3</option> </select> </div> ``` CSS 样式: ```css /* 隐藏原生的下框 */ select { display: none; } /* 设置下按钮的样式 */ .select-wrapper { position: relative; display: inline-block; } .select-wrapper:after { content: "\25BC"; font-size: 0.8em; color: #555; position: absolute; top: 50%; right: 0.5em; transform: translateY(-50%); } /* 设置下框的样式 */ .select-box { position: absolute; top: 100%; left: 0; right: 0; z-index: 999; background-color: #fff; border: 1px solid #ccc; border-radius: 5px; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); overflow: hidden; } .select-box ul { list-style: none; margin: 0; padding: 0; } .select-box li { padding: 0.5em; cursor: pointer; } .select-box li:hover { background-color: #f5f5f5; } ``` jQuery 代码: ```javascript // 创建下框的选项 var options = ''; $('#mySelect option').each(function() { options += '<li data-value="' + $(this).val() + '">' + $(this).text() + '</li>'; }); // 插入下框并绑定事件 var selectBox = '<div class="select-box"><ul>' + options + '</ul></div>'; $('.select-wrapper').append(selectBox); $('.select-wrapper').on('click', '.select-box li', function() { var value = $(this).data('value'); $('#mySelect').val(value); $('.select-box').slideUp(); }); $('.select-wrapper').on('click', function() { $('.select-box').slideToggle(); }); $(document).on('click', function(e) { if (!$(e.target).closest('.select-wrapper').length) { $('.select-box').slideUp(); } }); ``` 这样,就可以实现一个美化自定义样式的下按钮了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值