ホームページ >ウェブフロントエンド >htmlチュートリアル >JS+CSS でドロップダウン メニューの背景を作成する問題_html/css_WEB-ITnose

JS+CSS でドロップダウン メニューの背景を作成する問題_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 12:22:221062ブラウズ

スクロールバーを選択


次のコードはドロップダウン メニューのスタイルを変更し、通常どおりに使用できるようにします。しかし、考えてみると、ドロップダウン メニューに多くのコンテンツがあるため、問題が発生しました。一定の高さになると、スクロール バーが自動的に表示されます。誰か、確認を手伝ってくれませんか。

<script language="JavaScript" type="text/javascript">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>


<style type="text/css">body{margin:0px; padding:0px; font-size:12px; color:#FFFFFB; background:#3d4045;   }div,ul,li{margin:0; padding:0;}#macstyle1 .select_box{height:22px;  width:271px;}#macstyle1 div.tag_select{display:block;color:#fff; text-align:left; padding-left:10px;width:271px;height:22px;background:url(http://img.bbs.csdn.net/upload/201307/03/1372819568_91197.gif) no-repeat;line-height:22px;}#macstyle1 div.tag_select_hover{display:block;color:#fff;text-align:left; padding-left:10px;width:271px;height:22px;background:url(http://img.bbs.csdn.net/upload/201307/03/1372819568_91197.gif) no-repeat;line-height:22px;}#macstyle1 div.tag_select_open{display:block;color:#fff;text-align:left; padding-left:10px;width:271px;height:22px;background:url(http://img.bbs.csdn.net/upload/201307/03/1372819568_91197.gif) no-repeat;line-height:22px;}#macstyle1 ul.tag_options{position:absolute;list-style:none;text-align:left;  }#macstyle1 ul.tag_options li{ background:#414348;text-align:left; padding-left:10px;width:241px;height:15px;line-height:15px;color:#fff;overflow:auto;}#macstyle1 ul.tag_options li.open_hover{color:#fff; background:#6c6f75; }#macstyle1 ul.tag_options li.open_selected{color:#fff; }</style>

<div id="macstyle1">            <select >              <option  value="GMT-12:00">GMT-12:00 日界线西</option>              <option  value="GMT-11:00">GMT-11:00 中途岛,萨摩亚群岛</option>              <option  value="GMT-10:00">GMT-10:00 夏威夷</option>              <option  value="GMT-9:00">GMT-9:00 阿拉斯加</option>              <option  value="GMT-8:00">GMT-8:00 太平洋时间(美国和加拿大)</option>              <option  value="GMT-7:00">GMT-7:00 山地时间(美国和加拿大)</option>              <option  value="GMT-6:00">GMT-6:00 中部时间(美国和加拿大)</option>              <option  value="GMT-5:00">GMT-5:00 东部时间(美国和加拿大)</option>              <option  value="GMT-4:30">GMT-4:30 加拉斯加</option>              <option  value="GMT-4:00">GMT-4:00 大西洋时间(加拿大)</option>              <option  value="GMT-3:30">GMT-3:30 纽芬兰</option>              <option  value="GMT-3:00">GMT-3:00 乔治郭、巴西利亚</option>              <option  value="GMT-2:00">GMT-2:00 中大西洋</option>              <option  value="GMT-1:00">GMT-1:00 佛得角群岛、亚速尔群岛</option>              <option  value="GMT-0:00">GMT-0:00 都柏林、爱丁堡、伦敦</option>              <option  value="GMT+1:00">GMT+1:00 阿姆斯特丹、柏林、罗马、巴黎</option>              <option  value="GMT+2:00">GMT+2:00 雅典、耶路撒冷、伊斯坦布尔</option>              <option  value="GMT+3:00">GMT+3:00 巴格达、科威特、莫斯科</option>              <option  value="GMT+3:30">GMT+3:30 德黑兰</option>              <option  value="GMT+4:00">GMT+4:00 高加索标准时间</option>              <option  value="GMT+4:30">GMT+4:30 喀布尔</option>              <option  value="GMT+5:00">GMT+5:00 伊斯兰堡、卡拉奇、塔什干</option>              <option  value="GMT+5:30">GMT+5:30 马德拉斯、孟买、新德里</option>              <option  value="GMT+5:45">GMT+5:45 加德满都</option>              <option  value="GMT+6:00">GMT+6:00 阿拉木图、新西伯利亚、达卡</option>              <option  value="GMT+6:30">GMT+6:30 仰光</option>              <option  value="GMT+7:00">GMT+7:00 曼谷、河内、雅加达</option>              <option  value="GMT+8:00" selected="selected">GMT+8:00 北京、乌鲁木齐、新加坡</option>              <option  value="GMT+9:00">GMT+9:00 汉城、东京、大阪、札幌</option>              <option  value="GMT+9:30" >GMT+9:30 阿德莱德、达尔文</option>              <option  value="GMT+10:00" >GMT+10:00 墨尔本、悉尼、堪培拉</option>              <option  value="GMT+11:00">GMT+11:00 马加丹、索罗门群岛</option>              <option  value="GMT+12:00">GMT+12:00 奥克兰、惠灵顿</option>              <option  value="GMT+13:00">GMT+13:00 努库阿洛法</option>            </select>          </div> 

ディスカッションへの返信 (解決策)

デフォルトのオーバーフローは表示され、#macstyle1 ul.tag_options に適切な高さを指定して、overflow-y:auto; を実行するだけです。念のため、overflow-x を非表示に設定することもできます。スクロールバーが出てきたら少し幅が足りないのでもう少し追加することをお勧めします。
リーリー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。