|
|
| Banner|栏目 |
|
| New BLog|日志 |
|
| New Reply|回复 |
|
| New message|留言 |
|
| User Login|登陆 |
|
| BLog Search|搜索 |
|
| BLog Info|信息 |
|
| My Links|收藏 |
| |
|
|
| 漂亮的下拉框 |
| laozi12345 发表于 2008-1-22 17:34:00 |
<HTML> <HEAD><title>漂亮的下拉框</title> < http-equiv="Content-Type" content="text/html; charset=gb2312"> <> // ViaSelect Environment Constants var SS_ENV = new Object(); SS_ENV.IE_Version = new Number(((navigator.appVersion.split('; '))[1].split(' '))[1]); SS_ENV.CR = new Object(); SS_ENV.CR.ReverseBackground = '#E2519C'; SS_ENV.CR.ReverseText = 'white'; SS_ENV.CR.Border = '#D55C9A'; SS_ENV.CR.BorderActive = '#FF6CB7'; SS_ENV.ImgPrefix = 'http://www.viafriend.com/images'; SS_ENV.DefaultHeight = 20; SS_ENV.ButtonWidth = 13; SS_ENV.OptionsDivStyle = '' + ' display:none;' + ' z-index:10;' + ' position:absolute;' + ' border:1 solid '+ SS_ENV.CR.Border+';' + ' background-color:white;' + ' scrollbar-face-color:#D4D0C8;' + ' scrollbar-shadow-color:white;' + ' scrollbar-highlight-color:#F6F5F4;' + ' scrollbar-3dlight-color:white' + ' scrollbar-darkshadow-color:#86837E;' + ' scrollbar-track-color:#F6F5F4;' + ' scrollbar-arrow-color:#86837E;'; SS_ENV.OptionNobrStyle = '' + ' font-size:12px;' + ' font-family:奔覆;'; // SaySelect Variables var SS_VAR = new Object(); SS_VAR.DivDummy = createElement("DIV"); SS_VAR.SelectList = new Array(); SS_VAR.bEventAttached = false; var SS_CreatedElements = new Object(); unloadObjects() { try { if (SS_VAR && SS_VAR.SelectList) { for (key in SS_VAR.SelectList) { if (SS_VAR.SelectList[key]) { try { SS_VAR.SelectList[key].select.setAttribute('SS', 0); } catch (e) {}; delete SS_VAR.SelectList[key]; } } } } catch (e) {}; } attachEvent("onunload", unloadObjects); SS_create (srcHTML, ListMax, bAutoDetect) { // property this.ssID = SS_VAR.SelectList.length; this.bOriginalSelect = (bAutoDetect && SS_ENV.IE_Version < 5.5); this.select = SS_createElement(srcHTML); this.selectedIndex = this.select.selectedIndex; this.options = this.select.options; this.width = parseInt(this.select.style.width); this.height = (this.select.style.height) ? parseInt(this.select.style.height) : SS_ENV.DefaultHeight; this.OptionHeight = this.height - 4; this.bListDown = (ListMax && '-'==ListMax.toString().substr(0, 1)) ? false : true; this.ListMax = (!isNaN(parseInt(ListMax))) ? Math.abs(ListMax) : 100; this.Table; this.TitleDiv; this.TitleTable; this.TitleWrapper; this.OptionsDiv; this.OptionsWrapper; this.OptionsTable; this.bFocused = false; this.bExpanded = false; this.bReverse = false; // private method this.isThisEventToBeCanceled = SS_isThisEventToBeCanceled; this.toggleTitle = SS_toggleTitle; this.syncSelectedIndex = SS_syncSelectedIndex; this.toggleOptions = SS_toggleOptions; this.turnOnOption = SS_turnOnOption; this.turnOffOption = SS_turnOffOption; this.handleMousewheel = SS_handleMousewheel; this.handleOverTitle = SS_handleOverTitle; this.handleOutTitle = SS_handleOutTitle; this.handleOverOption = SS_handleOverOption; this.createTable = SS_createTable; this.createTitleDiv = SS_createTitleDiv; this.createOptionsDiv = SS_createOptionsDiv; this.createOptionTr = SS_createOptionTr; this.adjustOptionsDiv = SS_adjustOptionsDiv; this.syncOptions = SS_syncOptions; this.pressOption = SS_pressOption; this.moveOption = SS_moveOption; this.releaseOption = SS_releaseOption; this.pressTitle = SS_pressTitle; this.releaseTitle = SS_releaseTitle; // public method this.display = SS_display; this.insertOption = SS_insertOption; this.deleteOption = SS_deleteOption; this.changeOption = SS_changeOption; // initiate this.createTable(); this.select.setAttribute('SS', this); if (!this.bOriginalSelect) this.select.onpropertychange = SS_handlePropertychange; SS_VAR.SelectList[this.ssID] = this; } SS_display () { write("<div id=SS_TempDiv></div>\n"); all.SS_TempDiv.appendChild(this.Table); all.SS_TempDiv.removeNode(); } SS_write (srcHTML, ListMax, bAutoDetect) { var oSS = new SS_create(srcHTML, ListMax, bAutoDetect); oSS.display(); return oSS; } SS_insertOption (, innerText, idx) { var NewOption = createElement("OPTION"); SS_CreatedElements[SS_CreatedElements.length] = NewOption; this.options.add(NewOption, idx); NewOption.innerText = innerText; NewOption. = ; if (!this.bOriginalSelect) this.createOptionTr(idx); this.syncOptions(); this.adjustOptionsDiv(); this.syncSelectedIndex(); } SS_deleteOption (idx) { this.options.remove(idx); if (!this.bOriginalSelect) this.OptionsTable.deleteRow(idx); this.syncOptions(); this.adjustOptionsDiv(); this.syncSelectedIndex(); } SS_changeOption (idx, , innerText) { this.options[idx]. = ; this.options[idx].innerText = innerText; this.syncOptions(); this.syncSelectedIndex(); } SS_cancelEvent (event) { event.cancelBubble = true; event.return = false; } SS_isThisEventToBeCanceled (event) { if ('object' == typeof(event)) { switch (event.type) { case 'mousedown': if (!(event.button & 1)) return true; break; case 'mouseup': if (!(event.button & 1)) return true; if (SS_ENV.IE_Version >= 5.5 && event.srcElement != this.srcElementOfLastMousedown && this.srcElementOfLastMousedown != null) { this.srcElementOfLastMousedown = null; return true; } break; case 'mouseout': if (!(SS_ENV.IE_Version < 5.5 && event.srcElement == this.srcElementOfLastMousedown)) return true; break; case 'mousemove': if (SS_ENV.IE_Version >= 5.5 && event.srcElement != this.srcElementOfLastMousedown && this.srcElementOfLastMousedown != null) return true; break; } } return false; } SS_createElement (html) { SS_VAR.DivDummy.insertAdjacentHTML('afterBegin', html); var oEl = SS_VAR.DivDummy.children(0); while (SS_VAR.DivDummy.children.length > 0) { SS_VAR.DivDummy.removeChild(SS_VAR.DivDummy.children(0)); } return oEl; } SS_blurExcept (except) { SS_cancelEvent(event); except = ('number'==typeof(except)) ? except : -1; var bHasToDetachEvent = true; for (var i=0; i < SS_VAR.SelectList.length; i++) { if (-1==except && SS_VAR.SelectList[i].bFocused && SS_VAR.SelectList[i].bExpanded) { SS_VAR.SelectList[i].toggleOptions(false, true); SS_VAR.SelectList[i].toggleTitle(true); bHasToDetachEvent = false; } else if (i!=except) { if (SS_VAR.SelectList[i].bExpanded) SS_VAR.SelectList[i].toggleOptions(false, true); if (SS_VAR.SelectList[i].bReverse) SS_VAR.SelectList[i].toggleTitle(false); SS_VAR.SelectList[i].bFocused = false; } } if (SS_VAR.bEventAttached && bHasToDetachEvent) { detachEvent('down', SS_blurExcept); detachEvent('ondblclick', SS_blurExcept); SS_VAR.bEventAttached = false; } } SS_syncSelectedIndex () { this.selectedIndex = this.select.selectedIndex; if (this.bOriginalSelect) return; if (this.TitleTable.cells(0).childNodes(0).innerText != this.options[this.selectedIndex].innerText) this.TitleTable.cells(0).childNodes(0).innerText = this.options[this.selectedIndex].innerText; if (this.bExpanded) this.toggleOptions(false); } SS_toggleTitle (bReverse) { this.bReverse = ('undefined'!=typeof(bReverse)) ? bReverse: (!this.bReverse); this.TitleTable.cells(0).style.backgroundColor = this.bReverse ? SS_ENV.CR.ReverseBackground : ''; this.TitleTable.cells(0).style.color = this.bReverse ? SS_ENV.CR.ReverseText : ''; } SS_toggleOptions (bExpanded, bStrict) { if (!bStrict && !this.bFocused) { SS_blurExcept(this.ssID); } this.bExpanded = ('undefined'!=typeof(bExpanded)) ? bExpanded: (!this.bExpanded); if (this.bExpanded) { this.adjustOptionsDiv(); this.OptionsDiv.style.display = 'block'; if (!bStrict) { this.toggleTitle(false); this.handleOverOption(this.selectedIndex); } this.handleOutTitle(); } else { this.OptionsDiv.style.display = 'none'; if (!bStrict) { this.toggleTitle(true); } } if (!bStrict) { this.bFocused = true; if (!SS_VAR.bEventAttached) { attachEvent('down', SS_blurExcept); attachEvent('ondblclick', SS_blurExcept); SS_VAR.bEventAttached = true; } } } SS_handlePropertychange () { if ('propertychange'==event.type && 'selectedIndex'==event.propertyName) { var oSS = event.srcElement.SS; oSS.syncSelectedIndex(); if (null != oSS.select.onchange) oSS.select.onchange(); } } SS_handleMousewheel (event) { var idx = this.selectedIndex; if ('mousewheel'==event.type && this.bFocused && this.bReverse) { for (var i=0; i < event.wheelDelta; i += 120) idx--; for (var i=0; i > event.wheelDelta; i -= 120) idx++; } idx = Math.max(idx, 0); idx = Math.min(idx, this.options.length - 1); this.select.selectedIndex = idx; } SS_handleOverTitle () { if (this.bExpanded) return; this.TitleTable.style.borderColor = SS_ENV.CR.BorderActive; this.TitleTable.cells(1).style.display = 'none'; this.TitleTable.cells(2).style.display = 'block'; } SS_handleOutTitle () { this.TitleTable.style.borderColor = SS_ENV.CR.Border; this.TitleTable.cells(2).style.display = 'none'; this.TitleTable.cells(1).style.display = 'block'; } SS_handleOverOption (idx) { for (var i=0; i < this.options.length; i++) { if (i==idx) this.turnOnOption(i); else this.turnOffOption(i); } } SS_turnOnOption (idx) { this.OptionsTable.cells(idx).style.color = SS_ENV.CR.ReverseText; this.OptionsTable.cells(idx).style.backgroundColor = SS_ENV.CR.ReverseBackground; } SS_turnOffOption (idx) { this.OptionsTable.cells(idx).style.color = ''; this.OptionsTable.cells(idx).style.backgroundColor = ''; } SS_adjustOptionsDiv () { if (this.bOriginalSelect) return; this.OptionsDiv.style.width = this.width; this.OptionsDiv.style.height = Math.min(this.options.length, this.ListMax) * this.OptionHeight + 2; this.OptionsWrapper.style.height = this.options.length * this.OptionHeight; this.OptionsDiv.style.overflowY = (this.options.length > this.ListMax) ? 'scroll' : ''; var top = this.Table.offsetTop; var left = this.Table.offsetLeft; for (var El = this.Table.offsetParent; 'BODY'!=El.tagName && 'absolute'!=El.style.position && 'relative'!=El.style.position; El = El.offsetParent) { if ('TABLE' != El.tagName) { top += El.clientTop; left += El.clientLeft; } top += El.offsetTop; left += El.offsetLeft; } this.OptionsDiv.style.top = (this.bListDown) ? (top + this.height) : (top - parseInt(this.OptionsDiv.style.height)); this.OptionsDiv.style.left = left; this.TitleWrapper.style.top = 0; this.TitleWrapper.style.left = 0; } SS_syncOptions () { if (this.bOriginalSelect) return; for (var i=0; i < this.options.length; i++) { this.OptionsTable.cells(i).setAttribute('index', i); if (this.OptionsTable.cells(i).childNodes(0).innerText != this.options[i].innerText) this.OptionsTable.cells(i).childNodes(0).innerText = this.options[i].innerText; } } SS_pressTitle (event) { SS_cancelEvent(event); this.srcElementOfLastMousedown = event.srcElement; this.toggleOptions(); } SS_releaseTitle (event) { SS_cancelEvent(event); if (this.isThisEventToBeCanceled(event)) return; this.srcElementOfLastMousedown = null; } SS_pressOption (event) { SS_cancelEvent(event); this.srcElementOfLastMousedown = event.srcElement; } SS_moveOption (event) { SS_cancelEvent(event); if (this.isThisEventToBeCanceled(event)) return; if (!(event.offsetX >= 0 && event.offsetX <= this.OptionsTable.offsetWidth)) return; this.handleOverOption(Math.floor(event.offsetY / this.OptionHeight)); } SS_releaseOption (event) { SS_cancelEvent(event); if (this.isThisEventToBeCanceled(event)) return; this.srcElementOfLastMousedown = null; if (event.offsetX >= 0 && event.offsetX <= this.OptionsTable.offsetWidth) { this.toggleOptions(false); this.select.selectedIndex = Math.floor(event.offsetY / this.OptionHeight); } } SS_createTable () { this.Table = SS_createElement("" + "<table border=0 cellpadding=0 cellspacing=0 style='table-layout:fixed; cursor:default'>" + "<tr><td></td></tr>" + "</table>" ); if (!isNaN(this.width)) this.Table.style.width = this.width; this.Table.style.height = this.height; if (!this.bOriginalSelect) { this.createTitleDiv(); this.createOptionsDiv(); this.Table.cells(0).appendChild(this.TitleDiv); this.Table.cells(0).appendChild(this.OptionsDiv); } else { this.Table.cells(0).appendChild(this.select); } } SS_createTitleDiv () { this.TitleDiv = SS_createElement("" + "<div style='position:relative; top:0; left:0;'>" + " <table border=0 cellpadding=0 cellspacing=1" + " height="+this.height + " bgcolor=white" + " style='table-layout:fixed; border:1 solid "+SS_ENV.CR.Border+";'" + " over='SS_VAR.SelectList["+this.ssID+"].adjustOptionsDiv()'" + " >" + " <tr>" + " <td><nobr style='text-oveflow:hidden;"+SS_ENV.OptionNobrStyle+"'></nobr></td>" + " <td width="+SS_ENV.ButtonWidth+" align=center style='word-wrap:normal'></td>" + " <td style='display:none' width="+SS_ENV.ButtonWidth+" align=center style='word-wrap:normal'></td>" + " <td style='display:none'></td>" + " </tr>" + " </table>" + "</div>" ); this.TitleTable = this.TitleDiv.childNodes(0); this.TitleTable.cells(0).childNodes(0).innerText = this.options[this.selectedIndex].innerText; this.TitleTable.cells(1).innerHTML = "<img src="http://www.f31.net/"+SS_ENV.ImgPrefix+"/btn_down.gif' border=0 align=absmiddle>"; this.TitleTable.cells(2).innerHTML = "<img src="http://www.f31.net/"+SS_ENV.ImgPrefix+"/btn_down_s.gif' border=0 align=absmiddle>"; this.TitleTable.cells(3).appendChild(this.select); this.TitleWrapper = createElement("" + "<img src="http://www.f31.net/"+SS_ENV.ImgPrefix+"/img_blank.gif'" + " style='position:absolute; top:0; left:0; z-index:2; width:100%; height:"+this.height+";'" + " over='SS_VAR.SelectList["+this.ssID+"].handleOverTitle()'" + " out='SS_VAR.SelectList["+this.ssID+"].handleOutTitle(); SS_VAR.SelectList["+this.ssID+"].releaseTitle(event);'" + " down='SS_VAR.SelectList["+this.ssID+"].pressTitle(event)'" + " ondblclick='SS_VAR.SelectList["+this.ssID+"].pressTitle(event); SS_VAR.SelectList["+this.ssID+"].releaseTitle(event);'" + " up='SS_VAR.SelectList["+this.ssID+"].releaseTitle(event)'" + " wheel='SS_VAR.SelectList["+this.ssID+"].handleMousewheel(event)'" + " ondragstart='SS_cancelEvent(event)'" + ">" ); SS_CreatedElements[SS_CreatedElements.length] = this.TitleWrapper; this.TitleDiv.appendChild(this.TitleWrapper); } SS_createOptionsDiv () { this.OptionsDiv = SS_createElement("" + "<div style='"+SS_ENV.OptionsDivStyle+"'" + " onscroll='SS_VAR.SelectList["+this.ssID+"].moveOption(event)'" + " down='SS_cancelEvent(event)'" + ">" + " <table border=0 cellpadding=0 cellspacing=0 width=100% style='table-layout:fixed'>" + " </table>" + "</div>" ); this.OptionsTable = this.OptionsDiv.childNodes(0); for (var i=0; i < this.options.length; i++) { this.createOptionTr(i); } this.syncOptions(); this.OptionsWrapper = createElement("" + "<img src="http://www.f31.net/"+SS_ENV.ImgPrefix+"/img_blank.gif'" + " style='position:absolute; top:0; left:0; width:100%;'" + " down='SS_VAR.SelectList["+this.ssID+"].pressOption(event)'" + " move='SS_VAR.SelectList["+this.ssID+"].moveOption(event)'" + " up='SS_VAR.SelectList["+this.ssID+"].releaseOption(event)'" + " out='SS_VAR.SelectList["+this.ssID+"].releaseOption(event)'" + " ondragstart='SS_cancelEvent(event)'" + ">" ); SS_CreatedElements[SS_CreatedElements.length] = this.OptionsWrapper; this.OptionsDiv.appendChild(this.OptionsWrapper); } SS_createOptionTr (idx) { idx = ('undefined'!=typeof(idx)) ? idx : this.options.length - 1; var OptionTr = this.OptionsTable.insertRow(-1); var OptionTd = createElement("<td height="+this.OptionHeight+"></td>"); SS_CreatedElements[SS_CreatedElements.length] = this.OptionsTd; OptionTd.appendChild(createElement("<nobr style='"+SS_ENV.OptionNobrStyle+"'></nobr>")); OptionTr.appendChild(OptionTd); } </> </head> <body><>SS_write("<select style='width:60;height:18px;font-size:12px' name=star>\n" +" <option =\"\" selected>不限</option>\n" +"<option =\"水瓶座\">水瓶座</option>" +"<option =\"双鱼座\">双鱼座</option>" +"<option =\"白羊座\">白羊座</option>" +"<option =\"金牛座\">金牛座</option>" +"<option =\"双子座\">双子座</option>" +"<option =\"巨蟹座\">巨蟹座</option>" +"<option =\"狮子座\">狮子座</option>" +"<option =\"处女座\">处女座</option>" +"<option =\"天秤座\">天秤座</option>" +"<option =\"天蝎座\">天蝎座</option>" +"<option =\"射手座\">射手座</option>" +"<option =\"摩羯座\">摩羯座</option>" +"</select>\n"); </><br> <>SS_write("<select name='province' style='width:60;height:18px;font-size:12px'>\n" +"<option =\"\" selected>都行</option>\n" +"<option =\"北京\">北京</option>" +"<option =\"上海\">上海</option>" +"<option =\"天津\">天津</option>" +"<option =\"重庆\">重庆</option>" +"<option =\"安徽\">安徽</option>" +"<option =\"福建\">福建</option>" +"<option =\"甘肃\">甘肃</option>" +"<option =\"广东\">广东</option>" +"<option =\"广西\">广西</option>" +"<option =\"贵州\">贵州</option>" +"<option =\"海南\">海南</option>" +"<option =\"河北\">河北</option>" +"<option =\"黑龙江\">黑龙江</option>" +"<option =\"河南\">河南</option>" +"<option =\"湖北\">湖北</option>" +"<option =\"湖南\">湖南</option>" +"<option =\"内蒙古\">内蒙古</option>" +"<option =\"江苏\">江苏</option>" +"<option =\"江西\">江西</option>" +"<option =\"吉林\">吉林</option>" +"<option =\"辽宁\">辽宁</option>" +"<option =\"宁夏\">宁夏</option>" +"<option =\"青海\">青海</option>" +"<option =\"山西\">山西</option>" +"<option =\"陕西\">陕西</option>" +"<option =\"山东\">山东</option>" +"<option =\"四川\">四川</option>" +"<option =\"江西\">江西</option>" +"<option =\"西藏\">西藏</option>" +"<option =\"新疆\">新疆</option>" +"<option =\"云南\">云南</option>" +"<option =\"浙江\">浙江</option>" +"<option =\"其它\">其它</option>" +"</select>\n",8); </> </body> </html> |
| 阅读全文 | 回复(0) | 引用通告 | 编辑 |
发表评论:
| |