`
JavaSam
  • 浏览: 958289 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript美化下拉框js

 
阅读更多
var childCreate = false;
function Offset(e) {
	//取标签的绝对位置
	var t = e.offsetTop;
	var l = e.offsetLeft;
	var w = e.offsetWidth;
	var h = e.offsetHeight - 2;
	while ( e = e.offsetParent) {
		t += e.offsetTop;
		l += e.offsetLeft;
	}
	return {
		top : t,
		left : l,
		width : w,
		height : h
	}
}

function loadselect(obj) {
	//第一步:取得select所在的位置
	var offset = Offset(obj);
	//第二步:将真的select隐藏
	obj.style.display = "none";
	//第三步:虚拟一个div出来代替select
	var iDiv = document.createElement("div");
	iDiv.id = "selectof" + obj.name;
	iDiv.style.position = "absolute";
	iDiv.style.width = offset.width + "px";
	iDiv.style.height = offset.height + "px";
	iDiv.style.top = offset.top + 4 + "px";
	iDiv.style.left = offset.left + 4 + "px";
	iDiv.style.background = "url('test.png') no-repeat right -6px";
	iDiv.style.border = "1px solid #ccc";
	iDiv.style.fontSize = "12px";
	iDiv.style.lineHeight = offset.height + "px";
	iDiv.style.textIndent = "4px";
	document.body.appendChild(iDiv);
	//第四步:将select中默认的选项显示出来
	var tValue = obj.options[obj.selectedIndex].innerHTML;
	iDiv.innerHTML = tValue;
	//第五步:模拟鼠标点击
	iDiv.style.background = "url('images/select.jpg') no-repeat right -2px";
	iDiv.onclick = function() {//鼠标点击
		if (document.getElementById("selectchild" + obj.name)) {
			//判断是否创建过div
			if (childCreate) {
				//判断当前的下拉是不是打开状态,如果是打开的就关闭掉。是关闭的就打开。
				document.getElementById("selectchild" + obj.name).style.display = "none";
				childCreate = false;
			} else {
				document.getElementById("selectchild" + obj.name).style.display = "";
				childCreate = true;
			}
		} else {
			//初始一个div放在上一个div下边,当options的替身。
			var cDiv = document.createElement("div");
			cDiv.id = "selectchild" + obj.name;
			cDiv.style.position = "absolute";
			cDiv.style.width = offset.width + "px";
			cDiv.style.height = obj.options.length * 20 + "px";
			cDiv.style.top = (offset.top + offset.height + 2) + 4+"px";
			cDiv.style.left = offset.left + 4+ "px";
			cDiv.style.background = "#f7f7f7";
			cDiv.style.border = "1px solid silver";
			var uUl = document.createElement("ul");
			uUl.id = "uUlchild" + obj.name;
			uUl.style.listStyle = "none";
			uUl.style.margin = "0";
			uUl.style.padding = "0";
			uUl.style.fontSize = "12px";
			cDiv.appendChild(uUl);
			document.body.appendChild(cDiv);
			childCreate = true;
			for (var i = 0; i < obj.options.length; i++) {
				//将原始的select标签中的options添加到li中
				var lLi = document.createElement("li");
				lLi.id = obj.options[i].value;
				lLi.style.textIndent = "4px";
				lLi.style.height = "20px";
				lLi.style.lineHeight = "20px";
				lLi.innerHTML = obj.options[i].innerHTML;
				uUl.appendChild(lLi);
			}
			var liObj = document.getElementById("uUlchild" + obj.name).getElementsByTagName("li");
			for (var j = 0; j < obj.options.length; j++) {
				//为li标签添加鼠标事件
				liObj[j].onmouseover = function() {
					this.style.background = "gray";
					this.style.color = "white";
				}
				liObj[j].onmouseout = function() {
					this.style.background = "white";
					this.style.color = "black";
				}
				liObj[j].onclick = function() {
					//做两件事情,一是将用户选择的保存到原始select标签中,要不做的再好看表单递交后也获取不到select的值了。
					obj.options.length = 0;
					obj.options[0] = new Option(this.innerHTML, this.id);
					//同时我们把下拉的关闭掉。
					document.getElementById("selectchild" + obj.name).style.display = "none";
					childCreate = false;
					iDiv.innerHTML = this.innerHTML;
				}
			}
		}
	}
}
document.body.onload = function (){
	var selects = document.getElementsByTagName("select");
	for(var i = 0 ; i < selects.length;i++){
		loadselect(selects[i]);
	}
}

 

1
0
分享到:
评论

相关推荐

    javascript 终极美化下拉框

    本文将深入探讨如何使用JavaScript实现终极美化下拉框,以提升网页的美观度和交互性。 首先,我们了解下拉框的基本结构。在HTML中,下拉框由`&lt;select&gt;`标签定义,其中`&lt;option&gt;`标签用于列出可供选择的选项。例如:...

    js select美化下拉框美化

    因此,"js select美化下拉框美化" 成为了一个重要的开发话题。这个主题主要涉及到JavaScript、CSS以及可能的库或框架的应用,以提升下拉框的视觉效果和用户体验。 JavaScript 是实现下拉框美化的关键工具,它可以...

    《javascript实现下拉框表单美化的详细实例教程》源码

    本文件属于文章《javascript实现下拉框表单美化的详细实例教程》的完整代码,在读完原创文章之后可以下载查看代码。代码中有详细的注释说明。html、css、js代码都在同一个文件中。也可以供有需要的朋友在开发中直接...

    美化下拉框自定义插件

    "美化下拉框自定义插件"就是针对这一需求而设计的一种工具,它通过使用JavaScript库jQuery(jq)来改善默认HTML下拉框的样式和功能,以提供更好的用户体验。这个插件不仅可以对下拉框进行美化,还具有获取value值的...

    带搜索框的jQuery美化下拉框.rar

    "带搜索框的jQuery美化下拉框"是一个针对这种需求的插件,它能够帮助开发者轻松实现具有搜索功能的下拉框,不仅提高了用户在选择选项时的效率,还提升了界面的整体美感。 首先,jQuery是一个强大的JavaScript库,它...

    jQuery美化下拉框可筛选插件特效源码.zip

    【jQuery美化下拉框可筛选插件特效源码】是一个基于JavaScript库jQuery的插件,旨在提升用户体验,通过提供美观的界面和筛选功能,增强下拉框的选择效果。这个插件通常用于网页表单,特别是在需要用户从大量选项中...

    jquery美化的下拉框

    1. **引入依赖**:在`index.html`中,你需要引入jQuery库(如果尚未在项目中引入)以及美化下拉框的插件文件,例如`js/jquery.plugin.js`和`css/plugin.css`。 2. **HTML结构**:创建一个标准的`&lt;select&gt;`元素,将...

    javascript 美化单选 多选和下拉框 最好用的树形下拉框组件(单选、多选均可).zip

    总的来说,这个“javascript 美化单选 多选和下拉框 最好用的树形下拉框组件”是提高网站表单交互性和用户体验的有效工具,尤其适用于需要处理层次结构数据的场景。通过熟练掌握其使用方法,开发者可以快速构建出...

    jquery 美化下拉框,单选按钮,上传文件input typeFile的插件

    首先,让我们深入了解一下`jQuery`美化下拉框的概念。默认情况下,浏览器渲染的下拉框样式各不相同,缺乏统一性和美观性。`jQuery`插件可以通过替换DOM结构和应用自定义CSS来改变这种状况。它可能提供各种主题,使得...

    Stylish Select v0.3 jQuery 美化下拉框的类库.zip

    《Stylish Select v0.3:jQuery美化下拉框的高效实现》 在Web开发领域,用户体验始终是设计的核心。对于用户界面来说,交互元素的美观与易用性至关重要,其中下拉框(Select)作为常见的表单组件,其样式和功能优化...

    网页模板——javascript 美化单选 多选和下拉框 最好用的树形下拉框组件(单选、多选均可).zip

    首先,我们来探讨JavaScript美化单选按钮和复选框。在网页中,单选按钮和复选框通常用于收集用户的单一或多个选择。然而,原始的HTML元素样式可能并不符合所有设计需求,因此JavaScript可以用来定制这些元素的外观,...

    纯js超酷select下拉框美化插件

    **纯JS超酷Select下拉框美化插件——TastySelect** 在网页设计中,Select下拉框作为数据选择的常见元素,其样式通常由浏览器默认控制,这往往不符合现代网页设计的美观需求。为了解决这个问题,开发者们创造了各种...

    jQuery美化select下拉框

    这时,我们就需要利用JavaScript库,比如jQuery,来对select下拉框进行美化,提升用户体验。 jQuery是一个轻量级、功能丰富的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。在美化select下拉框...

    jQuery美化Select下拉框.zip

    首先,我们来看“jQuery美化Select下拉框”这个项目的核心目标:通过jQuery库,结合CSS和JavaScript技术,创建一个既美观又功能丰富的下拉框替代方案。这样的设计可以使用户界面更加友好,提升用户体验。 压缩包内...

    简单下拉框美化

    总的来说,简单下拉框美化涉及到HTML结构、CSS样式以及可能的JavaScript交互。理解并掌握这些技术,将有助于我们创建既美观又实用的下拉框组件,提升网站的整体质量和用户体验。在实践中,不断迭代和优化,结合具体...

    用jquery实现下拉框美化

    4. **美化下拉框**:jQuery本身并不直接提供下拉框美化功能,但我们可以借助第三方插件,如`Chosen`或`Select2`。这些插件可以创建自定义的下拉框样式,并提供搜索、多选等高级功能。不过,由于原始描述仅提到使用...

    jquery+html自定义select下拉框,下拉框美化

    美化下拉框涉及以下几个方面: 1. **布局**:通过CSS调整下拉框的大小、位置、边框和背景颜色,使其与页面其他元素保持一致。 2. **字体和颜色**:改变文本的字体、字号、颜色和行高,以提高可读性。 3. **箭头图标...

    select下拉菜单美化.rar

    本资源"select下拉菜单美化.rar"可能包含了一套用于改善默认select菜单外观的JavaScript库或者CSS样式集,旨在提供更加美观、交互性更强的下拉选择体验。 通常,这种美化方法会涉及到以下几个关键知识点: 1. **...

    下拉框样式美化

    针对这一问题,"下拉框样式美化"插件应运而生,致力于提升网页下拉框的视觉效果,使之更符合现代网页设计的审美标准。 该插件的核心功能在于对下拉框进行多样的样式优化,提供了多种预设的下拉框设计风格。这些风格...

Global site tag (gtag.js) - Google Analytics