是否可以通过拖动来更改背景位置
Is it possible to change background position by dragging?
我有一个使用世界地图图像作为背景的html地图。
我可以制作一个 js 函数来更改div 的背景位置,但我喜欢在用户单击地图然后像谷歌地图一样拖动时更改背景位置。
所以我这里有一个示例页面:http://lab.qacode.com/map 使用它 http://lab.qacode.com/map/map.jpg
我将不胜感激任何建议或提示。
完成这项工作的一个简单方法是使用 jQuery UI 的可拖动
.HTML
<div id="map">
<div class="map-canvas"></div>
</div>
JavaScript
// Pre-select elements
var map = $("#map"),
canvas = map.find(".map-canvas");
// Calculate canvas constraints
var maxLeft = map.width()-canvas.width(),
maxTop = map.height()-canvas.height();
// Make canvas draggable
canvas.draggable({
drag: function(e, ui) {
// Check if canvas is within constraints
if (ui.position.left > 0) {
ui.position.left = 0;
} else if (ui.position.left < maxLeft) {
ui.position.left = maxLeft;
}
if (ui.position.top > 0) {
ui.position.top = 0;
} else if (ui.position.top < maxTop) {
ui.position.top = maxTop;
}
}
});
放置标记
可以在地图上放置标记(或其他标记)。这非常简单,坐标基于画布中的像素。对于测试用例中的标记,它距离画布的左侧和顶部为 150px。
// Create simple dot marker
$("<div></div>")
.addClass("map-marker")
.appendTo(canvas)
.offset(function(){
return { left: 150, top: 150 };
})
// Append a label
.append("<span><- Dot</span>");
现在到更高级的东西,即(在)著名的谷歌地图别针。
// Create draggable Google Maps pin marker
var pin =
$("<div></div>")
.addClass("google-pin")
.appendTo(canvas)
.offset(function(){
return { left: 50, top: 50 };
})
// Bind mouseup/down for visual confirmation of grab
.bind({
mousedown: function(){
var os = pin.offset();
pin.offset(function(){
return { top: os.top-3 };
});
},
mouseup: function(){
var os = pin.offset();
pin.offset(function(){
return { top: os.top+3 };
});
}
})
// Make it draggable
.draggable({
start: function(e,ui){
ui.helper.offset(function(){
return { top: ui.offset.top-2 };
});
},
container: canvas
});
查看 jsFiddle 上的测试用例
相关文章:
- jQuery-仅更改Y轴的CSS背景位置
- 仅为背景位置X轴制作动画
- 如何将CSS背景位置属性从百分比转换为像素
- 使用 jQuery 限制滚动时的垂直背景位置
- 视差/背景位置的特征检测
- 根据背景位置更改光标 URL
- 精灵图像的背景位置在 IE 中不起作用,用于倒计时时钟
- 如何在背景图像到达底部时停止背景位置更改
- IE10 背景位置 x 的解决方法
- 根据当前背景位置更改背景位置
- 在 Javascript 中获取 posX 和 posY 的背景位置
- 通过 javascript 通过增量修改 CSS 背景位置
- 用于更改背景位置的动态变量
- 背景位置:固定
- 滚动到页面底部时更改背景位置
- 更改其背景位置时,背景图像消失
- 使用 jquery 或 javaScript 更改背景位置的值
- 使用 jQuery 设置背景位置
- 根据鼠标移动将背景位置 x px 向左/向右移动(从背景位置:中心开始)
- 使用Javascript设置图像的背景位置