我希望能够单击鼠标并将其保持在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大小的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。