html可拉动页面布局,DIV+CSS+JS实现的可以随意拖动的网页布局

这篇博客介绍了如何使用HTML、CSS和JavaScript实现一个可拖动的网页布局。通过创建不同区域(left、center、right)并设置样式,再结合JavaScript事件监听,实现在网页上拖动div元素的功能。代码示例详细解释了拖动开始、拖动过程及拖动结束时的操作逻辑。
DIV+CSS+JS实现的可以随意拖动的网页布局丨芯晴网页特效丨CsrCode.Cn

body {margin:0px;padding:0px;font-size:12px;text-align:center;}

body > div {text-align:center; margin-right:auto; margin-left:auto;}

.content{width:900px;}

.content .left{

float:left;

width:20%;

border:1px solid #FF0000;

margin:3px;

}

.content .center{float:left;border:1px solid #FF0000;margin:3px;width:57%}

.content .right{float:right;width:20%;border:1px solid #FF0000;margin:3px}

.mo{height:auto;border:1px solid #CCC;margin:3px;background:#FFF}

.mo h1{background:#ECF9FF;height:18px;padding:3px;cursor:move}

.mo .nr{height:80px;border:1px solid #F3F3F3;margin:2px}

h1{margin:0px;padding:0px;text-align:left;font-size:12px}

var dragobj={}

window.onerror=function(){return false}

//on_ini()是判断浏览器的

function on_ini(){

String.prototype.inc=function(s){return this.indexOf(s)>-1?true:false}

var agent=navigator.userAgent

window.isOpr=agent.inc("Opera")

window.isIE=agent.inc("IE")&&!isOpr

window.isMoz=agent.inc("Mozilla")&&!isOpr&&!isIE

if(isMoz){

Event.prototype.__defineGetter__("x",function(){return this.clientX+2})

Event.prototype.__defineGetter__("y",function(){return this.clientY+2})

}

basic_ini()

}

//basic_ini()方法,如果$(string)则取值为document.getElementById(obj),

function basic_ini(){

//获得节点

window.$=function(obj){return typeof(obj)=="string"?document.getElementById(obj):obj}

//删除节点

window.oDel=function(obj){if($(obj)!=null){$(obj).parentNode.removeChild($(obj))}}

}

window.onload=function(){

on_ini()

var o=document.getElementsByTagName("h1")

for(var i=0;i

o[i].onmousedown=function(e){

if(dragobj.o!=null)

return false

e=e||event

dragobj.o=this.parentNode

dragobj.xy=getxy(dragobj.o)

dragobj.xx=new Array((e.x-dragobj.xy[1]),(e.y-dragobj.xy[0]))

dragobj.o.style.width=dragobj.xy[2]+"px"

dragobj.o.style.height=dragobj.xy[3]+"px"

dragobj.o.style.left=(e.x-dragobj.xx[0])+"px"

dragobj.o.style.top=(e.y-dragobj.xx[1])+"px"

dragobj.o.style.position="absolute"

var om=document.createElement("div")

dragobj.otemp=om

om.style.width=dragobj.xy[2]+"px"

om.style.height=dragobj.xy[3]+"px"

dragobj.o.parentNode.insertBefore(om,dragobj.o)

return false

}

}

}

document.onselectstart=function(){return false}

window.onfocus=function(){document.onmouseup()}

window.onblur=function(){document.onmouseup()}

//鼠标弹开时

document.onmouseup=function(){

if(dragobj.o!=null){

dragobj.o.style.width="auto"

dragobj.o.style.height="auto"

dragobj.otemp.parentNode.insertBefore(dragobj.o,dragobj.otemp)

dragobj.o.style.position=""

oDel(dragobj.otemp)

dragobj={}

}

}

//鼠标点下移动时

document.onmousemove=function(e){

e=e||event

if(dragobj.o!=null){

dragobj.o.style.left=(e.x-dragobj.xx[0])+"px"

dragobj.o.style.top=(e.y-dragobj.xx[1])+"px"

createtmpl(e)

}

}

//getxy方法介绍

function getxy(e){

var a=new Array()

var t=e.offsetTop;

var l=e.offsetLeft;

var w=e.offsetWidth;

var h=e.offsetHeight;

while(e=e.offsetParent){

t+=e.offsetTop;

l+=e.offsetLeft;

}

a[0]=t;a[1]=l;a[2]=w;a[3]=h

return a;

}

function inner(o,e){

var a=getxy(o)

if(e.x>a[1]&&e.xa[0]&&e.y

if(e.y

return 1;

else

return 2;

}else

return 0;

}

function createtmpl(e){

for(var i=0;i<12;i++){

if($("m"+i)==dragobj.o)

continue

var b=inner($("m"+i),e)

if(b==0)

continue

dragobj.otemp.style.width=$("m"+i).offsetWidth

if(b==1){

$("m"+i).parentNode.insertBefore(dragobj.otemp,$("m"+i))

}else{

if($("m"+i).nextSibling==null){

$("m"+i).parentNode.appendChild(dragobj.otemp)

}else{

$("m"+i).parentNode.insertBefore(dragobj.otemp,$("m"+i).nextSibling)

}

}

return

}

for(var j=0;j<3;j++){

if($("dom"+j).innerHTML.inc("div")||$("dom"+j).innerHTML.inc("DIV"))

continue

var op=getxy($("dom"+j))

if(e.x>(op[1]+10)&&e.x

$("dom"+j).appendChild(dragobj.otemp)

dragobj.otemp.style.width=(op[2]-10)+"px"

}

}

}

dom0

dom1

dom2

dom3

dom4

dom5

dom6

dom7

dom8

dom9

dom10

dom11


本特效由 芯晴网页特效丨CsrCode.Cn 收集于互联网,只为兴趣与学习交流,不作商业用途。

参考url:http://www.csrcode.cn/html/txdm/tcys/3191.htm

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值