js 드래그 효과 구현 (구조 함수)
1. 업무 논리 적 사고 가 더욱 뚜렷 하 다.
2. 대량의 전역 변수의 발생 을 피 했 고 하나의 전역 변수 만 있 으 며 이 기능 모듈 이 밖으로 노출 되 는 유일한 인터페이스 에 해당 한다.
3. 모듈 화 개발 과 결합 하면 사용자 정의 모듈 을 통일 modules 에 추가 할 수 있 습 니 다. 사용자 정의 모듈 이름 이 충돌 하지 않 으 면 서로 간섭 하지 않 습 니 다.
4. 코드 는 유지 가능성 이 좋 고 남 을 이 롭 게 하 며 자신 을 이 롭 게 한다.
2. 다음은 이 모델 을 이용 하여 끌 어 당 기 는 것 을 사례 로 설명 합 니 다.1. html, 다음 과 같 음:
2、css
3、js
// Drag , ( );
function Drag(bar, target) {
// bar ;
this.bar = bar;
// target ;
this.target = target;
// flag , ;
this.flag = false;
}
// , ;
Drag.prototype = {
// constructor , ; , 。。。
constructor : Drag,
// , ;
init : function(){
// this init , ;
// , ;
var temp = this;
// , left top ;
temp.left = temp.getCss(temp.target, "left");
temp.top = temp.getCss(temp.target, "top");
// , (clientX、clientY)
temp.mousePosX = null;
temp.mousePosY = null;
// ;
temp.bindEvent();
},
//
getCss : function(o , prop){
// Dom style , , ;
// , ,currentStyle Ie, ;
return o.currentStyle ? o.currentStyle[prop] : document.defaultView.getComputedStyle(o, null)[prop];
},
bindEvent : function(){
// bindEvent this ( ) temp , temp ;
// , , , this , this ;
// , , this , “this”
var temp = this;
//
temp.bar.onmousedown = function(e){
// e , Ie , window.event ;
e = e || window.event;
// , ;
temp.flag = true;
// , mousePos ;
temp.mousePosX = e.clientX;
temp.mousePosY = e.clientY;
};
// , document , ;
// onmousemove , , , ;
document.addEventListener('mousemove' ,function(e){
e = e || window.event;
// , flag true , ;
// , , ;
if(temp.flag){
// (e.clientX - temp.mousePosX) ;
// parseInt(temp.left) , ;
temp.target.style.left = parseInt(temp.left) + e.clientX - temp.mousePosX + "px";
temp.target.style.top = parseInt(temp.top) + e.clientY - temp.mousePosY + "px";
}
});
//
document.addEventListener('mouseup', function(e){
// , , ;
temp.flag = false;
//
temp.left = temp.getCss(temp.target, "left");
temp.top = temp.getCss(temp.target, "top");
});
}
}
// Dom ,oBar ,oBox ;
var oBox = document.getElementsByClassName('box');
var oBar = document.getElementsByClassName('bar');
// , ;
var drag1 = new Drag(oBar[0], oBox[0]);
var drag2 = new Drag(oBar[1], oBox[1]);
var drag3 = new Drag(oBar[2], oBox[2]);
// init , ;
drag1.init();
drag2.init();
drag3.init();
구체 적 인 과정 은 모두 js 주석 을 통 해 설명 되 었 으 니 구조 함 수 를 잘 이용 하여 끌 어 당 기 는 효 과 를 실현 하 는 데 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.