JS+CSS實現美化的下拉式清單方塊效果_javascript技巧

來源:互聯網
上載者:User

本文執行個體講述了JS+CSS實現美化的下拉式清單方塊效果。分享給大家供大家參考。具體如下:

一款經過JS+CSS美化的下拉式清單,效果很不錯,但代碼有點偏多,學習CSS的朋友可以學習一下方法,然後自己變通一下,把代碼簡化一下。

運行效果如下圖所示:

具體代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>JS+CSS下拉式清單</title><style type="text/css">body{ font-size:12px; margin:0}.center{ margin-left:auto; margin-right:auto; margin-top:200px; width:300px;}#age_sel_2 div.tag_select{display:block;color:#000;width:62px;height:22px;background:transparent url("http://files.jb51.net/file_images/article/201508/2015811145849095.gif") no-repeat 0 0;padding:0 10px;line-height:22px;}#age_sel_2 div.tag_select_hover{display:block;color:#000;width:62px;height:22px;background:transparent url("http://files.jb51.net/file_images/article/201508/2015811145849095.gif") no-repeat 0 -22px;padding:0 10px;line-height:22px;}#age_sel_2 div.tag_select_open{display:block;color:#000;width:62px;height:22px;background:transparent url("http://files.jb51.net/file_images/article/201508/2015811145849095.gif") no-repeat 0 -44px;padding:0 10px;line-height:22px;}#age_sel_2 ul.tag_options{position:absolute;margin:0;list-style:none;background:transparent url("http://files.jb51.net/file_images/article/201508/2015811145849095.gif") no-repeat left bottom;padding:0 0 1px;margin:0;width:60px;}#age_sel_2 ul.tag_options li{background:transparent url("http://files.jb51.net/file_images/article/201508/2015811145849095.gif") repeat-y -102px 0;display:block;width:61px;padding:0 10px;height:22px;text-decoration:none;line-height:22px;color:#000;}#age_sel_2 ul.tag_options li.open_hover{background:transparent url("http://files.jb51.net/file_images/article/201508/2015811145849095.gif") no-repeat 0 -88px;color:#000}#age_sel_2 ul.tag_options li.open_selected{background:transparent url("http://files.jb51.net/file_images/article/201508/2015811145849095.gif") no-repeat 0 -66px;color:#19555F}</style><script>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'; } }}</script></head><body><div class="center"><div id="age_sel_2"> <select name="area_selet2" id="area_select2">  <option value="請選擇">請選擇</option>  <option value="ASP" >ASP</option>  <option value="PHP" >PHP</option>  <option value=".NET" >.NET</option>  <option value="Csharp" >Csharp</option>  <option value="Delphi" >Delphi</option>  <option value="Java" >Java</option> </select></div></div></body></html>

希望本文所述對大家的javascript程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.