【问题标题】:I have written code for outer div, where I am able to move up and down but unable to move left right我已经为外部 div 编写了代码,我可以在其中上下移动但无法左右移动
【发布时间】:2017-10-31 09:35:58
【问题描述】:

请在附件中找到完整代码的链接。 我想平移外部 div 并且该 div 中的内容具有固定位置。 (功能就像google map pan over)。

$(document).ready(function() {
var self = {};

$('div').on('mousedown', function(e) {
    self.panStartX = e.pageX;
    self.panStartY = e.pageY;
    self.mouseDown = true;
    self.pageTop = parseInt($(this).css('top'), false) || 20;
    self.pageLeft = parseInt($(this).css('left'), false) || 10;
}).on('mousemove', function(e) {
    if (self.mouseDown) {
        var pageTop = self.pageTop;
        var pageLeft = self.pageLeft;
        self.panEndX = e.pageX;
        self.panEndY = e.pageY;

        if (self.panStartY > self.panEndY) {
            self.panTop = self.panEndY - self.panStartY;
            pageTop+= self.panTop;
            $(this).css({ top: pageTop });
        } else {
            // Down
            self.panTop = self.panStartY - self.panEndY;

            pageTop-= self.panTop;
            if (pageTop > 42) pageTop = 42;

            $(this).css({ top: pageTop });
        }
    }
}).on('mouseup', function(e) {
    self.mouseDown = false;
});

});

提前致谢。 jsfiddle

【问题讨论】:

    标签: javascript jquery html css pan


    【解决方案1】:

    HTML结构变化

    <div class="outterdiv">
    
    
    </div>
    <div class="innerdiv">
      <form action="/action_page.php">
      <label for="male">Male</label>
      <input type="radio" name="gender" id="male" value="male"><br>
      <label for="female">Female</label>
      <input type="radio" name="gender" id="female" value="female"><br>
      <label for="other">Other</label>
      <input type="radio" name="gender" id="other" value="other"><br><br>
      <input type="submit" value="Submit">
    </form>
    </div>
    

    CSS 更改

    .innerdiv {
      position: fixed;
      z-index: 2;
      left: 20px;
      top: 20px;
    }
    

    检查这个fiddle

    【讨论】:

    • 对不起,这不是我想要的,我想在画布上平移
    【解决方案2】:

    我认为这就是您想要的... 现在您可以上下左右移动

    CSS:

    .outterdiv {
         /* width:2160px; 
          height:3840px; it's remove for clear visualization, you can add it again 
         */ 
          position:absolute;
          background: lightblue;
          //background: url(http://2.bp.blogspot.com/-cdv-Dxy474A/UWMjoBq_vuI/AAAAAAAAFIs/Z4QycYcrkUg/s1600/green-background-pattern-with-warped-vertical-stripes.jpg) left top repeat;
    }
    

    jQuery:

        $(document).ready(function() {
        var self = {};
    
        $('div').on('mousedown', function(e) {
            self.panStartX = e.pageX;
            self.panStartY = e.pageY;
            self.mouseDown = true;
            self.pageTop = parseInt($(this).css('top'), false) || 20;
            self.pageLeft = parseInt($(this).css('left'), false) || 10;
        }).on('mousemove', function(e) {
            if (self.mouseDown) {
                var pageTop = self.pageTop;
                var pageLeft = self.pageLeft;
                self.panEndX = e.pageX;
                self.panEndY = e.pageY;
    
                if (self.panStartY > self.panEndY) {
                    self.panTop = self.panEndY - self.panStartY;
                    pageTop+= self.panTop;
                    $(this).css({ top: pageTop });
                } else {
                    // Down
                    self.panTop = self.panStartY - self.panEndY;
    
                    pageTop-= self.panTop;
                    if (pageTop > 42) pageTop = 42;
    
                    $(this).css({ top: pageTop });
                }
    
    
    
    
                if (self.panStartX > self.panEndX) {
                   self.pageLeft = self.panStartX - self.panEndX;                
                    pageLeft-= self.pageLeft;              
    
                    $(this).css({ left: pageLeft });
                } else {
                    // right
    
                     self.pageLeft = self.panEndX - self.panStartX;
                    pageLeft+= self.pageLeft;
                    if (pageLeft > 42) pageLeft = 42;
    
                    $(this).css({ left: pageLeft });
                }
            }
        }).on('mouseup', function(e) {
            self.mouseDown = false;
        });
    });
    

    这是预览链接: https://codepen.io/ziruhel/pen/bYdwYV

    更新您的评论请求的链接: https://codepen.io/ziruhel/pen/OOVQXR

    【讨论】:

    • 我想平移外部 div 并将内容保留在其位置
    • 使用静态内容更新链接: codepen.io/ziruhel/pen/OOVQXR 如果您需要更多更改,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多