(二)js下拉菜单
默认的select标签比较难看,UI比较漂亮,如果想要实现UI上的下拉样式,好像必须用js写select,从网上拷贝而且修改了一个下拉框,为了方便以后引用所以记录下来。
/* diy_select */
.diy_select{height:30px;width:90px; position: relative;font-size:14px;margin:0px;background:#fff;color:#000;float:left; cursor:pointer;}
.diy_select_btn,.diy_select_txt{float:left;height:100%;line-height:30px}
.diy_select,.diy_select_list{border:0px solid #d8d8d8;}
.diy_select_txt{width:90px;background: url(../images/select_ico.png) no-repeat 70px 50% #fff;color:#666; }
.diy_select_txt,.diy_select_list li{text-indent:8px;overflow:hidden}
.diy_select_btn{width:28px;background:url(rec.gif) no-repeat center}
.diy_select_list{position:absolute;top:30px;left:0px;z-index:;border-top:none;width:100%;display:none;_top:29px;background:#fff;color:#333; }
.diy_select_list li{list-style:none;height:24px;line-height:24px;cursor:default;_background:#fff}
.diy_select_list li.focus{background:#257824;color:#fff}
js
<script type="text/javascript">
function diy_select(){this.init.apply(this,arguments)};
diy_select.prototype={
init:function(opt)
{
this.setOpts(opt);
this.o=this.getByClass(this.opt.TTContainer,document,'div');//容器
this.b=this.getByClass(this.opt.TTDiy_select_btn);//按钮
this.t=this.getByClass(this.opt.TTDiy_select_txt);//显示
this.l=this.getByClass(this.opt.TTDiv_select_list);//列表容器
this.ipt=this.getByClass(this.opt.TTDiy_select_input);//列表容器
this.lengths=this.o.length;
this.showSelect();
},
addClass:function(o,s)//添加class
{
o.className = o.className ? o.className+' '+s:s;
},
removeClass:function(o,st)//删除class
{
var reg=new RegExp('\\b'+st+'\\b');
o.className=o.className ? o.className.replace(reg,''):'';
},
addEvent:function(o,t,fn)//注册事件
{
return o.addEventListener ? o.addEventListener(t,fn,false):o.attachEvent('on'+t,fn);
},
showSelect:function()//显示下拉框列表
{
var This=this;
var iNow=0;
this.addEvent(document,'click',function(){
for(var i=0;i<This.lengths;i++)
{
This.l[i].style.display='none';
}
})
for(var i=0;i<this.lengths;i++)
{
this.l[i].index=this.b[i].index=this.t[i].index=i;
this.t[i].onclick=this.b[i].onclick=function(ev)
{
var e=window.event || ev;
var index=this.index;
This.item=This.l[index].getElementsByTagName('li'); This.l[index].style.display= This.l[index].style.display=='block' ? 'none' :'block';
for(var j=0;j<This.lengths;j++)
{
if(j!=index)
{
This.l[j].style.display='none';
}
}
This.addClick(This.item);
e.stopPropagation ? e.stopPropagation() : (e.cancelBubble=true); //阻止冒泡
}
}
},
addClick:function(o)//点击回调函数
{ if(o.length>0)
{
var This=this;
for(var i=0;i<o.length;i++)
{
o[i].onmouseover=function()
{
This.addClass(this,This.opt.TTFcous);
}
o[i].onmouseout=function()
{
This.removeClass(this,This.opt.TTFcous);
}
o[i].onclick=function()
{
var index=this.parentNode.index;//获得列表
This.t[index].innerHTML=This.ipt[index].value=this.innerHTML.replace(/^\s+/,'').replace(/\s+&/,'');
This.l[index].style.display='none';
}
}
}
},
getByClass:function(s,p,t)//使用class获取元素
{
var reg=new RegExp('\\b'+s+'\\b');
var aResult=[];
var aElement=(p||document).getElementsByTagName(t || '*'); for(var i=0;i<aElement.length;i++)
{
if(reg.test(aElement[i].className))
{
aResult.push(aElement[i])
}
}
return aResult;
}, setOpts:function(opt) //以下参数可以不设置 //设置参数
{
this.opt={
TTContainer:'diy_select',//控件的class
TTDiy_select_input:'diy_select_input',//用于提交表单的class
TTDiy_select_txt:'diy_select_txt',//diy_select用于显示当前选中内容的容器class
TTDiy_select_btn:'diy_select_btn',//diy_select的打开按钮
TTDiv_select_list:'diy_select_list',//要显示的下拉框内容列表class
TTFcous:'focus'//得到焦点时的class
}
for(var a in opt) //赋值 ,请保持正确,没有准确判断的
{
this.opt[a]=opt[a] ? opt[a]:this.opt[a];
}
}
} var TTDiy_select=new diy_select({ //参数可选
TTContainer:'diy_select',//控件的class
TTDiy_select_input:'diy_select_input',//用于提交表单的class
TTDiy_select_txt:'diy_select_txt',//diy_select用于显示当前选中内容的容器class
TTDiy_select_btn:'diy_select_btn',//diy_select的打开按钮
TTDiv_select_list:'diy_select_list',//要显示的下拉框内容列表class
TTFcous:'focus'//得到焦点时的class
});//如同时使用多个时请保持各class一致.
</script>
html
<div class='diy_select'>
<input type='hidden' name='' class='diy_select_input'/>
<div class='diy_select_txt'>直播课堂</div>
<div class='diy_select_btn'></div>
<ul class='diy_select_list'>
<li>课程</li>
<li>直播课堂</li>
<li>学校</li>
<li>老师</li>
</ul>
</div>
效果图

(二)js下拉菜单的更多相关文章
- CSS+JS下拉菜单和纯CSS下拉菜单
下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...
- JS 下拉菜单
HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- css中overflow:hidden的属性 可能会导致js下拉菜单无法显示
css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...
- js下拉菜单默认值为当前年份,下拉菜单的选项为当前年份往前推5年
1:在jsp或者HTML页面中新建一个下拉框 年度:<select id="cx_nd" name="cx_nd" style="width: ...
- Java Swing实战(二)下拉菜单组件JComboBox及其事件监听
接下来给"数据源配置"面板添加下拉框. /** * @author: lishuai * @date: 2018/11/26 13:51 */ public class Weimi ...
- JS 下拉菜单案例
css代码 .nav { width: 300px; height: 400px; list-style: none; padding:; margin: 0 auto; } .nav>li { ...
- 原生js下拉菜单
var oDiv = document.getElementById("sunav"); var oLi = oDiv.getElementsByClassName("s ...
- -第2章 JS方法实现下拉菜单显示和隐藏
知识点 onmouseover 鼠标经过 onmouseout 鼠标移出 function 关键字 getElementsByTagName 获取一组标签 length 获取对象成员个数 思路 给一级 ...
- bootstrap的下拉菜单组件与导航条
前期准备:bootstrap的css文件和js文件先引入 Bootstrap 组件-拉下菜单(class+js) 下拉菜单必需三级结构 <div class="dropdown&quo ...
随机推荐
- photoshop切图介绍
第一部分:界面设置 1.点击“文件-新建”(或者ctrl+n)打开一个新建对话框.名称可随意填写.“预设”设置为自定,“宽度”一般选择1920,“单位”选为像素.“高度”可选择为2000,“单位”选为 ...
- IP地址、子网掩码、网关、DNS的关系
什么是IP地址所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址.按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节 ...
- D/A转换器实验
1.代码: #include<reg52.h>typedef unsigned char u8;typedef unsigned int u16;void delay (u16 num){ ...
- 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误:
- DataReader和DataSet的异同
DataReader:使用时始终占用SqlConnection,在线操作数据库:每次只在内存中加载一条数据,所以占用的内存是很小的:是只进的. 只读的. DataSet:则是将数据一次性加载在内存中. ...
- easyUI datagrid editor扩展dialog
easyUI datagrid简单使用:着重两点1.editor对象的click事件:2.将dialog窗体内的值填写到当前正编辑的单元格内 <!DOCTYPE html> <htm ...
- NGUI架构和Draw Call合并原理
http://bbs.9ria.com/thread-282804-1-1.html http://www.unitymanual.com/blog-97-238.html
- input 获取当前id,name
<input name=" src="toright.png" value="mp3"> <script language=&quo ...
- Robot Framework--06 用户关键字User Keyword
转自:http://blog.csdn.net/tulituqi/article/details/7906130 在我们做自动化案例的时候,用的最多的主要是用户关键字.说到关键字,大体上可以分为测试库 ...
- RobotFramework——介绍篇
1.简介Robot Framework是一款python编写的功能自动化测试框架.具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行.主要用于轮次很多的验 ...