* @param ev 트리거 이벤트 * @param 엄지 썸네일 개체 * @param glass 렌즈 개체 * @return x: 확대 대상 요소에서 렌즈의 수평 위치, y: 확대 대상 요소에서 렌즈의 수직 위치 */ function getGlassOffset(ev, Thumb, glass) { var offset = { left:0, top:0 };
// offset var ThumbOffset = getCumulativeOffset(thumb) //마우스 위치 페이지 var mousePoint = getMousePoint(ev); //렌즈의 실제 크기 var glassSize = getSize(glass) // 썸네일의 실제 크기 var ThumbSize = getSize(thumb);
// 커서 수평 위치 var CursorX = mousePoint.x - ThumbOffset.left / / 렌즈 측면 오프셋 offset.left =cursorX - glassSize.width / 2; if(offset.left < 0) { offset.left = 0 } else if( offset.left > ThumbSize.width - glassSize.width) { offset .left = ThumbSize.width - glassSize.width; }
// 커서 수직 위치 var 커서Y = mousePoint.y - ThumbOffset.top // 렌즈 수직 오프셋 offset.top =cursorY - glassSize.height / 2; if(offset.top < 0) { offset .top = 0 } else if(offset.top > ThumbSize.height - glassSize.height) { offset.top = ThumbSize.height - glassSize.height;
반환 오프셋 }
썸네일 컨테이너 내 렌즈 왼쪽 상단 = 마우스 위치 - 썸네일 왼쪽 상단 위치 - 렌즈 크기의 절반 렌즈가 컨테이너 밖에 있는 경우 렌즈를 옆으로 이동하세요. 모든 코드는 DEMO
에서 살펴보시기 바랍니다. (지난 글에서 JS를 통해 마우스 위치를 알아내려고 쓴 이유를 아시나요?)
수업 후 생각을 위한 질문을 남겨주세요. , 렌즈에 테두리가 있는 경우 프레임이 렌즈 움직임의 정확성에 영향을 미치지 않도록 하는 방법은 무엇입니까?
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.