JQuery有很多这样的插件,但是我们公司不用jquery,没有插件,所以我就试着自己写,我也不知道别人是怎么写的,纯粹是按着自己的想法来的。 
直接上代码: 
复制代码 代码如下:
 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Demo</title> 
<script type="text/javascript"> 
window.onload = function(){ 
var btn = document.getElementsByTagName('button')[0]; 
var flt = document.getElementsByTagName('div')[0]; 
btn.onclick = function(){ 
event.cancelBubble = true; 
var x = btn.offsetLeft - 15 + 'px'; 
var y = btn.offsetTop - 100 + 'px'; 
flt.style.top = y; 
flt.style.left = x; 
flt.style.display = 'block'; 
} 
document.onclick = function(){ 
flt.style.display = 'none'; 
} 
} 
</script> 
<style type="text/css"> 
*{ 
margin: 0px; 
padding: 0px; 
} 
div{ 
width: 60px; 
height: 100px; 
background: #33ccff; 
display: none; 
position: absolute; 
} 
div ul{ 
text-align: center; 
} 
div li{ 
list-style-type: none; 
} 
button{ 
top: 300px; 
left: 400px; 
position: absolute; 
} 
</style> 
</head> 
<body> 
<button>Click</button> 
<div> 
<ul> 
<li><a href="">Demo 1</a></li> 
<li><a href="">Demo 2</a></li> 
<li><a href="">Demo 3</a></li> 
<li><a href="">Demo 4</a></li> 
<li><a href="">Demo 5</a></li> 
</ul> 
</div> 
</body> 
</html> 
复制到本地就可以测试了。
这里要说一下cancelBubble这两个东西。因为我做的效果是点击按钮就显示div,点击页面的任意位置div就消失,但javascript的冒泡机制是button获得一个onclick事件后,往上冒泡,dom在获得一个onclick事件,这样的话就和让div消失的onclick事件冲突了,所以需要event.cancelBubble = true;这行代码来停止冒泡。大体就是这样,代码很简单。
您可能感兴趣的文章:
