以下是HTML页面的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>中国的流浪猫</title>
<link rel="stylesheet" type="text/css" href="regality.css">
</head>
<body>
<div style="width: 200px;height: 200px;background-color: green;position: absolute;left: 0;top: 0">
</div>
<script type="text/javascript" src="lesson.js">
</script>
</body>
</html>
var div = document.getElementsByTagName('div')[0];
function drag(elem) {
var disX,
disY;
addEvent(elem, 'mousedown', function(e) {
var event = e || window.event;
disX = event.clientX - parseInt(getStyle(elem, 'left'));
disY = event.clientY - parseInt(getStyle(elem, 'top'));
addEvent(document, 'mousemove', mouseMove);
addEvent(document, 'mouseup', mouseUp);
stopBubble(event);
cancelHandler(event);
});
function mouseMove(e) {
var event = e || window.event;
elem.style.left = event.clientX - disX + 'px';
elem.style.top = event.clientY - disY + 'px';
};
function mouseUp(e) {
var event = e || window.event;
document.removeEventListener( 'mousemove', mouseMove);
document.removeEventListener('mouseup', mouseUp);
};
}
drag(div);
//封装方法,查询dom元素的样式,
//prop(元素的属性)传参数的时候的传字符串形式
function getStyle(elem, prop) {
if (window.getComputedStyle) {
return window.getComputedStyle(elem, null)[prop];
} else {
return elem.currentStyle[prop];
}
}
//封装方法,给dom元素添加事件类型函数,elem指代dom元素,type指代事件类型(例如'click'),handle指代函数
function addEvent(elem, type, handle) {
if (elem.addEventListener) {
elem.addEventListener(type, handle, false)
} else if (elem.attachEvent) {
elem.attachEvent('on' + type, function() {
handle.call(elem);
})
} else {
elem['on' + type] = handle;
}
}
//封装方法,取消冒泡
function stopBubble(event) {
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
//封装方法,取消默认
function cancelHandler(event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}