前端JS特效第45集:js实现图片放大和拖拽特效

js实现图片放大和拖拽特效,先来看看效果:

部分核心的代码如下(全部代码在文章末尾):

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>js实现图片放大和拖拽特效</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
    <link rel="stylesheet" href="css/style.css">
    <script type="text/javascript" src="js/drag_map.js"></script>
    <style type="text/css">
        body{font-size: 12px;font-family: "Verdana" , "Arial" , "Helvetica" , "sans-serif";} td{font-size: 12px; line-height: 150%;} TD{font-size: 12px; color: #000000;} A{font-size: 12px; color: #000000;} #Layer1{z-index: 100; position: absolute; top: 150px;} #Layer2{z-index: 1; position: absolute;}
    </style>
    <script type="text/JavaScript">
        function MM_reloadPage(init) {
            if (init == true) with (navigator) {
                if ((appName == "Netscape") && (parseInt(appVersion) == 4)) {
                    document.MM_pgW = innerWidth; document.MM_pgH = innerHeight; onresize = MM_reloadPage;
                }
            }
            else if (innerWidth != document.MM_pgW || innerHeight != document.MM_pgH) location.reload();
        }
        MM_reloadPage(true);
    </script>
</head>
<body onLoad="" onmouseup="document.selection.empty()" oncontextmenu="return false"
    onselectstart="return false" ondragstart="return false" onbeforecopy="return false"
    style="overflow-y: hidden; overflow-x: hidden" oncopy="document.selection.empty()"
    leftmargin="0" topmargin="0" onselect="document.selection.empty()" marginheight="0"
    marginwidth="0">
	
    <div id="Layer1">
        <table cellspacing="2" cellpadding="0" border="0">
            <tbody>
                <tr>
                    <td>&nbsp;
                        
                    </td>
                    <td>
                        <img title="向上" style="cursor: hand" onClick="clickMove('down')" height="20" src="images/up.gif"
                            width="20">
                    </td>
                    <td>&nbsp;
                        
                    </td>
                </tr>
                <tr>
                    <td>
                        <img title="向左" style="cursor: hand" onClick="clickMove('right')" height="20" src="images/left.gif"
                            width="20">
                    </td>
                    <td>
                        <img title="还原" style="cursor: hand" onClick="realsize();" height="20" src="images/zoom.gif"
                            width="20">
                    </td>
                    <td>
                        <img title="向右" style="cursor: hand" onClick="clickMove('left')" height="20" src="images/right.gif"
                            width="20">
                    </td>
                </tr>
                <tr>
                    <td>&nbsp;
                        
                    </td>
                    <td>
                        <img title="向下" style="cursor: hand" onClick="clickMove('up')" height="20" src="images/down.gif"
                            width="20">
                    </td>
                    <td>&nbsp;
                        
                    </td>
                </tr>
                <tr>
                    <td>&nbsp;
                        
                    </td>
                    <td>
                        <img title="放大" style="cursor: hand" onClick="bigit();" height="20" src="images/zoom_in.gif"
                            width="20">
                    </td>
                    <td>&nbsp;
                        
                    </td>
                </tr>
                <tr>
                    <td>&nbsp;
                        
                    </td>
                    <td>
                        <img title="缩小" style="cursor: hand" onClick="smallit();" height="20" src="images/zoom_out.gif"
                            width="20">
                    </td>
                    <td>&nbsp;
                        
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
    <p>
        <br>
    </p>
    <div id="hiddenPic" style="z-index: 1; left: 0px; visibility: hidden; width: 0px;
        position: absolute; top: 150px; height: 0px">
        <img src="http://ww2.sinaimg.cn/large/adde8400gw1eeazlmtqa8j20qd0mdadm.jpg" border="0" name="images2">
    </div>
    <div class="dragAble" id="block1" onMouseOver="dragObj=block1; drag=1;" style="z-index: 10;
        left: 0px; width: 0px; position: absolute; top: 150px; height: 0px" onMouseOut=""
        drag="0">
        <img onmousewheel="return onWheelZoom(this)" style="zoom: 0.7" src="images/adde8400gw1eeazlmtqa8j20qd0mdadm.jpg"
            border="0" name="images1">
    </div>
<div style="text-align:center;margin:50px 0; font:normal 14px/24px 'MicroSoft YaHei';">
<p>适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗.</p>
</div>
</body>
</html>

全部代码:js实现图片放大和拖拽特效

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题我可以回答。以下是一个简单的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`,如果是,就计算鼠标移动的距离,并将图片的位置相应地调整。这样就实现的功能。 最后,我们添加了一个滚轮事件监听器来实现缩放功能。当用户滚动鼠标滚轮时,我们阻止默认行为,然后根据滚轮的方向计算缩放比例,并将图片的宽度和高度相应地调整。 希望这个示例能够帮助你实现所需的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值