要做出一個浮動視窗很簡單,但要加上判斷現在邊界在哪邊來因應相對位置就要下點功夫了,除了要抓出目前點選物件跟視窗的相對位置,還要加上對卷軸距離的判斷,否則就會出現像下圖的情況。


<!DOCTYPE HTML>
<html>
<head>
<meta charset=utf-8">
<title>Cursor</title>
<style type="text/css" media="screen">
#floatdiv {
position: absolute;
top: 0;
left: 0;
border: 1px solid;
width: 200px;
height: 50px;
display: none;
background: #FFFF00;
z-index: 100;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(function() {
var $div = $('#floatdiv');
$('[name="btn"]').click(function(e) {
var $wH = $(window).height(),
$sT = $(window).scrollTop(),
$pT = $(this).position().top,
$dH = $div.height(),
$eY = e.pageY,
$wW = $(window).width(),
$sL = $(window).scrollLeft(),
$pL = $(this).position().left,
$dW = $div.width(),
$eX = e.pageX;
$top = ($wH-$pT+$sT < $dH) ? ($eY-$dH) : $eY;
$left = ($wW-$pL+$sL < $dW) ? ($eX-$dW) : $eX;
$div
.css({left: $left, top: $top})
.show();
return false;
});
$div.click(function(e) {
// 點擊 div 本身不觸動消失
e.stopPropagation();
});
$(document).click(function() {
// 點擊任一物件使 div 消失
$div.hide();
});
});
</script>
</head>
<body>
<div id="floatdiv"></div>
<a href="#" name="btn">click me</a>
</body>
</html>
1 則留言:
非常實用!
張貼留言