今天偶然在网上看到一个
用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