私たちは出会いサイト行う多くの回 JSをドラッグ小さなドラッグJSケースとして、今日のニーズがポップアップボックスに合わせてネイティブコードを書きます。
上記の需要によると、我々はそれのドラッグ効果を作り始めました。
最初のステップは、我々は、CSSレイアウトと応答を記述する必要があります
<divの上記のid = "ボックス"> <divの上記のid = "BTN"に述べた>タイトル</ div> <p型>グリーンスペングラーフロントエンドのブログ!</ P> <P> www.cenggel.com </ P> </ div>
<スタイル> #box {高さ:200pxの。幅:200pxの。背景:#999; 位置:絶対;} #btn {高さ:30px; 背景:#000; カーソル:すべてのスクロール; パディング:0 10pxの; 色:#FFF;} </スタイル>
ここでは、地域のドラッグBTNし、我々のid =。http://www.360doc.com/showweb/0/0/860281883.aspx
第二に、ロジックは伝えます
マウスダウンタイムとは、現在位置を算出し、ボックスと左余白にマウスのID =位置を取得するとJSコード全体は、多くはありません。
この時間は、マウスを再び移動させ、マウスの位置を計算し、その後、位置ID =ボックスにされています
マウスボタンがリリースされれるonmousemoveがonMouseUpのクリアされた場合
三、JSのコード部分
<script type="text/javascript"> function drag(obtnf,obtn){ //按钮及初始值 var obtn = document.getElementById(obtn), obtnf = document.getElementById(obtnf), disX = 0, disY = 0; //鼠标按下时开始计算 obtn.onmousedown = function(ev){ var ev = ev || window.event; disX = ev.clientX - obtnf.offsetLeft; disY = ev.clientY - obtnf.offsetTop; //鼠标按下并移动时计算 document.onmousemove = function(ev){ var ev = ev || window.event; obtnf.style.left = ev.clientX - disX + 'px'; obtnf.style.top = ev.clientY - disY + 'px'; }; //鼠标松开时清除时间 document.onmouseup = function(){ document.onmousemove = null; document.onmouseup = null; }; return false; }; }; //引用 drag("box","btn")</script> www.gendan5.com
最后咱们的效果如下
做到这里其实咱们的效果并不完美,应为当我们拖拽的时候发现,他能直接被拖到浏览器的外面去了,所以咱们再给他加点限制。
最终JS代码如下:
<script type="text/javascript"> function xianzhi(val,max,min){ if (val > max){ return max; }else if(val < min){ return min; }else{ return val; } console.log(val) } function drag(obtnf,obtn){ //按钮及初始值 var obtn = document.getElementById(obtn), obtnf = document.getElementById(obtnf), disX = 0, disY = 0; //鼠标按下时开始计算 obtn.onmousedown = function(ev){ var ev = ev || window.event; disX = ev.clientX - obtnf.offsetLeft; disY = ev.clientY - obtnf.offsetTop; //鼠标按下并移动时计算 document.onmousemove = function(ev){ var ev = ev || window.event; var lefts= (ev.clientX - disX), tops= (ev.clientY - disY), maxle= (document.documentElement.clientWidth - obtnf.offsetWidth), maxto= (document.documentElement.clientHeight - obtnf.offsetHeight) lefts = xianzhi(lefts,maxle,0) tops = xianzhi(tops,maxto,0) obtnf.style.left = lefts + 'px'; obtnf.style.top = tops + 'px'; }; //鼠标松开时清除时间 document.onmouseup = function(){ document.onmousemove = null; document.onmouseup = null; }; return false; }; }; //引用 drag("box","btn")
做到这里一个小型的拖拽效果就出来了。郑州不孕不育医院:http://yyk.39.net/zz3/zonghe/1d427.html