我的教程中的知识点功能必须强大代码也尽量最少,注释最多让学习者更容易懂
你们可以删除注释后直接添加到你的网页上,我也希望你能了解一下,我的注释是为了你的学习而不是你删除后直接添加的代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="JavaScript" type="text/javascript">
/*function用来声明函数的*/
function moveObj(obj) {
/*obj是谁调用函数的并传了自己,那这个obj就是那个元素*/
obj.style.cursor = "move";
/*cursor是光标
url 需使用的自定义光标的 URL。
注释:请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标。
default 默认光标(通常是一个箭头)
auto 默认。浏览器设置的光标。
crosshair 光标呈现为十字线。
pointer 光标呈现为指示链接的指针(一只手)
move 此光标指示某对象可被移动。
e-resize 此光标指示矩形框的边缘可被向右(东)移动。
ne-resize 此光标指示矩形框的边缘可被向上及向右移动(北/东)。
nw-resize 此光标指示矩形框的边缘可被向上及向左移动(北/西)。
n-resize 此光标指示矩形框的边缘可被向上(北)移动。
se-resize 此光标指示矩形框的边缘可被向下及向右移动(南/东)。
sw-resize 此光标指示矩形框的边缘可被向下及向左移动(南/西)。
s-resize 此光标指示矩形框的边缘可被向下移动(北/西)。
w-resize 此光标指示矩形框的边缘可被向左移动(西)。
text 此光标指示文本。
wait 此光标指示程序正忙(通常是一只表或沙漏)。
help 此光标指示可用的帮助(通常是一个问号或一个气球)。
*/
/*当obj这个元素被鼠标点击的时候触发执行无名函数*/
obj.onmousedown = function(e) {
obj.style.position = "absolute";/*将位置设置为absolute(绝对定位)*/
var drag_x = 0;/*记录鼠标按下的x位置*/
var drag_y = 0;/*记录鼠标按下的y位置*/
var draging = true;/*用于判断鼠标是否被按下*/
var left = obj.offsetLeft;/*返回当前元素的相对水平偏移位置的偏移容器*/
var top = obj.offsetTop;/*返回当前元素的相对垂直偏移位置的偏移容器*/
if(typeof document.all !== "undefined") { //IE
drag_x = event.clientX;/*clientX 事件属性返回当事件被触发时鼠标指针相对于浏览器页面(或客户区)的水平坐标。客户区指的是当前窗口。*/
drag_y = event.clientY;/*clientY 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(客户区)的垂直坐标。 客户区指的是当前窗口。*/
/*当鼠标移动时调用无名函数*/
document.onmousemove = function(e) {
if(draging === false) return false;/*当draging为假(false)赋值为假*/
obj.style.left = left + event.clientX - drag_x + "px";/*他自己的x偏移的位置加上鼠标的位置x减去点击的位置(他自己的位置加上移动距离值等于他的新位置*/
obj.style.top = top + event.clientY - drag_y + "px"/*他自己的y偏移的位置加上鼠标的位置y减去点击的位置(他自己的位置加上移动距离值等于他的新位置*/
}
} else { //FF,Chrome,Opera,Safari
drag_x = e.pageX;/*event.pageX 属性返回鼠标指针的位置,相对于文档的左边缘。提示:该事件属性通常与 event.pageY 属性一起使用。*/
drag_y = e.pageY;
/*当鼠标移动时调用无名函数*/
document.onmousemove = function(e) {
if (draging === false) return false;
obj.style.left = left + e.pageX - drag_x + "px";
obj.style.top = top + e.pageY - drag_y + "px"
}
}
document.onmouseup = function() { draging = false; };/*当鼠标取消点击时执行*/
}
}
</script>
</head>
<body>
<!--
this:通常为父级
例如:孩子继承了爸爸的属性,就等于继承了父亲的天赋,但是孩子自己也有自己的天赋,我们想要使用父亲继承来的天赋就要使用this
当没有父亲的时候,this就是自己
-->
<div style="background-color:#BB484A; width:200px; height:30px;" οnmοuseοver="moveObj(this)">这个是可以拖动的层1</div>
<!--
onmouseover事件会在鼠标指针移动到指定的元素上时发生。
moveObj(this)当鼠标移到某个元素上时,就会调用这个moveObj函数,同时this是把自己当成参数给了这个函数
-->
<div style="background-color:#2B36FF; width:200px; height:30px;" οnmοuseοver="moveObj(this)">这个是可以拖动的层2</div>
<!--
两个同样的函数和参数,他们会不会冲突,移动某个元素后另一个元素会不会移动呢?
当然不会,因为参数是他自己,也就只有他自己可以移动,为什么呢?同样的函数应该来说是会调用的,原因是onmouseover
这个关键字的作用是什么?上面有说,当鼠标没有移动到这个元素上时就不会调用moveObj函数,那个移动到就调用那个?明白了吗?
-->
</body>
</html>