js div 드래그 호 환 i / fireforx js 마우스 위치 깊이 분석

7776 단어 웹 전단
전단 웹 개발 에 서 는 특정 대상 에 대한 드래그 작업, 특히 div 층 에 사용 할 수 밖 에 없습니다.페이지 대상 의 위치 이동 작업 에 대해 어 려 운 점 은 마우스 위 치 를 어떻게 정확하게 얻 느 냐 에 있다. 본 고 는 마우스 위 치 를 분석 하고 비교 한 다음 에 div 에 대한 드래그 작업 을 완성 한다.
js 에서 마우스 위치의 각종 매개 변 수 를 가 져 옵 니 다.
명칭.
해명 하 다.
clientX
이벤트 속성 은 이벤트 가 실 행 될 때 브 라 우 저 페이지 (또는 클 라 이언 트) 에 대한 수평 좌 표를 되 돌려 줍 니 다.
clientY
이벤트 속성 은 이벤트 가 실 행 될 때 브 라 우 저 페이지 (클 라 이언 트) 에 대한 수직 좌 표를 되 돌려 줍 니 다.
screenX
이벤트 속성 은 이벤트 가 발생 했 을 때 화면의 수평 좌표 에 비해 마우스 포인 터 를 되 돌려 줍 니 다.
screenY
이벤트 속성 은 이벤트 가 발생 했 을 때 화면 에 대한 수직 좌 표를 되 돌려 줍 니 다.
offsetX
사건 이 발생 한 장 소 는 사건 소스 요소 의 좌표 시스템 에서 x 좌표 (ie) 입 니 다.
offsetY
사건 이 발생 한 장 소 는 사건 소스 요소 의 좌표 시스템 에 있 는 y 좌표 (ie) 입 니 다.
x
이벤트 가 발생 한 위치의 x 좌 표 는 CSS 동적 포 지 셔 닝 의 가장 안쪽 포용 요소 (ie, ~ pageX) 에 비해.
y
이벤트 가 발생 한 위치의 y 좌 표 는 CSS 동적 포 지 셔 닝 의 가장 안쪽 포용 요소 (ie, ~ pageY) 에 비해.
pageX
문서 의 왼쪽 가장자리 (fireforx, ~ x) 에 비해 마우스 포인터 의 위치 입 니 다.
pageY
문서 의 상단 가장자리 (fireforx, ~ y) 에 비해 마우스 포인터 의 위치 입 니 다.
layerX
마우스 가 현재 좌표계 의 위치 (fireforx, ~ offsetX) 보다 낫다.
layerY
마 우 스 는 현재 좌표계 의 위치 (fireforx, ~ offsetY) 보다 낫다.
1、clientX/clientY:
이 두 속성 은 이벤트 가 실 행 될 때 마우스 포인터 가 브 라 우 저 페이지 (클 라 이언 트) 에 대한 수평, 수직 좌 표를 되 돌려 줍 니 다. 그림 참조:
2、screenX/screenY:
이벤트 가 발생 했 을 때 마우스 포인터 가 화면의 수평, 수직 좌표 에 비해 그림 과 같 습 니 다.
3、offsetX/offsetY:
이 두 속성 은 IE 브 라 우 저 특유 의 것 으로 이벤트 가 발생 한 장소 가 이벤트 소스 요소 의 좌표 시스템 에 있 는 x 좌표 와 y 좌 표를 말한다.여 기 는 전체 브 라 우 저 나 전체 화면 이 아니 라 이벤트 가 발생 한 대상 에 게 아래 의 그림 은 빨간색 영역 을 이벤트 소스 로 하여 offsetX, offsetY 가 빨간색 영역 왼쪽 상단 에 있 는 위치 좌 표를 보 여 줍 니 다.
4、x、y:
이 두 속성 도 IE 특유 의 것 으로 사건 이 발생 하 는 위치의 x 좌표 와 y 좌 표를 말한다. 이것 은 CSS 동적 으로 포 지 셔 닝 하 는 가장 안쪽 포용 요소, 즉 목표 사건 의 부모 요소 에 비해 외부 경계 가 xy 좌표 에 있 는 위 치 를 말한다.Firefox 의 페이지 X, 페이지 Y 좌표 에 해당 합 니 다.이벤트 원본 의 부모 대상 이 document 일 때 x 와 y 는 clientX, clientY 와 같 습 니 다.
대상 원본 의 부모 가 브 라 우 저 창 이 아 닐 때 xy 의 값 은 clientX 와 clientY 와 다 릅 니 다.
5、layerX/layerY:
마 우 스 는 현재 좌표계 의 위치 에 비해 Firefox 에서 지원 하 는 것 으로 IE 의 offsetX 와 offsetY 와 비슷 합 니 다.
 
6、pageX/pageY:
마우스 포인터 의 위 치 는 문서 의 왼쪽 가장자리 와 위쪽 가장자리 에 비해 fireforx 에서 지원 하 며 ie 의 x 와 y 와 비슷 합 니 다.
6 、 드래그 가능 div
위의 분석 에 따 르 면 우 리 는 끌 수 있 는 div 를 만 들 고 먼저 이동 div 원 리 를 분석 합 니 다.
그림 과 같이 마우스 위치 1 시 좌 표를 (x0, y0) 로 설정 하면 마우스 위치 2 시 (x1, y1), B 시 (x, y), 마우스 거리 가 빨간색 구역 에 있 는 위 치 는: (left, top) 이다. 그러면:
x = (x0-left) + (x1-x0)=x1-left,y=(y0-top) + (y1-y0)=y1-top.
즉, B 점 좌 표 는 (x1 - left, y1 - top) 이다.
마우스 이벤트 와 결합 하여 전체적인 사고방식 은:
  • 마 우 스 를 눌 렀 을 때 현재 left, top 값 을 기록 합 니 다. ie 라면 (offsetX, offsetY) 이 고 fireforx 라면 (layerX, layerY) 입 니 다.이동 식 표 지 를 true 로 설정 합 니 다.
  • 마우스 가 이동 할 때 표 지 를 false 로 이동 할 수 있 으 면 바로 돌아 갑 니 다. 그렇지 않 으 면 현재 x, y 값 을 얻 을 수 있 습 니 다. ie 라면 (x, y) 이 고 fireforx 라면 (pageX, pageY) 이 며 현재 div 좌 표를 위 B 점 의 좌표 값 으로 설정 합 니 다.
  • 마우스 가 풀 렸 을 때 이동 표 시 를 false 로 설정 합 니 다.

  • 다음은 본 고의 모든 캡 처 실현 소스 코드 입 니 다. 참고 하 시기 바 랍 니 다.
    js 스 크 립 트:
    
            
            	//left,top                 
            	var left=0,top=0;
    			var flag = false;
            	$(function(){
    				$(document).mousemove(function(evt){
    					evt = window.event || evt;
    					//    
    					//clientX                          (    )     。
    					//clientY                          (   )     。
    					var $clientX = evt.clientX;
    					var $clientY = evt.clientY
    					valueShow('_clientX',$clientX);
    					valueShow('_clientY',$clientY);
    					
    					//screenX                           。
    					//screenY                           。
    					var $screenX = evt.screenX;
    					var $screenY = evt.screenY;
    					valueShow('_screenX',$screenX);
    					valueShow('_screenY',$screenY);
    				});
    				$('#srcdiv').mousemove(function(evt){
    					//$console.empty();
    					evt = window.event || evt;
    					///IE   
    					//                     x     y   。
    					var $offsetX = evt.offsetX;
    					var $offsetY = evt.offsetY;
    					valueShow('_offsetX',$offsetX);
    					valueShow('_offsetY',$offsetY);
    					//         x     y   ,      CSS            。
    					var $x = evt.x;
    					var $y = evt.y;
    					valueShow('_x',$x);
    					valueShow('_y',$y);
    					//       ,             。
    					var $pageX = evt.pageX;
    					var $pageY = evt.pageY;
    					valueShow('_pageX',$pageX);
    					valueShow('_pageY',$pageY);
    					
    					var $layerX = evt.layerX;
    					var $layerY = evt.layerY;
    					valueShow('_layerX',$layerX);
    					valueShow('_layerY',$layerY);
    				});
    				$('#abc').mousemove(function(evt){
    					evt = window.event || evt;
    					///IE   
    					//         x     y   ,      CSS            。
    					var $x = evt.x;
    					var $y = evt.y;
    					valueShow('_x',$x);
    					valueShow('_y',$y);
    					
    					var $pageX = evt.pageX;
    					var $pageY = evt.pageY;
    					valueShow('_pageX',$pageX);
    					valueShow('_pageY',$pageY);
    				});
    				//console      
    				$(window).scroll(function(){
    					var top = document.documentElement.scrollTop;
    					$('#console').offset({top:top});
    				});
    				function valueShow(id,msg){
    					$('#'+id).text(msg);
    				}
    				//------------    -----------
    				$('#srcdiv').mousedown(function(evt){
    					flag = true;//    
    					var isIE = (document.all) ? true : false;
    					if(isIE){
    						left = event.offsetX;
    						top = event.offsetY;
    					}else{
    						left = evt.layerX;
    						top = evt.layerY;
    					}
    				});
    				$('#srcdiv').mousemove(function(evt){
    					if(!flag)return;//    
    					var isIE = (document.all) ? true : false;
    					var x = isIE?event.x:evt.pageX;
    					var y = isIE?event.y:evt.pageY;
    					x = (x - left)>0?(x - left):0;
    					y = (y - top)>0?(y - top):0;
    					$(this).offset({
    						left: x  ,
    						top: y 
    					});
    				});
    				$(document).mouseup(function(evt){
    					flag = false;//    
    				});
    			});
            

    페이지:
    clientX ( ) 。
    clientY ( ) 。
    screenX
    screenY
    offsetX x (ie)
    offsetY y (ie)
    x x , CSS (ie,~pageX)。
    y y , CSS (ie,~pageY)。
    layerX (firefox,~offsetX)
    layerY (firefox,~offsetY)
    pageX , (firefox,~x)。
    pageY , (firefox,~y)。

    div






    클릭 하여 모든 코드 획득

    좋은 웹페이지 즐겨찾기