|
21.11.2012, 16:52
|
Новичок на форуме
|
|
Регистрация: 21.11.2012
Сообщений: 1
|
|
А как можно сделать такое - есть див (логин-форма), на этом диве еще лежат дочерние див-шапка, див-контент и див-подвал.
Как сделать чтобы форма таскалась мышью только за див-шапку?
Сейчас форма таскается за любое место, т.к. onmousedown указан у первого, родительского дива.
|
|
04.09.2013, 03:30
|
Новичок на форуме
|
|
Регистрация: 01.07.2011
Сообщений: 1
|
|
Вот готовый рабочий пример.
Паботает во всех броузерах
Взят из Source Code Library:
<!--
Add dragging to your div elements. just adding class=”drag” to
the div element will make it draggable.
You can set the area in which the div(s) can be dragged
using setdragBounds function
-->
<!doctype html public "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<style>
.Text{
font-family: Verdana,Arial,Sans-serif,'Times New Roman';
font-size: 9pt;
font-weight: normal;
font-style: normal;
color: #666;
text-decoration: none;
}
.alertsBoxTitle{
font-family: Verdana,Arial,Sans-serif,'Times New Roman';
font-size: 9pt;
font-weight: bold;
font-style: normal;
color: #ffffff;
text-decoration: none;
}
.alertsBox{
background: #ECF1F9;
border: 1px #a1bcdf solid;
}
body{
overflow:hidden;
}
</style>
<script language="javascript">
// browser detection
var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav6 = (is_nav && (is_major == 5));
var is_nav6up = (is_nav && (is_major >= 5));
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var dragapproved=false
var z,x,y
var maxleft,maxtop,maxright,maxbottom;
function setdragBounds()
{
// you can set the bounds of the draggable area here
maxleft = 10;
maxtop = 10;
maxright = document.body.clientWidth - 10;
maxbottom = document.body.clientHeight - 100;
}
function move(e)
{
var tmpXpos = (!is_ie)? temp1+e.clientX-x: temp1+event.clientX-x;
var tmpYpos = (!is_ie)? temp2+e.clientY-y : temp2+event.clientY-y;
if (dragapproved)
{
z.style.left = tmpXpos;
z.style.top = tmpYpos;
if (tmpXpos < maxleft)
z.style.left = maxleft;
if (tmpXpos > maxright)
z.style.left = maxright;
if (tmpYpos < maxtop)
z.style.top = maxtop;
if (tmpYpos > maxbottom)
z.style.top = maxbottom;
return false
}
}
function drags(e)
{
if (!(is_ie)&&!(!is_ie)) return
var firedobj=(!is_ie)? e.target : event.srcElement
var topelement=(!is_ie)? "HTML" : "BODY"
while (firedobj.tagName!=topelement && firedobj.className!="drag" && firedobj.tagName!='SELECT' && firedobj.tagName!='TEXTAREA' && firedobj.tagName!='INPUT' && firedobj.tagName!='IMG')
{
// here you can add the elements that cannot be used for drag . using their class name or id or tag names
firedobj=(!is_ie)? firedobj.parentNode : firedobj.parentElement
}
if (firedobj.className=="drag")
{
dragapproved = true
z = firedobj
var tmpheight = z.style.height.split("px")
maxbottom = (tmpheight[0])?document.body.clientHeight - tmpheight[0]:document.body.clientHeight - 20;
temp1 = parseInt(z.style.left+0)
temp2 = parseInt(z.style.top+0)
x = (!is_ie)? e.clientX: event.clientX
y = (!is_ie)? e.clientY: event.clientY
document.onmousemove = move
return false
}
}
document.onmousedown=drags
document.onmouseup=new Function("dragapproved=false")
</script>
</head>
<body>
<div id="Dialog" style="width:316px;height:119px;max-width:316px;position:absolute;top:50px;left:140px; z-index:1000;" class="drag">
<table width="100%" style="width:315px;height:119px" cellspacing="0" cellpadding="0" class="alertsBox" id="dialog_table">
<tr style="cursor:move">
<td class="alertsBoxTitle notselectable" colspan="2" align="left" height="21" style="cursor:move;background-color:#32426F">Drag Me</td>
</tr>
<tr>
<td align="center" colspan="2" height="5"> </td>
</tr>
<tr>
<td align="center" colspan="2">
<table width="97%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td valign='top' align="center">
</td>
</tr>
<tr>
<td valign='top' colspan="2" class="Text">You can place text here</td>
</tr>
<tr>
<td valign='top' colspan="2" align="center"><br/><input type="button" value="Ok"/></td>
</tr>
</table></td>
</tr>
</table>
</div>
</body>
</html>
|
|
24.10.2017, 09:54
|
Новичок на форуме
|
|
Регистрация: 24.10.2017
Сообщений: 1
|
|
Использую код который дали на первой странице:
Цитата:
|
function $(v) { return(document.getElementById(v)); }
02
function agent(v) { return(Math.max(navigator.userAgent.toLowerCase(). indexOf(v),0)); }
03
function xy(e,v) { return(v?(agent('msie')?event.clientY+document.bod y.scrollTop:e.pageY)agent('msie')?event.clientX+ document.body.scrollTop:e.pageX)); }
04
05
function dragOBJ(d,e) {
06
07
function drag(e) { if(!stop) { d.style.top=(tX=xy(e,1)+oY-eY+'px'); d.style.left=(tY=xy(e)+oX-eX+'px'); } }
08
09
var oX=parseInt(d.style.left),oY=parseInt(d.style.top) ,eX=xy(e),eY=xy(e,1),tX,tY,stop;
10
11
document.onmousemove=drag; document.onmouseup=function(){ stop=1; document.onmousemove=''; document.onmouseup=''; };
12
13
}
<div style="position: relative; top: 0; left: 0" onmousedown="dragOBJ(this,event); return false;">test</div>
|
Все работает хорошо. но только на ПК, на мобильных устройствах, андройд и ios вообще никак не реагирует, может кто знает можно ли это легко исправить?
|
|
18.03.2024, 12:37
|
Новичок на форуме
|
|
Регистрация: 18.03.2024
Сообщений: 1
|
|
|
|
|
|