### 页面中浮动的DIV(可拖移):深入解析与实现方法 在Web开发中,创建可拖动的元素是一项非常实用且常见的功能。本文将详细介绍如何通过HTML、CSS及JavaScript来实现页面中的一个可拖动的`<div>`元素,并深入探讨其背后的原理。 #### 1. 概述 在网页设计中,“页面中浮动的DIV(可拖移)”是指可以通过用户交互在页面上自由移动位置的`<div>`元素。这种功能常见于各种拖拽排序、图层编辑或界面布局调整等场景。实现这一效果主要依赖于HTML结构定义、CSS样式定位以及JavaScript逻辑控制三方面技术的结合。 #### 2. HTML 结构 我们需要定义一个基本的HTML结构来承载这个可拖动的`<div>`元素: ```html <div id="floater" style="height:252px; left:552px; position:absolute; top:79px; visibility:visible; width:228px; z-index:1" align="center"> <!-- 内容区域 --> </div> ``` 这里定义了一个ID为“floater”的`<div>`,并设置了初始的位置、大小等样式属性。 #### 3. CSS 定位 接下来是CSS部分,主要是利用绝对定位(`position: absolute`)使该元素脱离文档流,并能够通过改变`top`和`left`属性值来改变位置: ```css #floater { position: absolute; top: 79px; left: 552px; width: 228px; height: 252px; z-index: 1; } ``` `z-index`属性用于确保该元素始终处于页面的最前端。 #### 4. JavaScript 实现 也是最关键的部分——使用JavaScript来实现拖拽功能。以下是一些核心代码段: - **初始化变量**:定义一些全局变量用于记录当前状态和位置信息。 ```javascript var currentX = currentY = 0; var whichIt = null; var lastScrollX = 0; var lastScrollY = -90; ``` - **浏览器兼容性检查**:检测浏览器类型,以便采用相应的API进行操作。 ```javascript var NS = (document.layers) ? 1 : 0; // Netscape var IE = (document.all) ? 1 : 0; // Internet Explorer ``` - **跟随滚动位置自动调整位置**:为了让元素始终保持在屏幕上,需要监听页面滚动事件并根据滚动距离调整元素位置。 ```javascript function heartBeat() { if (IE) { var diffY = document.body.scrollTop; var diffX = document.body.scrollLeft; } else if (NS) { var diffY = self.pageYOffset; var diffX = self.pageXOffset; } // 调整位置 } ``` - **响应鼠标点击事件**:当用户点击元素时,触发一系列拖拽动作。 ```javascript function grabIt(e) { if (IE) { whichIt = event.srcElement; while (whichIt.id.indexOf("floater") === -1) { whichIt = whichIt.parentElement; if (whichIt === null) return true; } whichIt.style.pixelLeft = whichIt.offsetLeft; whichIt.style.pixelTop = whichIt.offsetTop; currentX = (event.clientX + document.body.scrollLeft); currentY = (event.clientY + document.body.scrollTop); } else { window.captureEvents(Event.MOUSEMOVE); if (checkFocus(e.pageX, e.pageY)) { whichIt = document.floater; } } return true; } ``` - **响应鼠标移动事件**:当用户拖动元素时,更新元素位置。 ```javascript function moveIt(e) { if (whichIt === null) return false; if (IE) { new... } } ``` 以上仅展示了核心代码片段,实际实现中还需要考虑更多细节,如防止元素超出屏幕边界、处理不同浏览器之间的差异等。 #### 5. 总结 通过上述步骤,我们成功地实现了页面中可拖动的`<div>`元素。这种方法不仅能够提高用户体验,还能为开发者提供更多创意空间。值得注意的是,在实际项目中还需进一步优化和完善代码逻辑,以确保其稳定性和兼容性。
























style="height: 252; left: 552; position: absolute; top: 79; visibility: visible; width: 228; z-index: 1"
align="center"> 内容内容内容内容内容
<script language="JavaScript">
self.onError=null;
currentX = currentY = 0;
whichIt = null;
lastScrollX = 0; lastScrollY = -90;
NS = (document.layers) ? 1 : 0;
IE = (document.all) ? 1: 0;
<!-- STALKER CODE -->
function heartBeat() {
if(IE) { diffY = document.body.scrollTop; diffX = document.body.scrollLeft; }
if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }
if(diffY != lastScrollY) { percent = .1 * (diffY - lastScrollY);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent); if(IE) document.all.floater.style.pixelTop += percent;
if(NS) document.floater.top += percent; lastScrollY = lastScrollY + percent;
}
if(diffX != lastScrollX) {
percent = .1 * (diffX - lastScrollX);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent);
if(IE) document.all.floater.style.pixelLeft += percent;
if(NS) document.floater.left += percent;
lastScrollX = lastScrollX + percent;
}
} <!-- /STALKER CODE -->
<!-- DRAG DROP CODE -->

- 朝陽2013-08-18還可以,要是注释信息補充下就更好了
- 让我想一会2012-04-15缺少必要的注释 感谢

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2025医疗急救能力评估理论考试试题(附含答案).docx
- 2025幼儿园教师师德师风考试试题(含完整答案).docx
- 2025幼儿园教师师德师风考试试题(附完整答案).docx
- 2025医院违规收费自查整改报告.docx
- 2025院感存在问题整改措施院感检查整改措施.docx
- 2025医疗风险防范试题(含答案).docx
- 2025增补叶酸知识培训试题(附含答案).docx
- 2025增补叶酸知识培训试题(含答案).docx
- 2025应急救援员考试题与答案.docx
- 2025医疗护理员理论考试试题(附答案).docx
- 2025医疗护理员理论考试试题(附含答案).docx
- 2025医师考核中医内科试题与答案.docx
- 2025营养指导员考试真题库(含答案).docx
- 2025预防艾梅乙母婴传播项目培训测试试题(附答案).docx
- 2025医师考核中医内科试题及答案.docx
- 2025医疗安全不良事件考试试卷考核题含答案.docx


