js 브 라 우 저 마우스 우 클릭 으로 드 롭 다운 상자 이벤트 발생

2270 단어 JavaScript


	
		
		
		<style type="text/css">
			*{
				padding: 0;
				margin: 0;
			}
			body{
				height: 3000px;
			}
			ul{
				width: 200px;
				display: none;
				list-style: none;
				border: 1px solid #333;
				box-shadow: 2px 2px 0px #aaa;
				position: absolute;
			}
			ul li{
				padding: 10px 0 10px 25px;
				box-sizing: border-box;
				font-size: 12px;
				color: #111;
			}
			ul li:nth-child(3){
				border-bottom: 1px solid #ddd;
			}
			ul li:nth-child(6){
				border-bottom: 1px solid #ddd;
			}
		</style>
	
	
		<ul>
			<li>  </li>
			<li>  </li>
			<li>    </li>
			<li>  </li>
			<li>  </li>
			<li>  </li>
			<li>     </li>
			<li>     </li>
			<li>  </li>
		</ul>
	
	<script type="text/javascript">
		var ul = document.querySelector('ul');
		var li = document.querySelectorAll('li');
		
		document.oncontextmenu = function (ev){
			ev = ev || window.event;
//			      ,  ,ture        ,false ie9      
			ev.preventDefault?ev.preventDefault():ev.returnValue=false;
			ul.style.display = 'block';

//			clientWidth    
//			offsetWidth               (    )			
			var gapX = document.documentElement.clientWidth - ul.offsetWidth;
			var Left = (ev.clientX > gapX )? gapX : ev.clientX;
			
//			scrollTop          
//			clientHeight    
//			offsetHeight               
			var gapY = (document.documentElement.scrollTop + document.documentElement.clientHeight - ul.offsetHeight);
			var Top = ev.offsetY > gapY ? gapY : ev.offsetY;
			
//			   
//			console.log('clientY '+ev.offsetY)
//			console.log(document.documentElement.scrollTop)
//			console.log(Left)
//			console.log(Top)
	
			ul.style.left = Left + 'px';
			ul.style.top = Top + 'px';
		}
		document.onclick = function (ev){
			ev = ev || window.event;
			ev.preventDefault?ev.preventDefault():ev.returnValue=false;
			ul.style.display = 'none';
		}
		

	</script>
</code></pre> 
  <br/> 
 </div> 
</div>
                            </div>
                        </div>

좋은 웹페이지 즐겨찾기