js+css模拟自定义select样式的示例代码

发布时间:2020-11-05编辑:脚本学堂
分享一例js与css模拟自定义select下拉列表样式的代码,有需要的朋友参考学习下。

本节内容:
js+css模拟自定义select样式

select标签在各个浏览器下的显示样式都不相同,所以做出一个统一的样式的select样式是最直接的需求。

如何实现不同的浏览器下,有着相同样式的select呢?

思路:
该方法主要用到js+css,代码量小,无插件
自定义select的样式

实现原理:
(js+css模拟select样式)
将select的标签元素,设置opacity:0隐藏掉,并给其设置z-index将其移动到最上层。
这样在点击外围box时,实际上是点击了select。
然后,通过select的onchange事件,将选中的数据赋值到span元素中显示出来。
ie6下只会显示一个默认的select选择样式。

效果图:
css自定义select样式

演示代码:
 

复制代码 代码示例:
<div class="sel_wrap" id="sel_wrap">
 <span>请从下面选择</span>
 <select class="select" name="" id="c_select">
  <option value="0">牛魔王的世界观</option>
  <option value="1">专注于web前端开发</option>
  <option value="2">欢迎多多交流</option>
 </select>
</div>
<style>
.sel_wrap{width:300px;height:26px;background:#fafafa url(http://img.jb200.com/img/select.png) no-repeat right center;border:1px solid #ccc;border-radius:4px;cursor:pointer;position:relative;_filter:alpha(opacity=0);}
.sel_wrap span{line-height:26px;padding-left:10px;font-size:13px;z-index:2;}
.sel_wrap .select{width:300px;height:28px;z-index:4;position:absolute;top:0;left:0;margin:0;padding:0;opacity:0;cursor:pointer;}
</style>
<script>
 function $(x){
  return document.getElementById(x);
 }
 var sel=$("c_select");
 var wrap=$("sel_wrap");
 var result=wrap.getElementsByTagName("span");
 wrap.onmouseover=function(){
  this.style.backgroundColor="#fff";
 }
 wrap.onmouseout=function(){
  this.style.backgroundColor="#fafafa";
 }
 sel.onchange=function(){
  var opt=this.getElementsByTagName("option");
  var len=opt.length;
  for(i=0;i<len;i++){
   if(opt[i].selected==true){
    x=opt[i].innerHTML;
   }
  }
  result[0].innerHTML=x;
 }
</script>

注:如果想要获取返回的是选中的option的value值,将以下代码:
 

复制代码 代码示例:
var opt=this.getElementsByTagName("option");
var len=opt.length;
for(i=0;i<len;i++){
if(opt[i].selected==true){
x=opt[i].innerHTML;
}
}
 

替换成:
 

复制代码 代码示例:
var x=this.vaue;