`
jxqc_job
  • 浏览: 475 次
社区版块
存档分类
最新评论
阅读更多
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js div浮动层拖拽效果代码 - 站长素材</title>

<script type="text/javascript">
function Drag()
{
//初始化
this.initialize.apply(this, arguments)
}
Drag.prototype = {
//初始化
initialize : function (drag, options)
{
this.drag = this.$(drag);
this._x = this._y = 0;
this._moveDrag = this.bind(this, this.moveDrag);
this._stopDrag = this.bind(this, this.stopDrag);

this.setOptions(options);

this.handle = this.$(this.options.handle);
this.maxContainer = this.$(this.options.maxContainer);

this.maxTop = Math.max(this.maxContainer.clientHeight, this.maxContainer.scrollHeight) - this.drag.offsetHeight;
this.maxLeft = Math.max(this.maxContainer.clientWidth, this.maxContainer.scrollWidth) - this.drag.offsetWidth;

this.limit = this.options.limit;
this.lockX = this.options.lockX;
this.lockY = this.options.lockY;
this.lock = this.options.lock;

this.onStart = this.options.onStart;
this.onMove = this.options.onMove;
this.onStop = this.options.onStop;

this.handle.style.cursor = "move";

this.changeLayout();

this.addHandler(this.handle, "mousedown", this.bind(this, this.startDrag))
},
changeLayout : function ()
{
this.drag.style.top = this.drag.offsetTop + "px";
this.drag.style.left = this.drag.offsetLeft + "px";
this.drag.style.position = "absolute";
this.drag.style.margin = "0"
},
startDrag : function (event)
{
var event = event || window.event;

this._x = event.clientX - this.drag.offsetLeft;
this._y = event.clientY - this.drag.offsetTop;

this.addHandler(document, "mousemove", this._moveDrag);
this.addHandler(document, "mouseup", this._stopDrag);

event.preventDefault && event.preventDefault();
this.handle.setCapture && this.handle.setCapture();

this.onStart()
},
moveDrag : function (event)
{
var event = event || window.event;

var iTop = event.clientY - this._y;
var iLeft = event.clientX - this._x;

if (this.lock) return;

this.limit && (iTop < 0 && (iTop = 0), iLeft < 0 && (iLeft = 0), iTop > this.maxTop && (iTop = this.maxTop), iLeft > this.maxLeft && (iLeft = this.maxLeft));

this.lockY || (this.drag.style.top = iTop + "px");
this.lockX || (this.drag.style.left = iLeft + "px");

event.preventDefault && event.preventDefault();

this.onMove()
},
stopDrag : function ()
{
this.removeHandler(document, "mousemove", this._moveDrag);
this.removeHandler(document, "mouseup", this._stopDrag);

this.handle.releaseCapture && this.handle.releaseCapture();

this.onStop()
},
//参数设置
setOptions : function (options)
{
this.options =
{
handle: this.drag, //事件对象
limit: true, //锁定范围
lock: false, //锁定位置
lockX: false, //锁定水平位置
lockY: false, //锁定垂直位置
maxContainer: document.documentElement || document.body, //指定限制容器
onStart: function () {}, //开始时回调函数
onMove: function () {}, //拖拽时回调函数
onStop: function () {}  //停止时回调函数
};
for (var p in options) this.options[p] = options[p]
},
//获取id
$ : function (id)
{
return typeof id === "string" ? document.getElementById(id) : id
},
//添加绑定事件
addHandler : function (oElement, sEventType, fnHandler)
{
return oElement.addEventListener ? oElement.addEventListener(sEventType, fnHandler, false) : oElement.attachEvent("on" + sEventType, fnHandler)
},
//删除绑定事件
removeHandler : function (oElement, sEventType, fnHandler)
{
return oElement.removeEventListener ? oElement.removeEventListener(sEventType, fnHandler, false) : oElement.detachEvent("on" + sEventType, fnHandler)
},
//绑定事件到对象
bind : function (object, fnHandler)
{
return function ()
{
return fnHandler.apply(object, arguments)
}
}
};





//应用
window.onload = function ()
{
var oBox = document.getElementById("box");
var oTitle = document.getElementById("canvas");
var oDrag = new Drag(oBox, {handle:oTitle, limit:false});
var aInput = document.getElementsByTagName("input");





};
</script>
</head>
<body>
<div id="box" style="background:lightblue;padding:5px;margin:50px;border:1px solid #f60;">
<canvas id="canvas" width="4000" height="300">
  </canvas>
</div>
</body>
</html>
分享到:
评论

相关推荐

    基于Canvas实现拖动滑块验证 html5 Canvas drag captcha slider jigsaw.zip

    在HTML5技术中,Canvas元素是一项强大的特性,它允许开发者在网页上绘制图形,从而创建交互式的动画、游戏以及各种视觉效果。在这个“基于Canvas实现拖动滑块验证”的项目中,我们主要探讨如何利用Canvas API来构建...

    HTML5 Canvas核心技术代码

    - `translate(x, y)`:平移坐标系。 - `rotate(angle)`:旋转坐标系。 - `scale(x, y)`:缩放坐标系。 - `transform(a, b, c, d, e, f)`和`setTransform(a, b, c, d, e, f)`:应用2D变换矩阵。 6. **动画与帧率...

    html5 canvas 制作流程图 EaselJS

    - **动画**:EaselJS的TweenJS子库支持复杂的动画效果,如淡入淡出、平移、旋转等,可用于增强流程图的动态展示。 4. **优化与性能**: - **缓存(Cache)**:对于复杂的形状或图像,可以使用EaselJS的cache方法...

    HTML5 Canvas核心技术—图形、动画与游戏开发一书源代码

    - **变换**:`translate()`, `rotate()`, `scale()`和`transform()`用于改变坐标系,实现平移、旋转、缩放等效果。 4. **动画原理** - **帧动画**:通过在每一帧改变图形的位置、大小或颜色实现动画效果。 - **...

    HTML5 Canvas五彩缤纷的3D发光水晶球动画

    在这个例子中,开发者可能使用了旋转、缩放和平移等矩阵变换,以创建水晶球的立体感。同时,为了实现3D发光效果,可能使用了颜色渐变和光照模型,通过调整颜色的透明度和亮度,使水晶球看起来像是在发光。 水晶球的...

    html5 canvas可拖放互动的照片墙插件

    CSS3的`transform`允许开发者应用旋转、缩放、平移等多种视觉效果。在插件中,用户可以对图片执行缩放操作,这可能是通过修改图片的`scale`属性实现;旋转则可能通过调整`rotate`属性来完成。 至于图片边框,这是...

    基于HTML5 Canvas绘制的线条平移科技背景特效源码.zip

    这个“基于HTML5 Canvas绘制的线条平移科技背景特效源码”就是一个利用Canvas API创建出的科技感十足的动画效果,通常用于网站背景或者交互界面,为用户提供独特的视觉体验。 在Canvas中,线条的绘制主要通过`...

    HTML5 Canvas全屏背景动画特效

    1. 图形变换:Canvas提供了旋转(`rotate()`)、缩放(`scale()`)、平移(`translate()`)等方法,可以结合时间戳实现复杂的动画效果。 2. 颜色过渡:使用`createLinearGradient()`或`createRadialGradient()`创建...

    html5 canvas绘制3D地球旋转动画特效

    同时,为了实现3D效果,需要对每个切片进行适当的缩放和平移。 接下来,我们要引入颜色渐变,模拟地球的海洋和陆地。这可以通过创建线性或径向渐变对象,并在`fillStyle`中使用它们。对于旋转动画,我们可以利用`...

    html5 canvas核心技术

    - `translate(x, y)`: 平移Canvas坐标系。 - `rotate(angle)`: 旋转坐标系。 - `scale(x, y)`: 缩放坐标系。 - `transform(a, b, c, d, e, f)`, `setTransform(a, b, c, d, e, f)`: 应用2D变换矩阵,实现更复杂...

    html5 canvas多边形分割图片动画

    这个库可能包含了一些内置的动画效果,比如淡入淡出、平移、旋转等,使得开发者可以轻松地应用到分割的多边形上。 为了确保跨平台兼容性,尤其是考虑到手机浏览器,项目需要支持Firefox。这意味着代码可能采用了...

    HTML5 Canvas核心技术—图形、动画与游戏开发【扫描版PDF(71M)+试读章节+源码】

    5. **图形变换**:`translate()`, `rotate()` 和 `scale()` 方法可用于对图形进行平移、旋转和缩放操作。 在动画部分,书籍可能讲解了: 1. **帧动画原理**:通过不断清除Canvas并重新绘制下一帧,实现连续的视觉...

    Foundation HTML5 Canvas For Games and Entertainment

    3. **图像处理**:Canvas可以加载并操作图像,例如使用`drawImage()`方法绘制图片,并通过变换矩阵实现旋转、缩放、平移等效果。此外,还可以使用`createPattern()`或`createLinearGradient()`创建图案和渐变。 4. ...

    HTML5 Canvas实现星空下的小女孩

    例如,每隔一段时间改变星星的透明度,或平移小女孩的位置: ```javascript setInterval(function() { ctx.clearRect(0, 0, canvas.width, canvas.height); // 清除画布 drawStars(500); // 重新绘制星星 // ...

    Html5 Canvas API

    它可以接受不同的参数来缩放、裁剪或平移图像。`createImageBitmap()`可以异步优化图像加载,提高性能。 8. **渐变与模式**:Canvas API支持线性渐变(`createLinearGradient()`)和径向渐变(`...

    使用HTML5 Canvas绘制 3D房间模型和人物动画特效

    1. 矩阵变换:通过矩阵运算实现物体的平移、旋转和缩放,是3D图形中的核心概念。在Canvas中,可以使用`context.transform()`和`context.setTransform()`方法进行矩阵操作。 2. 视角设定:为了模拟3D视角,需要确定...

    HTML5 canvas cook book

    - **变换操作**:通过`translate(x, y)`、`rotate(angle)`等方法实现平移、旋转等变换。 - **样式设置**:可以通过`strokeStyle`、`fillStyle`等属性设置线条颜色、填充颜色等样式。 ##### 3.5 图像处理与动画 - *...

    html5 canvas中文文档

    `translate(x, y)`方法用来改变原点的位置,将画布的坐标系沿x轴和y轴方向平移。 ```javascript ctx.translate(100, 50); ``` - **scale方法(缩放)** `scale(x, y)`方法用来缩放整个坐标系,x和y分别代表...

Global site tag (gtag.js) - Google Analytics