使用JavaScript实现简单图像放大镜效果

 更新时间:2022年08月02日 08:23:06   作者:海拥  
图像放大镜在很多网站中都扮演着重要的角色,大多数开发人员使用 jquery 来创建图像放大镜。在本教程中,我将向大家展示如何使用 HTML、CSS 和 JavaScript 制作一个简单的图像放大镜,需要的可以参考一下

图像放大镜在很多网站中都扮演着重要的角色,大多数开发人员使用 jquery 来创建图像放大镜。在本教程中,我将向大家展示如何使用 HTML、CSS 和 JavaScript 制作一个简单的图像放大镜。

在线演示地址

项目基本结构

目录结构如下:

第 1 步:图像放大镜的基本结构

使用以下 HTML 和 CSS 代码,首先在网页上为此图像放大镜 HTML创建了一个框。您可以在此框中看到图像。这里框的宽度:650px,高度:400 像素已经用过。它被一个 5px 的边框包围。

<div class="container">
     
</div>
body,
html {
  height: 100%;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  position: relative;
  min-width: 700px;
  background: rgb(202, 201, 201);
}
.container {
  width: 650px;
  height: 400px;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 5px solid rgb(244, 254, 255);
}

第 2 步:将图像添加到放大镜

现在,一个图像已添加到这个简单的图像放大镜项目中。在这里,您可以使用您选择的图像。

<div id="zoom">
  <img src="https://img-blog.csdnimg.cn/c43ca410ce4a40e4836664f7dbe98ad5.png" alt="">
</div>
#zoom img{
  width: 650px;
  height: 400px;
}

第 3 步:CSS设计放大镜

现在已经创建了放大镜玻璃,可以在其中通过缩放看到图像。我将通过 JavaScript 添加这个元素。现在我只是在设计。

#lens {
  position: absolute;
  border: 2px solid grey;
  border-radius: 50%;
  overflow: hidden;
  cursor: none;
  box-shadow: inset 0 0 10px 2px grey;
  filter: drop-shadow(0 0 2px grey);
}

#lens > * {
  cursor: none;
}

第 4 步:使用 JavaScript 激活图像放大镜

这个CSS 图像放大镜需要一些 JavaScript 才能工作。没有使用 jQuery 或外部库。因此,如果您了解基本的 JavaScript,您就可以构建它。

//lensSize => 宽度和高度
const lensSize = 200;

function magnify(id, zoom){
  const el = document.getElementById(id);
//cloneNode() 方法创建一个节点的副本,并返回克隆
  const copy = el.cloneNode(true);
//createElement() 方法创建由 tagName 指定的 HTML 元素
  const lens = document.createElement("div");
  
//setAttribute() 设置指定元素的属性值
  lens.setAttribute("id","lens")  
  lens.style.width = lensSize + "px";
  lens.style.height = lensSize + "px";
  
//appendChild() 方法用于插入一个新节点
  el.appendChild(lens);
//getBoundingClientRect() 方法返回元素的大小及其位置
  el.getBoundingClientRect();
  copy.style.zoom = zoom;
  lens.appendChild(copy);
  
  copy.style.width = (el.offsetWidth * zoom) + "px";
  copy.style.heigth = (el.offsetHeight * zoom) + "px";
  copy.style.position = "absolute";
  
//当指针在元素上移动时执行 MouseMove
  el.addEventListener("mousemove", (ev) => {
//preventDefault() 方法停止选定元素的默认操作
    ev.preventDefault();
    ev.stopPropagation();
    const pos = getCursorPos(ev);
    lens.style.left =  - (lensSize/2) + pos.x + "px";
    lens.style.top = - (lensSize/2) + pos.y + "px";
    copy.style.left = - (pos.x - el.offsetLeft) + (lensSize/zoom)*0.5 + "px";
    copy.style.top = - (pos.y - el.offsetTop) + (lensSize/zoom)*0.5  + "px";
  })
}

  function getCursorPos(e) {
    var x = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
    var y = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
    return {x : x , y : y};
  }
//放大值
magnify("zoom", 4)

JavaScript 图像放大镜在很多网站中都扮演着非常重要的角色。如果你需要放大项目中的任何图像,则可以使用这种 javascript 类型的图像放大镜 。

 完整源码下载

GitHub 地址:https://github.com/wanghao221/moyu/tree/main/工具-21.图片放大镜

以上就是使用JavaScript实现简单图像放大镜效果的详细内容,更多关于JavaScript图像放大镜的资料请关注脚本之家其它相关文章!

相关文章

  • 微信小程序之swiper滑动面板用法示例

    微信小程序之swiper滑动面板用法示例

    这篇文章主要介绍了微信小程序之swiper滑动面板用法,结合实例形式详细分析了swiper滑动面板的具体功能、参数、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-12-12
  • javascript实现动态CSS换肤技术的脚本

    javascript实现动态CSS换肤技术的脚本

    javascript实现动态CSS换肤技术的脚本...
    2007-06-06
  • 原生JS实现小小的音乐播放器

    原生JS实现小小的音乐播放器

    这篇文章主要为大家详细介绍了原生JS实现音乐播放器,支持循环、随机播放,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • JS 限时限次数点击按钮的实现思路

    JS 限时限次数点击按钮的实现思路

    这篇文章主要介绍了JS 限时限次数点击按钮,实现方法很简单需要用一个变量作为计数,点击一次,计数加一点击函数内判断计数变量设置定时恢复,对实例代码感兴趣的朋友一起看看吧
    2022-03-03
  • JS前端组件设计以业务为导向实践思考

    JS前端组件设计以业务为导向实践思考

    这篇文章主要为大家介绍了JS前端组件设计以业务为导向实践思考,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 浅谈Javascript事件处理程序的几种方式

    浅谈Javascript事件处理程序的几种方式

    事件就是用户或浏览器自身执行的某种动作。比如说click,mouseover,都是事件的名字。而相应某个事件的函数就叫事件处理程序(或事件侦听器)。为事件指定处理程序的方式有好几种
    2012-06-06
  • BootStrap table删除指定行的注意事项(笔记整理)

    BootStrap table删除指定行的注意事项(笔记整理)

    在前端开发中遇到这样的问题,对于table指定行的数据进行删除,花了好长时间才解决,今天小编抽时间给大家介绍BootStrap table删除指定行的注意事项,需要的朋友参考下吧
    2017-02-02
  • JavaScript实现HTML5游戏断线自动重连的方法

    JavaScript实现HTML5游戏断线自动重连的方法

    这篇文章主要介绍了JavaScript实现HTML5游戏断线自动重连的方法,需要的朋友可以参考下
    2017-09-09
  • javascript中的 object 和 function小结

    javascript中的 object 和 function小结

    JavaScript的面向对象是基于原形的,所有对象都有一条属于自己的原型链。Object与Function可能很多看Object instanceof Function , Function instanceof Object都为true而迷惑,所以首先看下对象的实例。
    2016-08-08
  • js实现类似jquery里animate动画效果的方法

    js实现类似jquery里animate动画效果的方法

    这篇文章主要介绍了js实现类似jquery里animate动画效果的方法,实例分析了javascript模拟实现jQuery中animate动画效果的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04

最新评论