为了账号安全,请及时绑定邮箱和手机立即绑定

Angular 中的图像放大镜

Angular 中的图像放大镜

慕森王 2021-06-02 13:25:15
我正在尝试在悬停时实现图像放大镜。我试图复制 w3schools 中的代码,这纯粹是 Javascript。我正在尝试在 Angular 中实现以下代码https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_image_magnifier_glass我在打字稿中使用了上述方法,并从 Angular 中的 ngOnInit 调用它,但我无法从该方法中获得任何结果。我确保正确传递了 id 并验证了正在调用的方法。但仍然无法获得任何结果结果。我不希望将任何 npm 包用于放大镜,因为它们中的大多数都有错误。组件.tsngOnInit(){ this.magnify(imgID, zoom) }magnify(imgID, zoom) {  var img, glass, w, h, bw;  img = document.getElementById(imgID);  /*create magnifier glass:*/  glass = document.createElement("DIV");  glass.setAttribute("class", "img-magnifier-glass");  /*insert magnifier glass:*/  img.parentElement.insertBefore(glass, img);  /*set background properties for the magnifier glass:*/  glass.style.backgroundImage = "url('" + img.src + "')";  glass.style.backgroundRepeat = "no-repeat";  glass.style.backgroundSize = (img.width * zoom) + "px " + (img.height * zoom) + "px";  bw = 3;  w = glass.offsetWidth / 2;  h = glass.offsetHeight / 2;  /*execute a function when someone moves the magnifier glass over the image:*/  glass.addEventListener("mousemove", moveMagnifier);  img.addEventListener("mousemove", moveMagnifier);  /*and also for touch screens:*/  glass.addEventListener("touchmove", moveMagnifier);  img.addEventListener("touchmove", moveMagnifier);  function moveMagnifier(e) {    var pos, x, y;    /*prevent any other actions that may occur when moving over the image*/    e.preventDefault();    /*get the cursor's x and y positions:*/    pos = getCursorPos(e);    x = pos.x;    y = pos.y;    }}
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

我遇到了同样的问题,但对于具有相同放大镜实现的图像缩放器。我通过调整 css 和 ts 代码(取自放大镜并与缩放器结合)使其工作。上面的答案不是我正在寻找的,因为我需要将放大的 img 放在不同的框中,而不是在 img 本身的顶部。这是我修改后适合我需要的stackblitz代码。


查看完整回答
反对 回复 2021-06-03
  • 2 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信