11. maj 2001 - 02:20
Der er
1 kommentar og
1 løsning
Klip hul i lag
Hvem kan lave et lille script, der gør følgende:
Jeg vil placere to billeder lige over hinanden i hvert sit lag. Når man kører musen over billedet i øverste lag clip\'er den hul i det, så man kan se billede neden under i et lille område omkring muse-markøren.
Jeg har skrabet nedenstående kode op til at følge musen, men ka\' sgu ikke hitte ud af resten.
var ie;
var ns;
var lPointer;
function moveTo(obj,x,y) {
obj.xpos = x;
obj.left = obj.xpos;
obj.ypos = y;
obj.top = obj.ypos;
}
function opdater(e) {
var x = (ns4) ? e.pageX : event.x + document.body.scrollLeft;
var y = (ns4) ? e.pageY : event.y + document.body.scrollTop;
x += 10;
y += 10;
moveTo(lPointer, x, y);
}
function init() {
ie4 = (document.all) ? true : false;
ns4 = (document.layers) ? true : false;
if (ns4) {
document.captureEvents(Event.MOUSEMOVE)
}
document.onmousemove = opdater;
if (ns4) lPointer = document.pointer
if (ie4) lPointer = pointer.style
lPointer.xpos = parseInt(lPointer.left)
lPointer.ypos = parseInt(lPointer.top)
}
...den flytter dette lag sammen med musen:
<div id=\"pointer\" style=\"height: 20; width: 19; left: 200; top: 200; position: absolute; z-index: 100\">
muse-ting</div>
Nej, ikke helt :-)
jeg har selv løst den:
<html>
<head>
<title></title>
<script language=\"JavaScript\">
<!--
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
function init() {
if (ns4) block = document.blockDiv
if (ie4) block = blockDiv.style
}
function clipValues(obj,which) {
if (ns4) {
if (which==\"t\") return obj.clip.top
if (which==\"r\") return obj.clip.right
if (which==\"b\") return obj.clip.bottom
if (which==\"l\") return obj.clip.left
}
else if (ie4) {
var clipv = obj.clip.split(\"rect(\")[1].split(\")\")[0].split(\"px\")
if (which==\"t\") return Number(clipv[0])
if (which==\"r\") return Number(clipv[1])
if (which==\"b\") return Number(clipv[2])
if (which==\"l\") return Number(clipv[3])
}
}
function clipTo(obj,t,r,b,l) {
if (ns4) {
obj.clip.top = t
obj.clip.right = r
obj.clip.bottom = b
obj.clip.left = l
}
else if (ie4) obj.clip = \"rect(\"+t+\"px \"+r+\"px \"+b+\"px \"+l+\"px)\"
}
function clipBy(obj,t,r,b,l) {
if (ns4) {
obj.clip.top = clipValues(obj,\'t\') + t
obj.clip.right = clipValues(obj,\'r\') + r
obj.clip.bottom = clipValues(obj,\'b\') + b
obj.clip.left = clipValues(obj,\'l\') + l
}
else if (ie4) obj.clip = \"rect(\"+(this.clipValues(obj,\'t\')+t)+\"px \"+(this.clipValues(obj,\'r\')+r)+\"px \"+Number(this.clipValues(obj,\'b\')+b)+\"px \"+Number(this.clipValues(obj,\'l\')+l)+\"px)\"
}
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR=\"#FFFFFF\" onLoad=\"init()\">
<DIV ID=\"blockDiv\" STYLE=\"position:absolute; left:0; top:145; width:250; height:300; clip:rect(0,0,0,0); z-index: 1\"><img src=\"assets/front/came_color_img.jpg\">
</DIV>
<div id=\"Layer1\" style=\"position:absolute; left:0; top:145; width:250; height:300; z-index:0\">
<img src=\"assets/front/came_img.jpg\" width=\"250\" height=\"259\">
</div>
<Script>
var lPointer;
if (ns4) block = document.blockDiv
if (ie4) block = blockDiv.style
function opdater(e) {
var x = (ns4) ? e.pageX : event.x + document.body.scrollLeft;
var y = (ns4) ? e.pageY : event.y + document.body.scrollTop;
x += 10;
y += 10;
clipTo(block,0,x,250,x-50)
}
function init() {
ie4 = (document.all) ? true : false;
ns4 = (document.layers) ? true : false;
if (ns4) {
document.captureEvents(Event.MOUSEMOVE)
}
document.onmousemove = opdater;
}
</Script>
</BODY>
</HTML>