|
缩略图和镜片组成的 DOM 结构如下.- <a id="thumb" href="#">
- <img src="http://img.alibaba.com/photo/291909368/Free-Shipping-Popular-ladies-shoes-Tote-shoes-paypal-accept-201001.jpg" alt="Thumbnail" />
- <span id="glass"></span>
- </a>
复制代码- /**
- * 获取镜片在放大目标元素上的位置
- * @param ev 触发的事件
- * @param thumb 缩略图对象
- * @param glass 镜片对象
- * @return x:镜片在放大目标元素上的横向位置, y:镜片在放大目标元素上的纵向位置
- */
- function getGlassOffset(ev, thumb, glass) {
- var offset = {
- left:0,
- top:0
- };
-
- // 偏移量
- 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 cursorY = 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;
- }
-
- return offset;
- }
复制代码 原文:http://www.neoease.com/javascript-magnifier-move-glass/ |
|