1. 程式人生 > >js面向物件實現元素拖拽

js面向物件實現元素拖拽

window.onload = function(){ var obox = new Drag('box'); var obox1 = new Cdrag('box1'); obox.init(); obox1.init(); } //定義一個拖拽的物件 function Drag(id){ this.box = document.getElementById(id); this
.disx = 0; this.disy = 0; } Drag.prototype.init = function(){ var _this = this;//滑鼠事件裡面的this是指向呼叫它的box,因為需要一箇中間變數來轉變this的指向 this.box.onmousedown = function(ev){ _this.fndown(ev);//ev是針對事件的,這裡要作為一個引數傳入 } } Drag.prototype.fndown = function
(ev){
var _this = this;//滑鼠事件裡面的this是指向呼叫它的box,因為需要一箇中間變數來轉變this的指向 var ev = ev || window.event; this.disx = ev.clientX - this.box.offsetLeft; this.disy = ev.clientY - this.box.offsetTop; document.onmousemove = function(ev)
{
_this.fnmove(ev); }; document.onmouseup = function(){ _this.fnup(); }; return false; } Drag.prototype.fnmove = function(ev){ var ev = ev || window.event; this.box.style.left = ev.clientX - this.disx + 'px';//clientX/offsetLeft/offsetWidth這些是沒有單位返回的,只有數字,因此需要新增單位 this.box.style.top = ev.clientY - this.disy + 'px'; } Drag.prototype.fnup = function(){ document.onmousedown = null; document.onmousemove = null; } //子類繼承父類 function Cdrag(id){ Drag.call(this,id);//通過call方法繼承父類屬性 } for(var i in Drag.prototype){//通過迴圈繼承父類的方法 Cdrag.prototype[i] = Drag.prototype[i]; } Cdrag.prototype.fnmove = function(ev){ var ev = ev || window.event; var l = ev.clientX - this.disx; var t = ev.clientY - this.disy; //添加了子類自己的特性,給定一個範圍內拖拽 if(l < 0){ l = 0; }else if(l > document.documentElement.offsetWidth - this.box.offsetWidth){//整個視窗減去元素的寬度,就得到邊界範圍 l = document.documentElement.offsetWidth - this.box.offsetWidth; } if(t < 0){ t = 0; }else if(t > document.documentElement.clientHeight - this.box.offsetHeight){//整個視窗減去元素的高度,就得到邊界範圍 t = document.documentElement.clientHeight - this.box.offsetHeight; } this.box.style.left = l + 'px'; this.box.style.top = t + 'px'; }

相關推薦

js面向物件實現元素

window.onload = function(){ var obox = new Drag('box'); var obox1 = new Cdrag('box1'); obox.in

js面向物件思想封裝功能,相容pc和移動端

我們在開發專案過程中,很可能會碰到頁面上某塊需要可以拖拽移動的功能需求,網上已經有不少前輩分享了相關功能的案例,外掛或者程式碼,但是考慮到專案功能需求,我們可能僅需要實現拖拽移動功能就可以,不需要其他功能,而網上很多外掛往往附帶了其他功能需求。這裡筆者僅對拖拽移

【JavaScript】實現元素和碰撞檢測

function drag() { var src1 = document.getElementById("src-1"); var src2 = document.getElementById("src-2"); var src3 =

js原生程式碼實現滑鼠(超簡單)

首先先來看這一張圖 在這種圖中,盒子的大小為512px,並且margin-left:-250px margin-top:140px;並通過一些樣式讓其在中部顯示 這些樣式都不是重要的,這裡加個margin是為了讓其出現拖拽的時候出現滑鼠偏移,好做演示而已,不然margin:0 auto 就可以實現盒子

js面向物件例項(實現簡易版)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style>#div{width: 100px;h

div/dom元素縮放外掛,純js實現縮放,不依賴jQuery~

產品需求,需要用到對div(dom)進行拖拽縮放操作,看到有好多外掛,要麼依賴jQuery,要麼檔案太大。 封裝了一個外掛,不壓縮狀態下5KB。 html <!DOCTYPE html> <html lang="en"> <head> <

用原生JS實現HTML5的元素功能

昨天遇到的一個面試題,題目是這樣的:頁面上有個元素A和帶放置元素B,實現將A拖拽並且下放到B,然後改變B的顏色。以下都是廢話,抒發一下心情請跳過,直接看程式碼吧昨天寫的比較簡陋,今天想想在寫一遍做個記錄,越來越感受到每次面試都是一次很好的學習的機會。發現自己的不足,然後繼續前

js面向物件---

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title>

js實現簡單案例

簡單拖拽事件主要是監聽三個事件:onmousedown, onmousemove, onmouseup 三個事件,思路也很簡單,但是寫的時候還是遇到了一些小問題,先放程式碼: <!DOCTYPE html> <html lang="en"> <head>

【前端】js+php實現圖片上傳

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>拖拽圖片上傳</title> </head> <body>

前端實現頁面元素

要實現拖拽的效果,有兩種實現方式: mousedown:記錄滑鼠當前座標mousemove:對比當前座標與mousedown的座標div寬width : div.height + mouse

js實現檔案上傳並顯示待上傳的檔案列表

首先實現html頁面的內容:<body> <div name="single" style="text-align: center; "> <A class=btn_addPic href="javascript:void

原生JS實現圖片移動與縮放

rgb asc col ice head () etl ini size <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name

原生js實現React效果(resize)附帶完整的demo

想找一個可以resize塊的元件,找了好幾天都沒找到合適的。 嘗試過的開源元件: “react-rnd”:被拖拽的塊採用的佈局方式是“position:absolute”,更改佈局的話拖拽的事件會失效,沒有仔細去研究原理。但是我是在不知道這個佈局怎麼去比較好

js實現的div

可拖動DIV層的實現方法 http://blog.csdn.net/twoByte/article/details/73269653 http://www.cnblogs.com/zhuzhenwei918/p/6569295.html 實現一個div可以被拖拽,程

JS面向物件輪播圖實現

// 面對過程寫法//var pci=document.getElementById('pci'); //var ul=document.getElementById('ul'); //var li=document.getElementsByTagName('li'); //var left=documen

js實現滑鼠功能基本思路

如果要設定物體拖拽,那麼必須使用三個事件,並且這三個事件的使用順序不能顛倒。 onmousedown:滑鼠按下事件onmousemove:滑鼠移動事件onmouseup:滑鼠擡起事件   拖拽的基本原理就是根據滑鼠的移動來移動被拖拽的元素。滑鼠的移動也就是x、y座

原生js實現節點

var Drags = function (element, callback) { callback = callback || function () {}; var params = {

js實現div互換位置

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <meta http-equiv="Content-Type" content="text

ES6學習筆記(三):教你用js面向物件思維來實現 tab欄增刪改查功能

前兩篇文章主要介紹了類和物件、類的繼承,如果想了解更多理論請查閱《ES6學習筆記(一):輕鬆搞懂面向物件程式設計、類和物件》、《ES6學習筆記(二):教你玩轉類的繼承和類的物件》,今天主要來分享關於如何用js面向物件的思維來實現tab欄的一些相關的功能。 要實現的功能分析 點選tab欄可以切換效果 點選