javascript - 如何拖动 DIV 使其宽度和高度为负值?

标签 javascript jquery html css jquery-plugins

我在这里有点难过。我正在开发一个反馈实用程序,允许用户在网页上“绘制”框以突出显示问题区域。现在我有一个覆盖整个屏幕的 DIV,jQuery 允许您通过单击和拖动来绘制红色轮廓的 DIV。

这是JS:

{
    var $feedbackOverlay = jQuery('#feedbackOverlay');
    var $original = { top: 0, left:0 };
    $feedbackOverlay.bind('mousedown', function (e)
    {
        jQuery('<div id="currentHighlight"></div>')
            .css('width', '1px')
            .css('height', '1px')
            .css('border', 'solid 3px #ff0000')
            .css('border-radius', '5px')
            .css('position', 'absolute')
            .css('left', e.pageX)
            .css('top', e.pageY)
            .css('z-index', '8000001')
            .appendTo('body');

        $original = { top: e.pageY, left: e.pageX };
    });
    $feedbackOverlay.bind('mousemove', function (e)
    {
        var $currentHighlight = jQuery('#currentHighlight');
        if ($currentHighlight.length > 0)
        {
            var $pos = { top: e.pageY, left: e.pageX };

            if($pos.top < $original.top) $currentHighlight.css('top', $pos.top);
            if ($pos.left < $original.left) $currentHighlight.css('left', $pos.left);

            $currentHighlight.height(Math.abs($pos.top - $original.top));
            $currentHighlight.width(Math.abs($pos.left - $original.left));
        }
    });
    $feedbackOverlay.bind('mouseup', function (e)
    {
        var $currentHighlight = jQuery('#currentHighlight');
        $currentHighlight.removeAttr('id');
    });
    var $feedbackInstructions = jQuery('#feedbackInstructions');
    $feedbackInstructions.fadeIn(1000, function ()
    {
        setTimeout(function ()
        {
            $feedbackInstructions.fadeOut(1000);
        }, 3000);
    });

    $feedbackOverlay.height(jQuery(document).height());
});

这是上述的 jsFiddle:

http://jsfiddle.net/Chevex/RSYTq/

问题是我无法向上或向左拖动框。第一次单击将左上角放在鼠标单击的位置。之后,随后的拖动将改变框的宽度。放开鼠标完成框,然后您可以开始绘制另一个。如果您在绘制时尝试向左或向上拖动 DIV,它的宽度将保持为 0,但不会变为负值。

最佳答案

在这里您可以找到有效的解决方案:http://jsfiddle.net/RSYTq/34/

关于javascript - 如何拖动 DIV 使其宽度和高度为负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7287831/

相关文章:

javascript - D3 arc tweening 不工作

javascript - 数据表操作按钮未被禁用

jquery - ScrollTop 动画 jquery

javascript - var notification = 新通知

css - 背景不显示在 float div 后面

javascript - 根据不同流的状态临时累积对象

javascript - 选择创建 DOM 元素还是在 javascript 中使用 HTML 来生成控件

javascript - ng重复打印范围内的数字

javascript - 当文本和图标在同一行对齐时,自定义卡片组件无响应

html - 使用 Divs 作为 Angular 的 CSS 圆 Angular