The acronym SVG stands for Scalable Vector Graphics and refers to graphics that are generated by a geometric specification rather than by pixels, like an image (called rasterized graphics as opposed to the vectorized graphics described here).
<!DOCTYPE html>
<html>
<head>
<title>XoaX.net's HTML</title>
<style>
#idDiv {
padding:10px;
background-color:black;
border: 1px solid white;
float:left;
}
</style>
<script type="text/javascript" src="RotateToMouseCursor.js"></script>
</head>
<body>
<div id="idDiv">
<svg width="600px" height="600px" xmlns="http://www.w3.org/2000/svg"
viewBox="-300.0 -300.0 600 600">
<defs>
<g id="idArrowHead" transform="rotate(30)">
<polygon points="-25 25 25 0 -25 -25 -15 0" fill="red" stroke="white"
stroke-width="2"/>
</g>
</defs>
<use xlink:href="#idArrowHead" />
</svg>
</div>
</body>
</html>function Init() {
var qDivElement = document.getElementById("idDiv");
// The mouse move event handler
qDivElement.onmousemove = function(e) {
this.SetCursorCoordinates(e);
var dCenterX = (this.clientWidth + 1)/2;
var dCenterY = (this.clientHeight + 1)/2;
var dDeltaX = this.mdCursorX - dCenterX;
var dDeltaY = this.mdCursorY - dCenterY;
qGroupElement = document.getElementById("idArrowHead");
var dAngle = ((Math.atan2(dDeltaY, dDeltaX)*180)/Math.PI);
qGroupElement.setAttribute('transform', 'rotate('+dAngle+')');
};
// A function to calculate the coordinates of the cursor in the
qDivElement.SetCursorCoordinates = function(e) {
var dElementOffsetX = 0;
var dElementOffsetY = 0;
var qElement = this;
do{
dElementOffsetX += qElement.offsetLeft - qElement.scrollLeft;
dElementOffsetY += qElement.offsetTop - qElement.scrollTop;
qElement = qElement.offsetParent
} while(qElement != document.body)
this.mdCursorX = e.pageX - dElementOffsetX;
this.mdCursorY = e.pageY - dElementOffsetY;
}
}
var qGroupElement = null;
window.onload = Init;© 20072025 XoaX.net LLC. All rights reserved.