98 拖拽

//base.js

var $=function(_this)//调用,把this传递过来

{

return new Base(_this);

};

//对象式

function Base(_this)

{

//创建一个数组来获取节点和节点的数组

this.elements=[];//私有化,不共用

if(_this!=undefined)//这里的_this是一个对象,undefined也是个对象,却别typeof放回的带单引号的 “undefined”

{

this.elements[0]=_this; //把this放到数组的第一个

}

}

//获取ID节点

Base.prototype.getId=function(id)

{

this.elements.push(document.getElementById(id));

return this;

};

//获取元素节点

Base.prototype.getTagName=function(tag)

{

var tags=document.getElementsByTagName(tag);

for(var i=0;i<tags.length;i++)

{

this.elements.push(tags[i]);

}

return this;

};

//class获取

Base.prototype.getClass=function(className)

{

var all=document.getElementsByTagName("*");

for(var i=0;i<all.length;i++)

{

if(all[i].className==className)

{

this.elements.push(all[i]);

}

}

return this;

};

//获取某个节点

Base.prototype.eq=function(num)

{

var element=this.elements[num];

this.elements=[];//清空数组

this.elements[0]=element;//重新赋值

return this;

};

//设置CSS

Base.prototype.css = function (attr, value) {

for (var i = 0; i < this.elements.length; i ++) {

if (arguments.length == 1) {

return getStyle(this.elements[i], attr);//为什么这里需要return呢

}

this.elements[i].style[attr] = value;

}

return this;

}

Base.prototype.click=function(fn)

{

for(var i=0;i<this.elements.length;i++)

{

this.elements[i].onclick=fn;

}

return this;

};

//设置innerHtml 获取innerHTML

Base.prototype.html=function(value)

{

for(var i=0;i<this.elements.length;i++)

{

if(arguments.length==0)

{

return this.elements[i].innerHTML;

}

else

{

this.elements[i].innerHTML=value;

}

}

return this;

};

//添加class

Base.prototype.addClass=function(className)

{

for(var i=0;i<this.elements.length;i++)

{

if(!hasClass(this.elements[i],className))//判断是否已经有这个class

{

this.elements[i].className+=‘ ‘+className;

}

}

return this;

};

//移出class

Base.prototype.removeClass=function(className) //调用方法$().getClass("dd").addClass("a").addClass("b").removeClass("b");

{

for(var i=0;i<this.elements.length;i++)

{

if(hasClass(this.elements[i],className))//判断是否已经有这个class

{

this.elements[i].className=this.elements[i].className.replace(new RegExp(‘(\\s|^)‘+className+‘(\\s|$)‘),‘‘);

}

}

return this;

};

//添加link或style的css规则,不常用

Base.prototype.addRule=function(num,selectorText,cssText,position) //调用方法, $().addRule(0,"body","background:red",0)

{

var sheet=document.styleSheets[num];

if(typeof sheet.insertRule!="undefined")//w3c

{

sheet.insertRule(selectorText+"{"+cssText+"}",position);

}

else if(typeof  sheet.addRule!="undefined")//iE

{

sheet.addRule(selectorText,cssText,position);//sheet.addRule("body","background:red",)

}

};

//移除link或style的css规则,不常用

Base.prototype.addRule=function(num,index) //调用方法,  $().removeRule(0);

{

var sheet=document.styleSheets[num];

if(typeof sheet.deleteRule!="undefined")//w3c

{

sheet.deleteRule(index);

}

else if(typeof  sheet.removeRule!="undefined")//iE

{

sheet.removeRule(index);//sheet.addRule("body","background:red",)

}

};

//设置hover方法

Base.prototype.hover=function(over,out)

{

for(var i=0;i<this.elements.length;i++)

{

this.elements[i].onmouseover=over;

this.elements[i].onmouseout=out;

}

return this;

};

//添加show

Base.prototype.show=function()

{

for(var i=0;i<this.elements.length;i++)

{

this.elements[i].style.display="block"

}

return this;

};

//添加hide

Base.prototype.hide=function()

{

for(var i=0;i<this.elements.length;i++)

{

this.elements[i].style.display="none"

}

return this;

};

//设置物体居中

Base.prototype.center=function(width,height)

{

var top=(getInner().height-width)/2;

var left=(getInner().width-height)/2;

for(var i=0;i<this.elements.length;i++)

{

this.elements[i].style.top=top+"px";

this.elements[i].style.left=left+"px";

}

return this;

};

//触发浏览器窗口事件

Base.prototype.resize = function (fn) {

for(var i=0;i<this.elements.length;i++)

{

var element=this.elements[i];

window.onresize=function()

{

fn();

if (element.offsetLeft > getInner().width - element.offsetWidth) {

element.style.left = getInner().width - element.offsetWidth + ‘px‘;

}

if (element.offsetTop > getInner().height - element.offsetHeight) {

element.style.top = getInner().height - element.offsetHeight + ‘px‘;

}

}

}

return this;

};

//锁屏功能

Base.prototype.lock=function()

{

for(var i=0;i<this.elements.length;i++)

{

this.elements[i].style.width=getInner().width+"px";

this.elements[i].style.height=getInner().height+"px";

this.elements[i].style.display="block";

document.documentElement.style.overflow = ‘hidden‘;

console.log( this.elements[i].style.width);

}

return this;

};

Base.prototype.unlock=function()

{

for(var i=0;i<this.elements.length;i++)

{

this.elements[i].style.display="none";

document.documentElement.style.overflow = ‘auto‘;

}

return this;

};

//拖拽

Base.prototype.drag=function(){

for(var i=0;i<this.elements.length;i++)

{

this.elements[i].onmousedown=function(e)

{

preDef(e);

var e=getEvent(e);//阻止默认事件

var _this=this;

var diffX= e.clientX-_this.offsetLeft;

var diffY= e.clientY-_this.offsetTop;

if(_this.setCapture)//iE鼠标拖拽出了目标节点的时候不能再获取到事件

{

_this.setCapture();

}

document.onmousemove = function (e) {

var e = getEvent(e);

var left = e.clientX - diffX;

var top = e.clientY - diffY;

if (left < 0) {

left = 0;

} else if (left > getInner().width - _this.offsetWidth) {

left = getInner().width - _this.offsetWidth;

}

if (top < 0) {

top = 0;

} else if (top > getInner().height - _this.offsetHeight) {

top = getInner().height - _this.offsetHeight;

}

_this.style.left = left + ‘px‘;

_this.style.top = top + ‘px‘;

};

document.onmouseup=function()

{

if(_this.releaseCapture)//iE鼠标拖拽出了目标节点的时候不能再获取到事件

{

_this.releaseCapture();

}

this.onmousemove=null;

this.onmouseup=null;

}

}

}

return this;

};

//demo.js

window.onload = function () {

//个人中心

$().getClass("member").hover(function(){

$(this).css("background","url(images/arrow2.png) no-repeat 55px center");

$().getClass("member_ul").show();

},function(){

$().getClass("member_ul").hide();

$(this).css("background","url(images/arrow.png) no-repeat 55px center");

});

//登陆框

var login=$().getId("login");

var sreen=$().getId("screen");

login.center(350,250).resize(function(){

if (login.css(‘display‘) == ‘block‘) {

sreen.lock();

}

});

$().getClass("login").click(function(){

login.css("display","block");

});

$().getClass("close").click(function(){

login.css("display","none");

});

$().getClass("login").click(function(){

login.css("display","block");

sreen.lock();

});

$().getClass("close").click(function(){

login.css("display","none");

sreen.unlock();

});

//拖拽

login.drag();

};

//index.html

<!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=gb2312" />

<title>第34章 项目1-博客前端:下拉菜单</title>

<script type="text/javascript" src="tool.js"></script>

<script type="text/javascript" src="base.js"></script>

<script type="text/javascript" src="index.js"></script>

<link rel="stylesheet" type="text/css" href="index.css" />

</head>

<body style="height:3000px;">

<div id="header">

<div class="logo"><img src="images/logo.gif" alt="" /></div>

<div class="member">个人中心

<ul class="member_ul">

<li><a href="###">设置</a></li>

<li><a href="###">换肤</a></li>

<li><a href="###">帮助</a></li>

<li><a href="###">退出</a></li>

</ul>

</div>

<div class="login">登录</div>

</div>

<div id="login">

<h2><img src="images/close.png" alt="" class="close" />网站登录</h2>

<div class="user">帐 号:<input type="text" name="user" class="text" /></div>

<div class="pass">密 码:<input type="password" name="pass" class="text" /></div>

<div class="button"><input type="button" class="submit" value="" /></div>

<div class="other">注册新用户 | 忘记密码?</div>

</div>

<div id="screen"></div>

<p>1</p>

<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>

<p>1</p>

<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>

<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>

<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>

<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>

<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>

<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>

<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>

</body>

</html>

时间: 2024-11-07 14:33:32

98 拖拽的相关文章

多方向拖拽改变元素大小

拖拽:1 onmousedown 存距离 disX/Y2 onmousemove 修改left top3 onmouseup 释放资源 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style> 7 #box{ 8 width: 100px; 9

H5中的拖拽文件上传

一:介绍 1.内容摘要 2.主要设计的技术 3.drag与drop事件 4.drag与drop的部分重要代码 5.File Api 6.formData 二:程序演示 1. 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>无标题文档</title> 6 <script src="D:\jquery\jquer

JS—实现拖拽

JS中的拖拽示例:    1)实现拖拽思路:当鼠标按下和拖拽过程中,鼠标与拖拽物体之间的相对距离保持不变    2)实现拖拽遇到的问题:        问题1:当鼠标按下移动过快时,离开了拖拽的物体时,这时拖拽物体将不再随着鼠标移动                因为拖拽的div太小了,这时我们可以将在拖拽物体上的mousemove事件放到document上面                同时将mouseup也改为document上面的事件                IE下直接用obj.s

qt 拖拽 修改大小

写次篇文章之前,qt窗口的放大缩小和拖拽我都是通过setGeometry方法实现的,但是作为windows程序,windows支持橡 皮筋式(拖拽时有一个虚框)拖拽和拉伸.通过setGeometry方式实现功能是没有这种效果,幸好qt5中提供了一个本地事件处理接口 nativeEvent,具体功能可以看帮助文档,本文只讲述用该接口实现窗口放大.缩小和拖拽,具体实现代码如下: 1 virtual bool nativeEvent(const QByteArray &, void *, long *

qt 拖拽 修改大小(二)

最近项目需要实现windows下橡皮筋的效果,所以对此做了一些了解,特此记录. 首先windows系统是支持橡皮筋效果的,需要使用win32方 法:SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, showFullWindow, NULL, 0);showFullWindow是一个变量,如果需要windows默认支持橡皮筋则需要传递参数false,否则传递参数true,如果使用 windows默认的橡皮筋缩放,效果如图1所示,会产生一个矩形框,不管是窗口移

HTML5自学笔记[ 10 ]简单的购物车拖拽

用html5拖拽功能实现了一个简单的购物车,样式简陋,得学学画画提高下审美了T^T: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>购物车拖拽</title> 6 7 <style> 8 *{ margin:0; padding:0;} 9 #proList{ overflow:hidden;} 10 #pro

html5之拖拽(1)

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>图像拖动</title> 6 7 8 <style> 9 body { 10 margin: 0px;; 11 } 12 13 .container { 14 background-color: lightcyan; 15 w

ToolStrip控件左右拖拽移动效果实现

1.主窗体下部添加一个Panel乘放ToolStrip控件以实现ToolStrip在窗体下部定位.2.当ToolStrip控件中子控件超出屏幕时,拖动控件可以实现滑动效果.拖动到控件边缘距窗体边缘1/3宽度时(可设),自动回弹.拖动控件边缘在屏幕内时释放鼠标,控件自动回弹,边缘吸附窗体边缘.3.当ToolStrip控件中子控件数目较少可以在屏幕上完全显示时,拖动效果不可见.4.增加 添加.删除 按钮,点击时可增删一个ToolStripButton,方便拖动效果可见(ToolStrip控件中子控件

移动端拖拽(模块化开发,触摸事件,webpack)

通过jquery可以很容易实现CP端的拖拽.但是在移动端却不好用了.于是我自己写了一个在移动端的拖拽demo,主要用到的事件是触摸事件(touchstart,touchmove和touchend). 这个demo实现的功能是:可以拖拽的元素(在这里是图片)位于列表中,这些元素可以被拖到指定区域,到达指定区域(控制台)后,元素被插入控制台后,原来的拖动元素返回原位置,新的元素依然可以在控制台中拖动,也能拖出控制台. 在这个demo中一个用三个模块,分别为ajax模块,drag模块,position