`

创建一个可移动的层

阅读更多
大家好,我好想自己亲手写一个可以用鼠标拖动的层,可是我一点头绪也没有,从JAVAEYE上搜到了一篇文章,可是还是看不懂.
有谁知道这个原理,可是讲讲吗(最好写一点面向对象的js代码)?我想弄懂之后,创建一个JS 工具类,用来创建一个notice对话框.
谢谢您!!!!

javaeye上一网友的文章,他的地址我不记得了
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
.divcc{    
    position:absolute;    
    border: 1px #FF99FF solid;    
    background-color:#FFFF99;     
    height:auto;     
    width:300px;     
    z-index:1000;    
}    
   
.divdd{    
    position:absolute;    
    border: 0px;    
    background-color:#FFFF80;     
    height:auto;     
    width:300px;     
    z-index:999;    
} 
</style>
<script>
function cursorover(){    
        document.getElementById("cc").style.cursor="move";    
    }    
   
    function cursorout(){    
        document.getElementById("cc").style.cursor="auto";    
    }    
   
    //可移动的层    
    var dragapproved=false;    
    var z,x,y;    
   
    function move(){    
        if (event.button==1&&dragapproved){    
            z.style.pixelLeft=temp1+event.clientX-x;    
            z.style.pixelTop=temp2+event.clientY-y;    
            return false;    
        }    
        if(event.button==2){    
            alert("别复制!!");    
            return false;    
        }    
    }    
   
    function drags(){    
        if (!document.all)    
            return;    
        if (event.srcElement.className=="divcc"){    
            dragapproved=true;    
            z=event.srcElement;    
            temp1=z.style.pixelLeft;    
            temp2=z.style.pixelTop;    
            x=event.clientX;    
            y=event.clientY;    
            document.onmousemove=move;    
        }    
    }    
   
    document.onmousedown=drags;    
    document.onmouseup=new Function("dragapproved=false");    
//--------------------------------------------------------------------------------------------------------------------------    
   
    //初始化层位置    
    function init(){    
        var w =document.body.clientWidth;    
        var h =document.body.clientHeight;    
        var divObj = document.getElementById("cc");    
        divObj.style.left = w/2;    
        divObj.style.top = h/2;
		alert('w:'+w);
		alert('h:'+h);
    }    
    //最大化    
    function max(){    
        document.getElementById("dd").style.display="inline";    
        var divObj = document.getElementById("cc");    
        divObj.style.width="300px";    
        var w =document.documentElement.clientWidth;    
        var h =document.documentElement.clientHeight;    
        divObj.style.left = w/2;    
        divObj.style.top = h/2;    
    }    
    //最小化    
    function min(){    
        document.getElementById("dd").style.display="none";    
        var divObj = document.getElementById("cc");    
        var w =document.documentElement.clientWidth;            //获得网页可见区域的宽度(不包括边框)    
        var h =document.documentElement.clientHeight;           //获得网页可见区域的高度(不包括边框)    
        divObj.style.width="150px";                             //设置层宽度    
        var myw = divObj.offsetWidth;                           //获得自身的宽度(包括边框)    
        var myh = divObj.offsetHeight;                          //获得自身的高度(包括边框)    
        var curw = w - myw;    
        var curh = h - myh;    
        divObj.style.left = curw;    
        divObj.style.top = curh;    
    }    
    //关闭    
    function clo(){    
        document.getElementById("cc").style.display="none";    
    }
</script>
</HEAD>

<BODY onload="init()"> 
<div id="cc" onmouseover="cursorover()" onmouseout="cursorout()" class="divcc"> 
<span style="height:20px;" onclick="max()">最大化</span> <span onclick="min()">最小化</span> <span onclick="clo()">关闭</span><br/> 
<div id="dd" class="divdd"> 
<table border="1px" cellpadding="0" cellspacing="0" bordercolor="#FF33CC" width="300px"> 
<tr> 
<td>1</td> 
<td>2</td> 
<td>3</td> 
</tr> 
<tr> 
<td>4</td> 
<td>5</td> 
<td>6</td> 
</tr> 
<tr> 
<td>7</td> 
<td>8</td> 
<td>9</td> 
</tr> 
<tr> 
<td>a</td> 
<td>b</td> 
<td>c</td> 
</tr> 
</table> 
</div> 

</div> 
</BODY>
</HTML>


document.documentElement与document.body是同一个对象吗?
答案是:
原来HTML里是document.body
XHTML里是document.documentElement
都指的是 <body >节点(OR元素)
可以这样兼容:
function   getBodyObj() 
{ 
return   (document.documentElement)   ?   document.documentElement   :   document.body   ; 
} 

分享到:
评论

相关推荐

    jQuery弹出层 可移动层 提示框 浮动层

    在标题提及的案例中,"jQuery弹出层 可移动层 提示框 浮动层",意味着我们需要创建一个不仅可以显示信息,还可以通过用户手势移动的浮动窗口。为了实现这一功能,我们需要结合jQuery的选择器、事件处理和动画方法。...

    漂亮的js可移动弹出层

    总的来说,"漂亮的js可移动弹出层"是一个结合了JavaScript和jQuery技术的交互设计实例,它通过优雅的代码和精心设计的用户界面,提高了网站的可用性和吸引力。开发者可以通过研究这些文件,学习如何创建类似的弹出层...

    js弹出遮罩的可移动层

    在网页开发中,创建一个可移动的遮罩层通常是实现交互性和用户体验的重要一环。"js弹出可移动的遮罩层"是一个典型的JavaScript技术应用,用于在网页上生成一个可移动的覆盖层,通常用于显示提示信息、加载进度或者...

    创建三层结构解决方案

    在IT行业中,三层架构是一种常见的软件开发模型,用于构建可扩展、可维护的B/S(浏览器/服务器)系统。这种架构将应用程序分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和...

    模式对话框(可刷新)+可移动div+遮罩层

    在"CustomDiv"这个文件中,我们可以推测这可能包含了一段代码示例,演示如何创建一个具有上述特性的对话框:可刷新的模式对话框、可移动的div以及遮罩层。实现这样的功能通常涉及到以下几个步骤: 1. **创建模式...

    可移动的div层,简单通用

    在网页设计和开发中,创建一个可移动的div层是一个常见的需求,这通常涉及到JavaScript或者CSS的交互式应用。标题“可移动的div层,简单通用”表明我们要讨论的是一个适用于多种情况、易于实现的解决方案,它允许...

    asp.net购物车jquery cookie可移动模态层版

    在这个项目中,jQuery被用来增强用户体验,例如通过Ajax实现无刷新添加商品到购物车,以及创建可移动的模态层。jQuery的Cookie插件允许开发者在客户端存储数据,这在购物车场景下非常有用,因为它可以记住用户的选择...

    经典拖曳层移动层效果

    1. **HTML结构**:首先,需要在HTML中创建一个可拖动的层(div),并为其设置唯一ID以便在JavaScript中引用。 2. **CSS样式**:通过CSS设定层的外观和位置,如宽度、高度、边框、背景色等,并确保其可被鼠标选中。 ...

    使用BOOTSTRAP创建没有遮罩的可移动dialog

    在本主题中,我们将深入探讨如何使用Bootstrap创建一个无遮罩层(modal)的可移动对话框。这种对话框在用户交互中具有较高的灵活性,可以增强用户体验。 首先,我们需要理解Bootstrap中的模态组件(Modal)。模态...

    弹出可移动的div层

    虽然具体内容无法直接提供,但可以基于这个主题分享一些通用的方法来创建一个可移动的div层: 1. **HTML 结构**:首先,我们需要一个包含内容的div元素,例如: ```html 弹出层标题 这里是内容... ``` 2. ...

    一个超好用的js移动层,代码超简单

    JavaScript 移动层,也称为弹出层或对话框,是一种常见的前端开发技术,用于在网页上创建可交互的浮动窗口。这种技术尤其在移动设备上广泛应用,因为它们提供了便捷的方式来展示信息、提示用户或者进行复杂的用户...

    用层模拟可移动的小窗口

    1. 创建HTML层(可以是`&lt;div&gt;`元素或其他合适的元素),并设置其样式,如背景色、边框、透明度等,使其看起来像一个可移动的窗口。 2. 为这个层添加`mousedown`事件监听器,记录初始鼠标位置和层的当前位置。 3. ...

    基于层的网页弹出提示,可移动,网页变灰.rar

    在网页开发中,这种功能通常是通过JavaScript实现的,利用DOM(文档对象模型)操作来创建和控制一个浮动的层(也称为div层或对话框)。"基于层的网页弹出提示,可移动,网页变灰"这个压缩包文件包含了实现这一功能的...

    实例22 如何创建和删除多层文件夹

    在计算机操作中,管理和操作文件夹是日常工作中不可或缺的一部分。多层文件夹的创建与删除是组织和整理大量数据的有效方式。本实例将详细介绍如何在Windows操作系统中创建和删除多层文件夹,以便更好地管理你的文件...

    Scott Mitchell 的ASP_NET 2_0数据教程之二:创建一个业务逻辑层

    为了保持组织结构,创建两个子文件夹,一个用于DAL,一个用于BLL,将类型化数据集移动到DAL文件夹,并在BLL文件夹中创建四个类文件。 **方法实现** 每个BLL类将包含与TableAdapter对应的方法,但在此基础上增加...

    js弹出层居中可移动

    通过上述步骤,我们可以实现一个基本的居中可移动的弹出层。这种方法的优点在于简单易懂,适用于大多数场景。但在实际应用中还需要考虑兼容性问题,特别是对于不同浏览器的支持情况。此外,还可以通过引入库如jQuery...

    jspanel创建多功能浮动层

    `jspanel`是一个轻量级且功能强大的JavaScript库,专门用于在网页上创建可定制的浮动层,它提供了丰富的选项和事件,使得开发者可以轻松地构建出多功能浮动层。本文将深入探讨如何使用`jspanel`来创建各种类型的浮动...

    简单的jQuery弹出遮罩层小插件,可移动,兼容IE678.rar

    这个小插件的核心功能是创建一个可移动、可关闭的弹出层,它在设计时特别考虑了对老版本Internet Explorer(IE6、IE7和IE8)的兼容性。 jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画...

    javascript经典特效---固定并可移动的层.rar

    以上就是利用JavaScript实现固定并可移动层的基本流程。通过这个例子,我们可以深入理解JavaScript在网页交互中的作用,以及如何结合CSS实现更丰富的用户界面动态效果。在实际开发中,还可以进一步优化,比如添加...

    javascript经典特效---可移动的宣传层.rar

    标题中的“javascript经典特效---可移动的宣传层”暗示了这个压缩包可能包含了一个使用JavaScript实现的互动式网页效果,具体来说是一个可以被用户在页面上自由移动的宣传层。这种效果通常用于网站上的广告或者信息...

Global site tag (gtag.js) - Google Analytics