实现点击图片查看大图,可滚轮放大缩小,可拖动图片,兼容ie8及以上,ie7开始就有问题,以后拿出去用的时候再完善吧

本文是一位前端新手分享的实现点击图片查看大图的模态层预览功能,该功能兼容到IE8浏览器。作者在实现过程中遇到了IE8的兼容性问题,如不支持addEventListener和getElementsByClassName等,通过适配解决。代码已提供,适合初学者参考,同时也欢迎经验丰富的开发者分享更优解决方案。
摘要由CSDN通过智能技术生成

前端小小白一枚,一直羡慕前端大神分分钟写出来一个模态层图片预览,这两天项目不吃紧,自己动手试做一个

既然是自己动手,虽然功能比不上大神的,不过兼容性调到了ie8,还是小有成就的,现分享出来给其他小白参考,路过的大神有更牛掰的代码,欢迎评论分享

工具:hbuilder

遇到的兼容性问题:

  1. ie8不支持 addEventLisenter,要判断,改用 attachEvent
  2. ie8不支持通过class名字找标签,即不支持 getElementsByClassName 方法,要判断一下,改用遍历标签的方法,看标签是否有同名 class
  3. ie8不支持阻止冒泡的 event.preventDefault() 方法,判断 document.all (好像ie10以上就没这个all了),改用 window.event.returnValue = false;
  4. 不要用 es6 的写法,ie不支持,如let

 

直接上代码,代码放到hbuilder相应目录就可以运行了

看看目录 只用看index的就行,项目没有用到jquery,目录里的jquery是其他测试代码用的,,book文件夹里放的图片,在index.js里有引用

从页面开始粘代码

index.html:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title></title>
		<link rel="stylesheet" href="css/index.css" type="text/css" />
		<script type="text/javascript" src="js/index.js"></script>
	</head>

	<body>
		<div id="mainDiv" class="main_div">
			<!--标题-->
			<div id="headerDiv" class="header_div">
				<span class="header_h1"> 图册</span>
			</div>
			<!--轮播框-->
			<div id="imgDiv" class="img_div">
				<!--图-->
				<img id="imgChangeBox" class="img_fit_div" src="static/book/01.jpg" 
					onclick="centerPageClick()"/>
				<div id="leftPageButton" class="left_page_button" onclick="leftPageClick()">
					<span class="page_change_button">上一页</span>
				</div>
				<div id="cneterPageButton" class="center_page_button" onclick="centerPageClick()">
					<span class="page_change_button">查看大图</span>
				</div>
				<div id="rightPageButton" class="right_page_button" onclick="rightPageClick()">
					<span class="page_change_button">下一页</span>
				</div>
			</div>

			<!--模态层-->
			<div id="imgModalWrapDiv" class="modal_wrap_div" hidden ondblclick="modalClick()"></div>
			<div id="imgModalDiv" class="img_modal_div" hidden ondblclick="modalClick()">
				<img id="imgInModal" class="img_in_modal" src="static/book/01.jpg" />
				<div id="closeImgDiv" class="close_modal_img" onclick="modalClick()">X</div>
			</div>

		</div>
	</body>

</html>
<style>

</style>

index.js:

var picData = [
	'static/book/01.jpg', 'static/book/02.jpg',
	'static/book/03.jpg', 'static/book/04.jpg',
	'static/book/05.jpg', 'static/book/03.jpg',
	'static/book/07.jpg', 'static/book/06.jpg'
好的,这个问题我可以回答。以下是一个简单的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`,如果是,就计算鼠标移动的距离,并将图片的位置相应地调整。这样就实现了拖拽的功能。 最后,我们添加了一个滚轮事件监听器来实现缩放功能。当用户滚动鼠标滚轮时,我们阻止默认行为,然后根据滚轮的方向计算缩放比例,并将图片的宽度和高度相应地调整。 希望这个示例能够帮助你实现所需的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值