
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.img-wrap {position: relative;width: 375px;height: 500px;margin: 100px auto;border: 1px solid #ddd;box-shadow: 0 0 5px #999;}.img-wrap .mag-wrap {display: none;position: absolute;top: 0px;left: 0px;width: 150px;height: 150px;background-color: #fff;box-shadow: 0 0 3px #ccc;overflow: hidden;}.img-wrap .mag-wrap.show {display: block;transform: scale(1.5);}.img-wrap .mag-wrap .mag-img {position: absolute;top: 0;left: 0;width: 375px;height: 500px;/* border: 10px solid green; */}.img-wrap .static-img {height: 100%;}</style></head><body><div class="img-wrap"><div class="mag-wrap"><img src="./img/2.jpg" class="mag-img" alt="图片1" /></div><a href="javascript:;" class="img-lk"><img src="./img/2.jpg" class="static-img" alt="图片2" /></a></div><script src="./js/untils.js"></script><script src="./js/magnifier.js"></script></body></html>
window.onload = function () {
init();
}
function init() {
initMagnifier();
}
var initMagnifier = (function () {
var oImgWrap = document.getElementsByClassName('img-wrap')[0],
oMagWrap = oImgWrap.getElementsByClassName('mag-wrap')[0],
oMagImg = oMagWrap.getElementsByClassName('mag-img')[0],
magWidth = getStyles(oMagWrap, 'width'),
magHeight = getStyles(oMagWrap, 'height'),
imgX = oImgWrap.offsetLeft,
imgY = oImgWrap.offsetTop;
addEvent(oImgWrap, 'mouseover', function (e) {
showMag(getXY(e).x, getXY(e).y);
oMagWrap.className += 'show';
addEvent(document, 'mousemove', mouseMove);
});
addEvent(oImgWrap, 'mouseout', mouseOut);
function mouseMove(e) {
showMag(getXY(e).x, getXY(e).y, getXY(e).mouseX, getXY(e).mouseY);
}
function mouseOut(e) {
oMagWrap.className = 'mag-wrap';
removeEvent(document, 'mousemove', mouseMove);
}
function getXY(e) {
var e = e || window.event;
return {
x: pagePos(e).X - imgX - magWidth / 2,
y: pagePos(e).Y - imgY - magHeight / 2,
mouseX: pagePos(e).X - imgX,
mouseY: pagePos(e).Y - imgY
}
}
function showMag(x, y, mouseX, mouseY) {
oMagWrap.style.left = x + 'px';
oMagWrap.style.top = y + 'px';
oMagImg.style.left = -x + 'px';
oMagImg.style.top = -y + 'px';
oMagWrap.className += ' show';
if (mouseY && mouseX) {
if (mouseX < 0 || mouseX > getStyles(oImgWrap, 'width') ||
mouseY < 0 || mouseY > getStyles(oImgWrap, 'height')) {
oMagWrap.className = 'mag-wrap';
}
}
}
});
待解决问题:1.a标签的属性 是块级还是行内元素 还是行内块
2.块级还是行内元素 行内块 的特点
3.a标签内的图片标签设置高度为100% a标签的父级元素的宽高设置成 图片原始大小的50% 那么不设置宽度的情况下 自动设置成原始图片的宽度的50% 待试验
