文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>模拟拖放的实现

模拟拖放的实现

时间:2007-07-08  来源:cnphper

大家好: 

今天要向大家介绍的技术是网页中层的模拟拖放。拖放现在在很多博客系统中被广泛的应用在对UI调整的过程中。其实模拟拖放是一个很早就有的技术了,早在IE4的时候就已经出现了。

基本的思想是:创建一个可跟着鼠标移动的绝对定位层。

大家可能还记得在一些不太专业的网站上经常出现的鼠标跟随文字吧!其实是很容易实现的。

上面的代码运行之后,红色的层会随着鼠标指针移动。

<html>

<head>

<title></title>

<script type=”text/javascript”>

Function handleMouseMove(oEvent){

Var oDiv = document.getElementById(“div1”);

oDiv.style.left = oEvent.clientX;

oDiv.style.top = oEvent.clientY;

}

</script>

<style type=”text/css”>

#div1{

Background-color:red;

Height:100px;

Width:100px;

Position:absolute;

}

</style>

</head>

<body onmousemove=”handleMouseMove(event)”>

<p>请移动你的鼠标</p>

<p><div id=div1></div></p>

</body>

</html>

但是要实现模拟拖放,层只移动一下是完全不够的,必须能够初始化和停止拖动过程。

所以代码有些复杂。

现在我们开始完成我们模拟拖放程序:

首先,我们需要引入一个事件管理对象EventUtil对象

EventUtil是一个将各种浏览器中的事件处理函数统一的一个对象。

代码如下:

var EventUtil = new Object;

EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler) {

    if (oTarget.addEventListener) {

        oTarget.addEventListener(sEventType, fnHandler, false);

    } else if (oTarget.attachEvent) {

        oTarget.attachEvent("on" + sEventType, fnHandler);

    } else {

        oTarget["on" + sEventType] = fnHandler;

    }

};

        

EventUtil.removeEventHandler = function (oTarget, sEventType, fnHandler) {

    if (oTarget.removeEventListener) {

        oTarget.removeEventListener(sEventType, fnHandler, false);

    } else if (oTarget.detachEvent) {

        oTarget.detachEvent("on" + sEventType, fnHandler);

    } else {

        oTarget["on" + sEventType] = null;

    }

};

 

EventUtil.formatEvent = function (oEvent) {

 

    if (typeof oEvent.charCode == "undefined") {

        oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;

        oEvent.isChar = (oEvent.charCode > 0);

    }

    

    if (oEvent.srcElement && !oEvent.target) {

        oEvent.eventPhase = 2;

        oEvent.pageX = oEvent.clientX + document.body.scrollLeft;

        oEvent.pageY = oEvent.clientY + document.body.scrollTop;

        

        if (!oEvent.preventDefault) {

                oEvent.preventDefault = function () {

                    this.returnValue = false;

                };

        }

 

        if (oEvent.type == "mouseout") {

            oEvent.relatedTarget = oEvent.toElement;
%3

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载