javaScript实现图片的放大和缩小

在这里我们带领大家来使用javaScript实现图片的放大和缩小。实现的效果图如下


点击放大按钮,图片会放大,当放大到一定程度的时候,图片不能再放大,会弹出一个提示框,不能再放大了,点击缩小按钮,图片会缩小,当缩小到一定程度的时候,图片不能再缩小,会弹出一个提示框,不能再缩小了。

下面我们先来实现界面的布局。

点击按钮图片进行缩放,可以看出需要将图片和按钮放置在一个div里面。

布局代码如下:


1、实现点击放大按钮,图片放大

 

实现分为以下几步:

1.获取放大按钮以及图片

通过getElementById方法获取放大按钮以及图片,然后设置按钮的点击事件onclick。

2.实现放大按钮的onclick事件

在该事件中,需要设置图片每次点击后的宽度和高度,设置为该图片本身宽度和高度的1.2倍,实现代码如下

var endW=image.width*1.2;//每次点击后的宽度

var endW=image.width*1.2;//每次点击后的高度

这里需要设置定时器,每隔20ms,图片放大一次,此时需要判断,如果图片的宽度小于endW,点击放大按钮的时候,图片宽度和高度每次增大1.05倍否则。但是这样的话点击放大按钮时,图片会无限制放大。

3.限制图片放大

设置图片放大的极限值,分别为图片宽度和高度的2倍

var maxW=image.width*2;//放大宽度的极限值

var maxH=image.height*2;//放大高度的极限值

在判断的时候加入当图片的宽度小于极限值的时候,图片放大,否则弹出对话框“图片不能再放大”

2、实现点击缩小按钮,图片缩小

实现原理和放大类似。这里将代码贴出来,大家可以认真看一下


完整代码

 

 

 

  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,这个问题我可以回答。以下是一个简单的HTML和JavaScript实现图片放大缩小和拖拽的示例: ```html <!DOCTYPE html> <html> <head> <title>Image Zoom and Drag</title> <style> #image-container { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border: 1px solid black; overflow: hidden; cursor: move; } #image-container img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } </style> </head> <body> <div id="image-container"> <img src="https://picsum.photos/id/237/300/300" id="image"> </div> <script> var image = document.getElementById("image"); var imageContainer = document.getElementById("image-container"); var isDragging = false; var lastX, lastY; imageContainer.addEventListener("mousedown", function(e) { isDragging = true; lastX = e.clientX; lastY = e.clientY; }); imageContainer.addEventListener("mouseup", function(e) { isDragging = false; }); imageContainer.addEventListener("mousemove", function(e) { if (isDragging) { var deltaX = e.clientX - lastX; var deltaY = e.clientY - lastY; var newTop = image.offsetTop + deltaY; var newLeft = image.offsetLeft + deltaX; image.style.top = newTop + "px"; image.style.left = newLeft + "px"; lastX = e.clientX; lastY = e.clientY; } }); imageContainer.addEventListener("wheel", function(e) { e.preventDefault(); var scale = e.deltaY > 0 ? 0.9 : 1.1; var newWidth = image.clientWidth * scale; var newHeight = image.clientHeight * scale; image.style.width = newWidth + "px"; image.style.height = newHeight + "px"; }); </script> </body> </html> ``` 这个示例中,我们首先创建了一个容器 `image-container`,然后在容器中放置了一个图片 `image`。我们使用 CSS 来将容器居中并添加了一些样式,例如设置容器为相对定位、边框、隐藏溢出部分和鼠标指针为移动。 然后我们使用 JavaScript 来添加拖拽和缩放的功能。我们使用了三个变量 `isDragging`、`lastX` 和 `lastY` 来跟踪拖拽状态和鼠标位置。当用户按下鼠标按钮时,我们设置 `isDragging` 为 `true` 并记录下当前鼠标位置。当用户释放鼠标按钮时,我们设置 `isDragging` 为 `false`。当用户移动鼠标时,我们检查 `isDragging` 是否为 `true`,如果是,就计算鼠标移动的距离,并将图片的位置相应地调整。这样就实现了拖拽的功能。 最后,我们添加了一个滚轮事件监听器来实现缩放功能。当用户滚动鼠标滚轮时,我们阻止默认行为,然后根据滚轮的方向计算缩放比例,并将图片的宽度和高度相应地调整。 希望这个示例能够帮助你实现所需的功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值