用CSS控制Select的风格

今天偶然在网上看到一个 用CSS控制Select风格的例子,感觉比较好,用到的有些技术细节也是我之前不知道的,特摘录如下:

SelectDemo.htm:
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head >
    
< title > Select Demo </ title >
    
< meta  http-equiv ="Content-Type"  content ="text/html; charset=utf-8" />
    
< link  href ="selectDemo.css"  rel ="stylesheet"  type ="text/css"   />

    
< script  src ="selectDemo.js"  type ="text/javascript" ></ script >

    
< meta  content ="MSHTML 6.00.2900.3243"  name ="GENERATOR" />
</ head >
< body >
    
< form  id ="form"  action =""  method ="post" >
        
< br  />
        
< br  />
        
< div  id ="uboxstyle" >
            
< h3  style ="font-size: 14px; color: #6d93ab" >
                U-Box Style
</ h3 >
            
< select  id ="language"  name ="language" >
                
< option  value ="English"  selected > English </ option >
                
< option  value ="简体中文" > 简体中文 </ option >
                
< option  value ="日本語" > 日本語 </ option >
                
< option  value ="Deutsch" > Deutsch </ option >
                
< option  value ="Español" > Español </ option >
                
< option  value ="Français" > Français </ option >
                
< option  value ="Italiano" > Italiano </ option >
                
< option  value ="Polski" > Polski </ option >
                
< option  value ="Português" > Português </ option >
                
< option  value ="Svenska" > Svenska </ option >
                
< option  value ="Türkçe" > Türkçe </ option >
                
< option  value ="Руccкий" > Руccкий </ option >
            
</ select >
        
</ div >
        
< br  />
        
< br  />
        
< h3  style ="font-size: 14px; color: #6d93ab" >
            Mac Style
</ h3 >
        
< div  id ="macstyle" >
            
< select  id ="language_mac"  name ="language_mac" >
                
< option  value ="English"  selected > English </ option >
                
< option  value ="简体中文" > 简体中文 </ option >
                
< option  value ="日本語" > 日本語 </ option >
                
< option  value ="Deutsch" > Deutsch </ option >
                
< option  value ="Español" > Español </ option >
                
< option  value ="Français" > Français </ option >
                
< option  value ="Italiano" > Italiano </ option >
                
< option  value ="Polski" > Polski </ option >
                
< option  value ="Português" > Português </ option >
                
< option  value ="Svenska" > Svenska </ option >
                
< option  value ="Türkçe" > Türkçe </ option >
                
< option  value ="Руccкий" > Руccкий </ option >
            
</ select >
        
</ div >
        
< br  />
        
< br  />
        
< h3  style ="font-size: 14px; color: #6d93ab" >
            TM2008 Style
</ h3 >
        
< div  id ="tm2008style" >
            
< select  id ="language_tm2008"  name ="language_tm2008" >
                
< option  value ="English"  selected > English </ option >
                
< option  value ="简体中文" > 简体中文 </ option >
                
< option  value ="日本語" > 日本語 </ option >
                
< option  value ="Deutsch" > Deutsch </ option >
                
< option  value ="Español" > Español </ option >
                
< option  value ="Français" > Français </ option >
                
< option  value ="Italiano" > Italiano </ option >
                
< option  value ="Polski" > Polski </ option >
                
< option  value ="Português" > Português </ option >
                
< option  value ="Svenska" > Svenska </ option >
                
< option  value ="Türkçe" > Türkçe </ option >
                
< option  value ="Руccкий" > Руccкий </ option >
            
</ select >
        
</ div >
    
</ form >
</ body >
</ html >

SelectDemo.css:
BODY  {} {
    BACKGROUND
: #cfdfef; FONT: 12px/150% "Lucida Grande", Arial, Verdana, Helvetica, sans-serif
}

#uboxstyle .select_box 
{} {
    WIDTH
: 100px; HEIGHT: 24px
}

#macstyle .select_box 
{} {
    WIDTH
: 91px; HEIGHT: 24px
}

#tm2008style .select_box 
{} {
    WIDTH
: 102px; HEIGHT: 24px
}

#uboxstyle DIV.tag_select 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(ubox-select.gif) no-repeat 0px 0px; PADDING-BOTTOM: 0px; WIDTH: 80px; COLOR: #79a2bd; LINE-HEIGHT: 24px; PADDING-TOP: 0px; HEIGHT: 24px
}

#uboxstyle DIV.tag_select_hover 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(ubox-select.gif) no-repeat 0px -24px; PADDING-BOTTOM: 0px; WIDTH: 80px; COLOR: #79a2bd; LINE-HEIGHT: 24px; PADDING-TOP: 0px; HEIGHT: 24px
}

#uboxstyle DIV.tag_select_open 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(ubox-select.gif) no-repeat 0px -48px; PADDING-BOTTOM: 0px; WIDTH: 80px; COLOR: #79a2bd; LINE-HEIGHT: 24px; PADDING-TOP: 0px; HEIGHT: 24px
}


#uboxstyle UL.tag_options 
{} {
    PADDING-RIGHT
: 0px; PADDING-LEFT: 0px; BACKGROUND: url(ubox-select.gif) no-repeat right bottom; PADDING-BOTTOM: 5px; MARGIN: 0px; WIDTH: 100px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: absolute
}

#uboxstyle UL.tag_options LI 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(ubox-select.gif) repeat-y -100px 0px; PADDING-BOTTOM: 0px; WIDTH: 80px; COLOR: #79a2bd; LINE-HEIGHT: 24px; PADDING-TOP: 0px; HEIGHT: 24px; TEXT-DECORATION: none
}

#uboxstyle UL.tag_options LI.open_hover 
{} {
    BACKGROUND
: url(ubox-select.gif) no-repeat 0px -72px; COLOR: #fff
}

#uboxstyle UL.tag_options LI.open_selected 
{} {
    BACKGROUND
: url(ubox-select.gif) no-repeat 0px -96px; COLOR: #fff
}

#macstyle DIV.tag_select 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(mac-select.gif) no-repeat 0px -24px; PADDING-BOTTOM: 0px; WIDTH: 71px; COLOR: #000; LINE-HEIGHT: 24px; PADDING-TOP: 0px; HEIGHT: 24px
}

#macstyle DIV.tag_select_hover 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(mac-select.gif) no-repeat 0px 0px; PADDING-BOTTOM: 0px; WIDTH: 71px; COLOR: #000; LINE-HEIGHT: 24px; PADDING-TOP: 0px; HEIGHT: 24px
}

#macstyle DIV.tag_select_open 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(mac-select.gif) no-repeat 0px -48px; PADDING-BOTTOM: 0px; WIDTH: 71px; COLOR: #000; LINE-HEIGHT: 24px; PADDING-TOP: 0px; HEIGHT: 24px
}

#macstyle UL.tag_options 
{} {
    PADDING-RIGHT
: 0px; PADDING-LEFT: 0px; BACKGROUND: url(mac-select.gif) no-repeat left bottom; PADDING-BOTTOM: 5px; MARGIN: 0px; WIDTH: 71px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: absolute
}

#macstyle UL.tag_options LI 
{} {
    PADDING-RIGHT
: 0px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(mac-select.gif) repeat-y -91px 0px; PADDING-BOTTOM: 0px; WIDTH: 61px; COLOR: #000; LINE-HEIGHT: 24px; PADDING-TOP: 0px; HEIGHT: 24px; TEXT-DECORATION: none
}

#macstyle UL.tag_options LI.open_hover 
{} {
    BACKGROUND
: url(mac-select.gif) no-repeat -162px 0px; COLOR: #000
}

#macstyle UL.tag_options LI.open_selected 
{} {
    BACKGROUND
: url(mac-select.gif) no-repeat -162px -24px; COLOR: #fff
}

#tm2008style DIV.tag_select 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(tm2008-select.gif) no-repeat 0px 0px; PADDING-BOTTOM: 0px; WIDTH: 82px; COLOR: #000; LINE-HEIGHT: 22px; PADDING-TOP: 0px; HEIGHT: 22px
}

#tm2008style DIV.tag_select_hover 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(tm2008-select.gif) no-repeat 0px -22px; PADDING-BOTTOM: 0px; WIDTH: 82px; COLOR: #000; LINE-HEIGHT: 22px; PADDING-TOP: 0px; HEIGHT: 22px
}

#tm2008style DIV.tag_select_open 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(tm2008-select.gif) no-repeat 0px -44px; PADDING-BOTTOM: 0px; WIDTH: 82px; COLOR: #000; LINE-HEIGHT: 22px; PADDING-TOP: 0px; HEIGHT: 22px
}

#tm2008style UL.tag_options 
{} {
    PADDING-RIGHT
: 0px; PADDING-LEFT: 0px; BACKGROUND: url(tm2008-select.gif) no-repeat left bottom; PADDING-BOTTOM: 1px; MARGIN: 0px; WIDTH: 80px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: absolute
}

#tm2008style UL.tag_options LI 
{} {
    PADDING-RIGHT
: 10px; DISPLAY: block; PADDING-LEFT: 10px; BACKGROUND: url(tm2008-select.gif) repeat-y -102px 0px; PADDING-BOTTOM: 0px; WIDTH: 61px; COLOR: #000; LINE-HEIGHT: 22px; PADDING-TOP: 0px; HEIGHT: 22px; TEXT-DECORATION: none
}

#tm2008style UL.tag_options LI.open_hover 
{} {
    BACKGROUND
: url(tm2008-select.gif) no-repeat 0px -88px; COLOR: #000
}

#tm2008style UL.tag_options LI.open_selected 
{} {
    BACKGROUND
: url(tm2008-select.gif) no-repeat 0px -66px; COLOR: #19555f
}


SelectDemo.js:
/**/ /*#############################################################
Name: Select to CSS
Version: 0.2
Author: Utom
URL: http://utombox.com/
#############################################################
*/

var  selects  =  document.getElementsByTagName( ' select ' );

var  isIE  =  (document.all  &&  window.ActiveXObject  &&   ! window.opera)  ?   true  :  false ;

function  $(id)  {
    
return document.getElementById(id);
}


function  stopBubbling (ev)  {    
    ev.stopPropagation();
}


function  rSelects()  {
    
for (i=0;i<selects.length;i++){
        selects[i].style.display 
= 'none';
        select_tag 
= document.createElement('div');
            select_tag.id 
= 'select_' + selects[i].name;
            select_tag.className 
= 'select_box';
        selects[i].parentNode.insertBefore(select_tag,selects[i]);

        select_info 
= document.createElement('div');    
            select_info.id 
= 'select_info_' + selects[i].name;
            select_info.className
='tag_select';
            select_info.style.cursor
='pointer';
        select_tag.appendChild(select_info);

        select_ul 
= document.createElement('ul');    
            select_ul.id 
= 'options_' + selects[i].name;
            select_ul.className 
= 'tag_options';
            select_ul.style.position
='absolute';
            select_ul.style.display
='none';
            select_ul.style.zIndex
='999';
        select_tag.appendChild(select_ul);

        rOptions(i,selects[i].name);
        
        mouseSelects(selects[i].name);

        
if (isIE){
            selects[i].onclick 
= new Function("clickLabels3('"+selects[i].name+"');window.event.cancelBubble = true;");
        }

        
else if(!isIE){
            selects[i].onclick 
= new Function("clickLabels3('"+selects[i].name+"')");
            selects[i].addEventListener(
"click", stopBubbling, false);
        }
        
    }

}



function  rOptions(i, name)  {
    
var options = selects[i].getElementsByTagName('option');
    
var options_ul = 'options_' + name;
    
for (n=0;n<selects[i].options.length;n++){    
        option_li 
= document.createElement('li');
            option_li.style.cursor
='pointer';
            option_li.className
='open';
        $(options_ul).appendChild(option_li);

        option_text 
= document.createTextNode(selects[i].options[n].text);
        option_li.appendChild(option_text);

        option_selected 
= selects[i].options[n].selected;

        
if(option_selected){
            option_li.className
='open_selected';
            option_li.id
='selected_' + name;
            $(
'select_info_' + name).appendChild(document.createTextNode(option_li.innerHTML));
        }

        
        option_li.onmouseover 
= function(){    this.className='open_hover';}
        option_li.onmouseout 
= function(){
            
if(this.id=='selected_' + name){
                
this.className='open_selected';
            }

            
else {
                
this.className='open';
            }

        }
 
    
        option_li.onclick 
= new Function("clickOptions("+i+","+n+",'"+selects[i].name+"')");
    }

}


function  mouseSelects(name) {
    
var sincn = 'select_info_' + name;

    $(sincn).onmouseover 
= function()if(this.className=='tag_select'this.className='tag_select_hover'; }
    $(sincn).onmouseout 
= function()if(this.className=='tag_select_hover'this.className='tag_select'; }

    
if (isIE){
        $(sincn).onclick 
= new Function("clickSelects('"+name+"');window.event.cancelBubble = true;");
    }

    
else if(!isIE){
        $(sincn).onclick 
= new Function("clickSelects('"+name+"');");
        $(
'select_info_' +name).addEventListener("click", stopBubbling, false);
    }


}


function  clickSelects(name) {
    
var sincn = 'select_info_' + name;
    
var sinul = 'options_' + name;    

    
for (i=0;i<selects.length;i++){    
        
if(selects[i].name == name){                
            
if( $(sincn).className =='tag_select_hover'){
                $(sincn).className 
='tag_select_open';
                $(sinul).style.display 
= '';
            }

            
else if( $(sincn).className =='tag_select_open'){
                $(sincn).className 
= 'tag_select_hover';
                $(sinul).style.display 
= 'none';
            }

        }

        
else{
            $(
'select_info_' + selects[i].name).className = 'tag_select';
            $(
'options_' + selects[i].name).style.display = 'none';
        }

    }


}


function  clickOptions(i, n, name) {        
    
var li = $('options_' + name).getElementsByTagName('li');

    $(
'selected_' + name).className='open';
    $(
'selected_' + name).id='';
    li[n].id
='selected_' + name;
    li[n].className
='open_hover';
    $(
'select_' + name).removeChild($('select_info_' + name));

    select_info 
= document.createElement('div');
        select_info.id 
= 'select_info_' + name;
        select_info.className
='tag_select';
        select_info.style.cursor
='pointer';
    $(
'options_' + name).parentNode.insertBefore(select_info,$('options_' + name));

    mouseSelects(name);

    $(
'select_info_' + name).appendChild(document.createTextNode(li[n].innerHTML));
    $( 
'options_' + name ).style.display = 'none' ;
    $( 
'select_info_' + name ).className = 'tag_select';
    selects[i].options[n].selected 
= 'selected';

}


window.onload 
=   function (e)  {
    bodyclick 
= document.getElementsByTagName('body').item(0);
    rSelects();
    bodyclick.onclick 
= function(){
        
for (i=0;i<selects.length;i++){    
            $(
'select_info_' + selects[i].name).className = 'tag_select';
            $(
'options_' + selects[i].name).style.display = 'none';
        }

    }

}

背景图片:
      

转载于:https://www.cnblogs.com/easyjacky/archive/2008/01/26/1054276.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值