zoukankan      html  css  js  c++  java
  • 图片拖拽缩放功能:兼容Chrome、Firefox、IE8+

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>拖拽图片demo</title>
        <script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
        <style>
        .test-box {
             500px;
            height: 400px;
            border: 1px solid yellow;
            overflow: hidden;
            margin: 30px auto;
            position: relative;
        }
        .test-img {
            position: absolute;
            top: 0;
            left: 0;
        }
        </style>
    </head>
    <body>
        <div class="test-box">
            <img class="test-img" src="http://images.669pic.com/element_psd/72/58/16/45/1c8e874b9b360550caab1a98a674cd73.jpg" alt="">
        </div>
        <script>
       // 缩放
       var imgZoom = {
            init: function() { 
                this.zoomImage();
            },
            zoomImage: function() {
                var _this = this;
                $('.test-box').off('mousewheel').on('mousewheel', '.test-img', function(e) {
                    _this.mouseScroll($(this));
                });
                $('.test-box').off('DOMMouseScroll').on('DOMMouseScroll', '.test-img', function(e) {
                    _this.mouseScroll($(this), e);
                });
            },
            mouseScroll: function($img,e) {
                var e = e || window.event;
                var oper = Math.max(-1, Math.min(1,(e.wheelDelta || -e.originalEvent.detail)));
                var imgWidth = $img.width();
                var newWidth = Math.max(350, Math.min(1200,imgWidth + (30*oper)));
                var left = parseInt($img.css("left")) - (newWidth - imgWidth) / 2;
                $img.css({
                    "width": newWidth + "px",
                    "left": left + "px"
                })
            },
        };
    
    
    
       // 拖拽
       var imgDrag = function() {
            var isDrag = false;
            var dragTarget;
            var startX, startY;
            var imgPositionTop,imgPositionLeft;
            var boxWidthMin, boxWidthMax, boxHeightMin, boxHeightMax;
            function moveMouse(e) {
                if (isDrag) {
                    var e = window.event || e;
                    var clientY = e.clientY;
                    var clientX = e.clientX;
                    if(clientY >= boxHeightMin && clientY <= boxHeightMax) {
                        dragTarget.style.top = imgPositionTop + clientY - startY + "px";
                    }
                    if(clientX >= boxWidthMin && clientX <= boxWidthMax) {
                        dragTarget.style.left = imgPositionLeft + clientX - startX + "px";
                    }
                    return false;
                }
            }
            function initDrag(e) {
                var e = window.event || e;
                var dragHandle = e.srcElement;
                var topElement = "HTML";
                var eventBtn = e.button == 0 || e.button == 1; // 鼠标左键
    
                while (dragHandle.tagName != topElement && dragHandle.className != "test-img") {
                    dragHandle = dragHandle.parentElement;
                }
                if (dragHandle.className == "test-img" && eventBtn) {
                    isDrag = true;
                    dragTarget = dragHandle;
                    imgPositionTop = parseInt(dragTarget.style.top + 0);
                    startY = e.clientY;
                    imgPositionLeft = parseInt(dragTarget.style.left + 0);
                    startX = e.clientX;
    
                    var initVal = 50;  // 防止图片拖出框内的最小边界值
                    var $box =  $('.test-box');
                    boxWidthMin = $box.offset().left + initVal;
                    boxWidthMax = $box.offset().left + $box.width() - initVal;
                    boxHeightMin = $box.offset().top + initVal;
                    boxHeightMax = $box.offset().top + $box.height() - initVal;
    
                    $(document).unbind('mousemove').bind('mousemove', moveMouse);
                    return false;
                }
            }
    
            $(document).unbind("mousedown").bind("mousedown", initDrag);
            $(document).unbind("mouseup").bind("mouseup", function() {
                isDrag = false;
            });
        };
    
        imgZoom.init();
        imgDrag();
        </script>
    </body>
    </html>
  • 相关阅读:
    ubuntu12.04 死机 卡屏 画面冻结解决方案
    Install Firefox 20 in Ubuntu 13.04, Ubuntu 12.10, Ubuntu 12.04, Linux Mint 14 and Linux Mint 13 by PPA
    ListView1.SelectedItems.Clear()
    android studio 下载地址
    jquery.slider.js jquery幻灯片测试
    jquery.hovermenu.js
    jquery.tab.js选项卡效果
    适配 placeholder,jquery版
    jquery.autoscroll.js jquery自动滚动效果
    将 Google Earth 地图集成到自己的窗体上的 简单控件
  • 原文地址:https://www.cnblogs.com/yhquan/p/10879652.html
Copyright © 2011-2022 走看看