jquery - 功能类似于 jQuery 的位置,但不是即时的
问题描述
因此,假设我必须div
s 并且我想为一个设置动画,以便它最终在另一个之上,慢慢地向它移动。我知道我可以使用animate()
,但我不知道如何指定目的地的坐标,我不知道先验。
使用 jQuery UI,我可以做类似的事情
$("#moving_element").position({
my: "left top",
at: "left top",
of: $("#destination_element"),
collision: "fit"
})
但没有速度参数:变化是瞬时的。
举一个我所追求的例子,这是我正在使用的 GUI 的样子。可以选择一张或多张卡片,当点击按钮时,它们必须从它们所在的任何位置都移向红色覆盖的卡片。
我怎样才能实现我所追求的?谢谢你。
解决方案
考虑以下示例。
$(function() {
$.fn.animateTo = function(obj, ms) {
if (obj.length == 0) {
return false;
}
if (ms == undefined) {
ms = 400; // Default
}
obj = $(obj);
var p = obj.position();
$(this).animate({
top: (p.top + 26) + "px",
left: p.left + "px"
}, ms);
}
$("#draggable").draggable().dblclick(function(e) {
$(this).animateTo(".ace", 500);
});
})
.field {
position: relative;
}
.card {
width: 150px;
height: 150px;
padding: 0.5em;
position: absolute;
}
#draggable {
top: 150px;
left: 75px;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div class="field">
<div class="card ui-widget-content ace">Ace</div>
<div id="draggable" class="card ui-widget-content">
<p>Drag Me<br />Double Click Me</p>
</div>
</div>
这将允许您为卡片移动到特定位置设置动画。
.animateTo(选择器或元素或 jQuery 对象)
描述:动画一个元素相对于另一个元素的位置。
推荐阅读
- arrays - 更改二维数组中的值之一?
- java - 深度为 1 的关系实体也获取节点的关系
- ionic-framework - 离子项目中的领域数据库
- c++ - 当函数超出范围时,成员变量如何在本地对象被删除后存活
- json - 如何通过谷歌脚本将这个 json 返回从 API 写入谷歌表
- objective-c - 从另一个 Swift 类访问在 Obj-C 类中实现的 Swift 协议属性
- sql - where 语句中的条件使我的 SQL 查询耗时过长
- apache-zeppelin - 我如何获得 apache zeppelin 0.9.0
- c# - ValueInjecter 未正确绑定属性
- php - 尝试连接到服务器时如何修复“无法连接到 MySQL:连接被拒绝”