首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript放大镜

JavaScript放大镜
EN

Stack Overflow用户
提问于 2015-09-22 12:36:44
回答 1查看 1.3K关注 0票数 1

我在JavaScript中构建了一个放大镜,当我单击它或单击并拖动它时,它工作得很好,但是它不应该隐藏在屏幕上。

代码语言:javascript
复制
$(".menu-left-preview-box-preview").bind('click', function (e) {
    window.location = "page" + ($(this).index() + 1) + ".html";
});

var native_width = 0;
var native_height = 0;
var magnifyIsMouseDown = false;
$(".magnify").parent().mousedown(function (e) {
    magnifyIsMouseDown = true;
});
$(".magnify").mousemove(function (e) {
    if (magnifyIsMouseDown) {
        if (!native_width && !native_height) {
            var image_object = new Image();
            image_object.src = $(".small").attr("src");
            native_width = image_object.width;
            native_height = image_object.height;

        } else {
            var magnify_offset = $(this).offset();
            var mx = e.pageX - magnify_offset.left;
            var my = e.pageY - magnify_offset.top;

            if (mx < $(this).width() && my < $(this).height() && mx > 0 && my > 0) {
                $(".large").fadeIn(100);

            } else {
                $(".large").fadeOut(100);
            }
            if ($(".large").is(":visible")) {
                var rx = Math.round(mx / $(".small").width() * native_width - $(".large").width() / 2) * -1;
                var ry = Math.round(my / $(".small").height() * native_height - $(".large").height() / 2) * -1;
                var bgp = rx + "px " + ry + "px";

                var px = mx - $(".large").width() / 2;
                var py = my - $(".large").height() / 2;
                $(".large").css({ left: px, top: py, backgroundPosition: bgp });
            }
        }
     }
});

$(".magnify").parent().mouseup(function (e) {
    magnifyIsMouseDown = false;
    $(".large").fadeOut(100);
});
$(".magnify").parent().mouseleave(function (e) {
    $(".large").fadeOut(100);
});

manageSlide();

默认情况下,放大镜必须在屏幕上。放大镜可以被拖动,掉下来后,它必须留在那里,在它的下降位置。

在点击和拖动放大镜工作良好,但它不应隐藏在屏幕上。应该在屏幕上。

提供放大镜手柄与那个圆圈(在设计中)。

工作示例:http://jsfiddle.net/mohsin80/4ww8efx5/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-22 14:01:04

我将if (magnifyIsMouseDown) {替换为if (isDragging) {,并创建了以下方法:

代码语言:javascript
复制
var isDragging = false;
$(".magnify").parent().mouseup(function(e) {
    isDragging = false;
});
$(".magnify").parent().mousedown(function(e) {
    isDragging = true;
});

若要使用jQuery进行模拟拖动事件,请执行以下操作。

这是小提琴。希望它有所帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32717055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档