(二)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 ...
随机推荐
- STM8S VCAP
There is a specific pin called vcap in stm8s mcu. I recommend this pin connects to a 1uF capacitor w ...
- SVN cleanup操作反复失败解决办法
今天在更新项目的时候遇到一个问题,按惯例要cleanup才能重新更新.但是很不幸,在cleanup的时候又遇到了问题! 1 svn cleanup failed–previous operati ...
- 复习---JS-Array 对象
要开始做第一个js练习了.前面三个小题都是数组的.先来复习一下数组.如下是W3C上面的关于数组的内容. 之前笔记中的内容:http://www.cnblogs.com/lal-fighting/p/5 ...
- Win7、Ubuntu双系统正确卸载Ubuntu系统
正确的删除ubuntu方法如下: 第1步,修复MBR 1.进入win7,下载个软件MbrFix,放在C:windowssystem32文件夹中 2.点击开始>所有程序>附件>命令提示 ...
- c#.net WinForm 线程内 调用窗体控件
richTextBox1.BeginInvoke(new EventHandler(delegate { richTextBox1.AppendText("正在提交服务器..\r\n&quo ...
- codeforces 711B - Chris and Magic Square(矩阵0位置填数)
题目链接:http://codeforces.com/problemset/problem/711/B 题目大意: 输入 n ,输入 n*n 的矩阵,有一个占位 0 , 求得将 0 位置换成其他的整数 ...
- clearInterval,setInterval,clearTimeout,setTimeout
setInterval("f()",1000) 每隔1秒就执行一次f() clearInterval 关闭clearInterval setTimeout("f() ...
- Unity 播放 视频
Unity3D 播放视频 http://www.cnblogs.com/fortomorrow/archive/2012/11/01/unity07.html Unity3D研究院之两种方式播放游戏视 ...
- PHP 短连接生成
<?php #短连接生成算法 class Short_Url { #字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQR ...
- JAVA利用Zip4j解压缩【转】
官方地址:http://www.lingala.net/zip4j/(需要FQ) jar包:http://pan.baidu.com/s/145hwI 演示包:http://pan.baidu.com ...