社区
Web 开发
帖子详情
来个可拖动HTML自定义模板代码!
nisersent
2008-08-28 12:07:14
类似新浪BLOG那种可拖动的自定义模板如何做?
比如"网站公告","日历控件"这些固定的模板,可在后台用鼠标自定义位置,
最好还带有沾粘效果的,求高手给完整代码代码.
...全文
390
17
打赏
收藏
来个可拖动HTML自定义模板代码!
类似新浪BLOG那种可拖动的自定义模板如何做? 比如"网站公告","日历控件"这些固定的模板,可在后台用鼠标自定义位置, 最好还带有沾粘效果的,求高手给完整代码代码.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lyboyc
2008-09-04
打赏
举报
回复
也发我lyboyc@163.com
研究下,谢谢
dujun3245350
2008-09-04
打赏
举报
回复
我已经给你们发了
dujun3245350
2008-09-04
打赏
举报
回复
给你发了
x37623412
2008-08-29
打赏
举报
回复
发邮箱 37623412@qq.com
dujun3245350
2008-08-28
打赏
举报
回复
if(!finded){
for(var i = 0; i < CoolDrag.container.childNodes.length; i++){
var o = CoolDrag.container.childNodes[i];
if(getRealLeft(o) <= CoolDrag.cloneobj.offsetLeft && getRealLeft(o) + o.offsetWidth >= CoolDrag.cloneobj.offsetLeft)
o.appendChild(CoolDrag.obj);
}
}
with(CoolDrag.shadow.style){
left = (CoolDrag.cloneobj.offsetLeft + 4) + "px";
top = (CoolDrag.cloneobj.offsetTop + 4) + "px";
}
//document.title = CoolDrag.cloneobj.style.left + "|" + CoolDrag.shadow.style.left;
},
end:function(e){
if(!CoolDrag.dragged)return;
CoolDrag.obj.className = "dragLayer";
CoolDrag.dragged = false;
CoolDrag.shadow.parentNode.removeChild(CoolDrag.shadow);
CoolDrag.timer = CoolDrag.repos(150,15);
//保存cookie
var str="";
for(var i=0; i<CoolDrag.container.childNodes.length; i++){
var o = CoolDrag.container.childNodes[i];
if(i>0)str += "|";
str += o.id + ":";
for(var j=0; j < o.childNodes.length; j++){
if(j>0)str += ",";
str += o.childNodes[j].id ;
}
}
CoolDrag.save("cooldrag",str,24);
},
repos:function(aa,ab){
//var f=CoolDrag.obj.filters.alpha.opacity;
var tl=getRealLeft(CoolDrag.cloneobj);
var tt=getRealTop(CoolDrag.cloneobj);
var kl=(tl-getRealLeft(CoolDrag.obj))/ab;
var kt=(tt-getRealTop(CoolDrag.obj))/ab;
//var kf=f/ab;
return setInterval(function(){if(ab<1){
clearInterval(CoolDrag.timer);
CoolDrag.cloneobj.parentNode.removeChild(CoolDrag.cloneobj);
CoolDrag.obj=null;
return;
}
ab--;
tl-=kl;
tt-=kt;
//f-=kf;
CoolDrag.cloneobj.style.left=parseInt(tl)+"px";
CoolDrag.cloneobj.style.top=parseInt(tt)+"px";
//CoolDrag.tdiv.filters.alpha.opacity=f;
}
,aa/ab)
},
min:function(e){
if(!e) e = window.event;
var obj = getT(e);
var rootObj = obj.parentNode.parentNode.parentNode;
var id = rootObj.id;
if(SavedObject.getStatus(id)[1]){
SavedObject.setStatus(id,0);
rootObj.style.height = "20px";
rootObj.childNodes[1].style.display = 'none';
}else{
SavedObject.setStatus(id,1);
rootObj.lastChild.style.display = '';
rootObj.style.height = SavedObject.getStatus(id)[2];
}
obj.innerHTML = obj.innerHTML==0 ? 2 :0;
},
close:function(e){
if(!e) e = window.event;
var obj = getT(e);
var rootObj = obj.parentNode.parentNode.parentNode;
rootObj.parentNode.removeChild(rootObj);
},
save:function(name, value, hours){
var expire = "";
if(hours != null)
{
expire = new Date((new Date()).getTime() + hours * 3600000);
expire = "; expires=" + expire.toGMTString();
}
document.cookie = name + "=" + escape(value) + expire;
},
read:function(name){
var cookieValue = "";
var search = name + "=";
if(document.cookie.length > 0)
{
offset = document.cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
cookieValue = unescape(document.cookie.substring(offset, end))
}
}
return cookieValue;
}
}
function $(id){
return document.getElementById(id);
}
function getT(e){
return e.target || e.srcElement;
}
function getMouseX(e){
return e.pageX ? e.pageX : e.clientX + document.body.scrollLeft - document.body.clientLeft;
}
function getMouseY(e){
return e.pageY ? e.pageY : e.clientY + document.body.scrollTop - document.body.clientTop;
}
function getRealLeft(o){
var l = 0;
while(o){
l += o.offsetLeft - o.scrollLeft;
o = o.offsetParent;
}
return(l);
}
function getRealTop(o){
var t = 0;
while(o){
t += o.offsetTop - o.scrollTop;
o = o.offsetParent;
}
return(t);
}
function cleanWhitespace(node) {
var notWhitespace = /\S/;
for (var i=0; i < node.childNodes.length; i++) {
var childNode = node.childNodes[i];
if ((childNode.nodeType == 3)&&(!notWhitespace.test(childNode.nodeValue))) {
node.removeChild(node.childNodes[i]);
i--;
}
if (childNode.nodeType == 1) {
cleanWhitespace(childNode);
}
}
}
var SavedObject={
elements : new Array(),
setStatus : function(id,s){
for(var i=0;i<SavedObject.elements.length;i++){
if(SavedObject.elements[i][0]==id){
SavedObject.elements[i][1]=s;
break;
}
}
},
getStatus : function(id){
for(var i=0;i<SavedObject.elements.length;i++){
if(SavedObject.elements[i][0]==id)return SavedObject.elements[i];
}
},
push : function(o){
SavedObject.elements[SavedObject.elements.length]=o;
}
}
</script>
</head>
dujun3245350
2008-08-28
打赏
举报
回复
cleanWhitespace(CoolDrag.container)//清除空白节点
var collection = CoolDrag.container.getElementsByTagName("DIV");
for(var i = 0; i < collection.length; i++){
if(collection[i].className == "dragLayer"){
var o = collection[i].firstChild;
SavedObject.push([o.parentNode.id,1,o.parentNode.style.height]);
o.onmousedown = CoolDrag.start;
}
}
document.onmousemove = CoolDrag.drag;
document.onmouseup = CoolDrag.end;
},
start:function(e){
if(!e) e = window.event;
var obj = getT(e);
if(obj.className == "min"){
CoolDrag.min(e);
return;
}else if(obj.className == "close"){
CoolDrag.close(e);
return;
}else{
if(obj.className != "dragHeader") obj = obj.parentNode;
}
CoolDrag.dragged = true;
CoolDrag.obj = obj.parentNode;
CoolDrag.cloneobj = CoolDrag.obj.cloneNode(true);
document.body.appendChild(CoolDrag.cloneobj);
CoolDrag.shadow = document.createElement("DIV");
document.body.appendChild(CoolDrag.shadow);
with(CoolDrag.cloneobj.style){
position = "absolute";
zIndex = 1000;
left = getRealLeft(CoolDrag.obj) + "px";
top = getRealTop(CoolDrag.obj) + "px";
}
with(CoolDrag.shadow.style){
position = "absolute";
zIndex = 999;
left = getRealLeft(CoolDrag.obj) + 4 + "px";
top = getRealTop(CoolDrag.obj) + 4 + "px";
width = CoolDrag.obj.offsetWidth + "px";
height = CoolDrag.obj.offsetHeight + "px";
backgroundColor = "#ccc";
if(navigator.userAgent.indexOf("Gecko") != -1)
MozOpacity = "0.5";
else if(navigator.userAgent.indexOf("MSIE") != -1)
filter = "alpha(opacity=50)";
}
CoolDrag.cloneobj.initMouseX = getMouseX(e);
CoolDrag.cloneobj.initMouseY = getMouseY(e);
CoolDrag.cloneobj.initoffsetL = getRealLeft(CoolDrag.obj);
CoolDrag.cloneobj.initoffsetY = getRealTop(CoolDrag.obj);
//change style
CoolDrag.cloneobj.firstChild.className="dragHeader_over";
CoolDrag.cloneobj.className = "dragLayer_over";
CoolDrag.obj.className="clone_dragLayer_over";
},
drag:function(e){
if(!CoolDrag.dragged||CoolDrag.obj==null)return;
if(!e) e = window.event;
var currenX = getMouseX(e);
var currenY = getMouseY(e);
if(CoolDrag.cloneobj.initoffsetL + currenX - CoolDrag.cloneobj.initMouseX > getRealLeft(CoolDrag.container))
CoolDrag.cloneobj.style.left = (CoolDrag.cloneobj.initoffsetL + currenX - CoolDrag.cloneobj.initMouseX) + "px";
else
CoolDrag.cloneobj.style.left = getRealLeft(CoolDrag.container) + "px";
if(CoolDrag.cloneobj.initoffsetY + currenY - CoolDrag.cloneobj.initMouseY > getRealTop(CoolDrag.container))
CoolDrag.cloneobj.style.top = (CoolDrag.cloneobj.initoffsetY + currenY - CoolDrag.cloneobj.initMouseY) + "px";
else
CoolDrag.cloneobj.style.top = getRealTop(CoolDrag.container) + "px";
var collection = CoolDrag.container.getElementsByTagName("DIV");
var finded = false;
for(var i = 0; i < collection.length; i++){
var o = collection[i];
if(o.className == "dragLayer"){
if(((getRealLeft(o) <= CoolDrag.cloneobj.offsetLeft && getRealLeft(o) + o.offsetWidth >= CoolDrag.cloneobj.offsetLeft) ||
(getRealLeft(o) <= CoolDrag.cloneobj.offsetLeft + CoolDrag.cloneobj.offsetWidth &&
getRealLeft(o) + o.offsetWidth >= CoolDrag.cloneobj.offsetLeft + CoolDrag.cloneobj.offsetWidth)) &&
getRealTop(o) <= CoolDrag.cloneobj.offsetTop && getRealTop(o) + o.offsetHeight >= CoolDrag.cloneobj.offsetTop)
{
//window.status = getRealTop(o.parentNode)+"|"+(CoolDrag.cloneobj.offsetTop - 8);
if(getRealTop(o.parentNode) >= CoolDrag.cloneobj.offsetTop - 8){
o.parentNode.insertBefore(CoolDrag.obj,o);
}else{
if(o.nextSibling)
o.parentNode.insertBefore(CoolDrag.obj,o.nextSibling);
else
o.parentNode.appendChild(CoolDrag.obj);
}
finded = true;
break;
}
}
}
dujun3245350
2008-08-28
打赏
举报
回复
<!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>Drag & Drop</title>
<style type="text/css">
body{ background-color:#36393D; font-size:12px; margin:0px; }
DIV.dragLayer{
border:1px solid #369;
background-color:#6BBA70;
margin-bottom:10px;
}
DIV.dragLayer_over{
border:1px solid #C79810;
background-color:#6BBA70;
filter:alpha(opacity=80);
-moz-opacity:0.8; /* Moz + FF */
opacity: 0.8; /* 支持CSS3的浏览器(FF 1.5也支持)*/
}
DIV.clone_dragLayer_over{
border:1px dashed #FA0;
background-color:#6BBA70;
filter:alpha(opacity=80);
-moz-opacity:0.8; /* Moz + FF */
opacity: 0.8; /* 支持CSS3的浏览器(FF 1.5也支持)*/
margin-bottom:10px;
}
DIV.dragHeader{
width:100%; height:20px ; line-height:20px; background-color:#006E2E; color:#FFFFFF;
}
DIV.dragHeader_over{
width:100%; height:20px ; line-height:20px; background-color:#C79810;
}
SPAN.min,SPAN.close{cursor:pointer;font-family:Webdings}
#container{margin:0px}
#leftcontainer{float:left; width:33%;}
#middlecontainer{float:left; width:34%;}
#middlecontainer div{margin-left:auto; margin-right:auto}
#rightcontainer{float:right; width:33%;}
#rightcontainer div{float:right}
DIV.content{width:100%; padding:4px}
</style>
<script type="text/javascript">
var CoolDrag={
obj : null, //目标对象
cloneobj : null, //拖动对象
container : null, //容器
dragged : false, //拖动标志
shadow: null, //阴影
init:function(id){
CoolDrag.container = $(id);
var cooldrag = CoolDrag.read("cooldrag");
if(cooldrag != ""){//读取cookie
var subcontainer = cooldrag.split("|");
alert(subcontainer+":::subcontainer::::");
for(var i=0 ; i < subcontainer.length; i++){
var subcontainerItem = subcontainer[i].split(":");
alert(subcontainerItem+":::subcontainerItem::::");
if($(subcontainerItem[0])){
var items = subcontainerItem[1].split(",");
for(var j=0; j< items.length; j++){
if($(items[j])) $(subcontainerItem[0]).appendChild($(items[j]));
}
}
}
}
miaoliujun
2008-08-28
打赏
举报
回复
建议看下portal
nisersent
2008-08-28
打赏
举报
回复
[Quote=引用 11 楼 dujun3245350 的回复:]
这个代码我刚用过的,可能是发上去的时候粘错了
[/Quote]
email:nisersent@sina.com
发我EMAIL里吧.
sxntree
2008-08-28
打赏
举报
回复
好长,呵呵,学一学
dujun3245350
2008-08-28
打赏
举报
回复
这个代码我刚用过的,可能是发上去的时候粘错了
dujun3245350
2008-08-28
打赏
举报
回复
代码太长了,一次发不上去,烦人了
nisersent
2008-08-28
打赏
举报
回复
错误:'CoolDrag'未定义
nisersent
2008-08-28
打赏
举报
回复
不能拖动。。。
楼上的,速度啊。。。。
dujun3245350
2008-08-28
打赏
举报
回复
你把这个代码看看行吧
dujun3245350
2008-08-28
打赏
举报
回复
<body onLoad="CoolDrag.init('container');">
<br />
<div id="container">
<div id="leftcontainer">
<div style="height:100px; width:200px; " class="dragLayer" id="win1">
<div class="dragHeader">
<div style="float:left">第一个窗口</div>
<div style="float:right; "><span class="min">0</span><span class="close">r</span></div>
</div>
<div class="content">window 1</div>
</div>
<div style="height:100px; width:200px; " class="dragLayer" id="win2">
<div class="dragHeader">
<div style="float:left">第二个窗口</div>
<div style="float:right; "><span class="min">0</span><span class="close">r</span></div>
</div>
<div class="content">window 2</div>
</div>
</div>
<div id="middlecontainer">
<div style="height:100px; width:200px; " class="dragLayer" id="win3">
<div class="dragHeader">
<div style="float:left">第三个窗口</div>
<div style="float:right; "><span class="min">0</span><span class="close">r</span></div>
</div>
<div class="content">window 3</div>
</div>
<div style="height:100px; width:200px; " class="dragLayer" id="win4">
<div class="dragHeader">
<div style="float:left">第四个窗口</div>
<div style="float:right; "><span class="min">0</span><span class="close">r</span></div>
</div>
<div class="content">window 4</div>
</div>
</div>
<div id="rightcontainer">
<div style="height:100px; width:200px; " class="dragLayer" id="win5">
<div class="dragHeader">
<div style="float:left">第五个窗口</div>
<div style="float:right; "><span class="min">0</span><span class="close">r</span></div>
</div>
<div class="content">window 5</div>
</div>
<div style="height:100px; width:200px; " class="dragLayer" id="win6">
<div class="dragHeader">
<div style="float:left">第六个窗口</div>
<div style="float:right; "><span class="min">0</span><span class="close">r</span></div>
</div>
<div class="content">window 6</div>
</div>
<div style="height:100px; width:200px; " class="dragLayer" id="win7">
<div class="dragHeader">
<div style="float:left">第七个窗口</div>
<div style="float:right; "><span class="min">0</span><span class="close">r</span></div>
</div>
<div class="content">window 7</div>
</div>
</div>
</div>
</body>
</html>
nisersent
2008-08-28
打赏
举报
回复
楼上的,怎么没有了????????
仿有赞
自定义
模板
魔方插件
参考有赞
自定义
模板
中的魔方插件做的一个demo,可以
自定义
区域。
超链实现拖拽时内容为
自定义
内容
超链实现拖拽时内容为
自定义
内容,拖拽超链,释放到一个文本框时的内容不为超链href链接内容,而为
自定义
的一些内容
html
随意
拖动
内容位置的两种实现方式
测试:chrome v80.0.3987.122 正常 两种方式为:拖拽普通标签位置或拖拽canvas中的文本框位置 1. 实现鼠标
拖动
标签元素到任意位置 演示地址 css
代码
#range { position: relative; width: 600px; height: 400px; margin: 10px; background-color: rgb(133, 246, 250); } .icon { position: absolute; height: 100px; width: 100px; curs
根据element+vue
自定义
dialog+drawer组件 弹窗+抽屉 无覆盖 + 可拖拽.7z
根据element+vue
自定义
dialog+drawer组件 弹窗+抽屉 无覆盖 + 可拖拽
vue实现可视化可拖放的
自定义
表单的示例
代码
主要介绍了vue实现可视化可拖放的
自定义
表单的示例
代码
,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Web 开发
81,117
社区成员
341,739
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章