当前位置: 首页 > 面试题库 >

jQuery-拖动div CSS背景

哈翔
2023-03-14
问题内容

我希望能够单击鼠标并将其保持在div内并移动其背景。在Google上搜索了很多内容,却没有找到我想要的。


问题答案:

好吧,让它起作用。我想我可以解决所有问题了:

最终的jQuery有界限

$(document).ready(function(){
    var $bg = $('.bg-img'),
        elbounds = {
            w: parseInt($bg.width()),
            h: parseInt($bg.height())
        },
        bounds = {w: 2350 - elbounds.w, h: 1750 - elbounds.h},
        origin = {x: 0, y: 0},
        start = {x: 0, y: 0},
        movecontinue = false;

    function move (e){
        var inbounds = {x: false, y: false},
            offset = {
                x: start.x - (origin.x - e.clientX),
                y: start.y - (origin.y - e.clientY)
            };

        inbounds.x = offset.x < 0 && (offset.x * -1) < bounds.w;
        inbounds.y = offset.y < 0 && (offset.y * -1) < bounds.h;

        if (movecontinue && inbounds.x && inbounds.y) {
            start.x = offset.x;
            start.y = offset.y;

            $(this).css('background-position', start.x + 'px ' + start.y + 'px');
        }

        origin.x = e.clientX;
        origin.y = e.clientY;

        e.stopPropagation();
        return false;
    }

    function handle (e){
        movecontinue = false;
        $bg.unbind('mousemove', move);

        if (e.type == 'mousedown') {
            origin.x = e.clientX;
            origin.y = e.clientY;
            movecontinue = true;
            $bg.bind('mousemove', move);
        } else {
            $(document.body).focus();
        }

        e.stopPropagation();
        return false;
    }

    function reset (){
        start = {x: 0, y: 0};
        $(this).css('backgroundPosition', '0 0');
    }

    $bg.bind('mousedown mouseup mouseleave', handle);
    $bg.bind('dblclick', reset);
});

原始答案

HTML

<div class="bg-img"></div>

CSS

div.bg-img {
    background-image: url(http://upload.wikimedia.org/wikipedia/commons/9/91/Flexopecten_ponticus_2008_G1.jpg);
    background-position: 0 0;
    background-repeat: no-repeat;
    background-color: blue;
    border: 1px solid #aaa;
    width: 250px;
    height: 250px;
    margin: 25px auto;
}

jQuery

$(document).ready(function(){
    var $bg = $('.bg-img'),
        origin = {x: 0, y: 0},
        start = {x: 0, y: 0},
        movecontinue = false;

    function move (e){
        var moveby = {
            x: origin.x - e.clientX,
            y: origin.y - e.clientY
        };

        if (movecontinue === true) {
            start.x = start.x - moveby.x;
            start.y = start.y - moveby.y;

            $(this).css('background-position', start.x + 'px ' + start.y + 'px');
        }

        origin.x = e.clientX;
        origin.y = e.clientY;

        e.stopPropagation();
        return false;
    }

    function handle (e){
        movecontinue = false;
        $bg.unbind('mousemove', move);

        if (e.type == 'mousedown') {
            origin.x = e.clientX;
            origin.y = e.clientY;
            movecontinue = true;
            $bg.bind('mousemove', move);
        } else {
            $(document.body).focus();
        }

        e.stopPropagation();
        return false;
    }

    function reset (){
        start = {x: 0, y: 0};
        $(this).css('backgroundPosition', '0 0');
    }

    $bg.bind('mousedown mouseup mouseleave', handle);
    $bg.bind('dblclick', reset);
});


 类似资料:
  • 基本上,我想要的是,当拖动时,如果我走出容器区域并在那里释放鼠标单击,可拖动的元素只会粘附到我离开容器区域的边界上。当我将光标移回时,元素会粘回到光标上。当您只是移动光标(而不是拖动)而元素仍在被拖动时,它看起来并不好看。 这是一把小提琴。只要在输出区域外拖动并释放光标,您就会得到我所说的内容。 我在想两种方法 > 在拖动时限制鼠标移动到容器网区域(我搜索了一下,没有找到怎么做。也许这是不可能的?

  • 本文向大家介绍jQuery EasyUI Draggable拖动组件,包括了jQuery EasyUI Draggable拖动组件的使用技巧和注意事项,需要的朋友参考一下 上文已经提到过了jQuery EasyUI插件引用一般我们常用的有两种方式(排除easyload加载方式),所以本篇要总结的Draggable组件同样有两种方式加载: (1)、使用class加载方式: (2)、JS 加载调用 $

  • 允许使用鼠标移动元素。 如需了解更多有关 draggable 交互的细节,请查看 API 文档 可拖拽小部件(Draggable Widget)。 默认功能 在任意的 DOM 元素上启用 draggable 功能。通过鼠标点击并在视区中拖动来移动 draggable 对象。 <!doctype html> <html lang="en"> <head> <meta charset="utf-

  • pre { white-space: pre-wrap; } 本教程向您展示如何使 HTML 元素可拖动,在本例中,我们将创建三个 DIV 元素然后启用他们的拖动和放置。 首先,我们创建三个 <div> 元素:     <div id="dd1"></div>     <div id="dd2"></div>     <div id="dd3"></div> 对于第一个 <div> 元素,我们

  • 问题内容: 作为实验,我创建了一些div并使用CSS3对其进行了旋转。 然后,我随机设置它们的样式,并使其通过jQuery可拖动。 拖动有效,但我注意到仅在webkit浏览器中拖动div时突然跳了一下,而在Firefox中一切正常。 如果我删除 职位:绝对 风格,那么“跳跃”就更糟了。我以为webkit和gecko之间的转换起源可能有所不同,但是默认情况下它们都位于元素的中心。 我已经搜索过了,但

  • 本文向大家介绍jquery拖动改变div大小,包括了jquery拖动改变div大小的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了jquery拖动改变div大小的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。