- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一系列可以在框架中拖动的框。当他们触摸另一个盒子时,它会被推开——如果你愿意的话,会被排斥。
除了让它们可拖动之外,我什至不知道从哪里开始!!
最佳答案
为了扩展我的评论并向您展示可能的概念证明,我创建了这一小段代码:
https://jsfiddle.net/Twisty/L03rks0y/
HTML
<div id="move-frame">
<div id="obj-1" class="drag">
<span class="top">T: 2</span>
<span class="left">L: 2</span>
<span class="bottom">B:</span>
<span class="right">R:</span>
</div>
<div id="obj-2" class="no-drag">
<span class="top">T: 125</span>
<span class="left">L: 175</span>
</div>
</div>
CSS
#move-frame {
border: 1px solid #000;
margin: 20px;
padding: 2px;
width: 300px;
height: 300px;
position: relative;
}
.drag,
.no-drag {
border: 0px solid #666;
width: 75px;
height: 75px;
}
.top,
.left,
.bottom,
.right {
display: block;
font-size: 85%;
font-family: Arial;
width: 100%;
text-align: center;
}
#obj-1 {
background: #6f6;
}
#obj-2 {
background: #ccf;
position: absolute;
top: 125px;
left: 175px;
}
jQuery UI
$(function() {
var stuff = {};
$(".no-drag").each(function(k, v) {
var id = $(v).attr("id");
var top = $(v).position().top;
var left = $(v).position().left;
var bottom = top + $(v).height();
var right = left + $(v).width();
stuff[k] = {
id: id,
top: top,
left: left,
bottom: bottom,
right: right
};
});
console.log(stuff);
$("#obj-1").draggable({
containment: '#move-frame',
drag: function(e, ui) {
var objW = ui.helper.width();
var objH = ui.helper.height();
var objP = ui.position;
var buffer = 2;
objP.right = objP.left + objW;
objP.bottom = objP.top + objH;
$(this).find(".top").html("T: " + objP.top);
$(this).find(".left").html("L: " + objP.left);
$(this).find(".bottom").html("B: " + objP.bottom);
$(this).find(".right").html("R: " + objP.right);
$.each(stuff, function(k, v) {
if (objP.right == v.left - buffer) {
var $el = $("#" + v.id);
$el.css("left", v.left + buffer);
v.left += buffer;
$el.find(".top").html("T: " + $el.position().top);
$el.find(".left").html("L: " + $el.position().left);
}
if (objP.bottom == v.top - buffer) {
var $el = $("#" + v.id);
$el.css("top", v.top + buffer);
v.top += buffer;
$el.find(".top").html("T: " + $el.position().top);
$el.find(".left").html("L: " + $el.position().left);
}
});
}
});
});
有很多方法可以对此进行改进。您可以看到很容易通过缓冲区拖动,但如果移动缓慢,您会用绿色框来插入蓝色框。您还可以看到一些间隙问题,例如,如果您慢慢地将绿色框移过来,但不在同一 Y 平面上,则蓝色框仍然可以移动。
关于Javascript:创建可相互推开的可拖动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36646792/
在我的 iOS 应用程序中,我使用多个 UIView,其中一次仅显示 1 个。通过按钮我可以在这些 View 之间切换。 显示新的: self.viewPage2.frame = CGRectMake
我有这个问题,我的 Bootstrap 菜单将另一个名为“title”的 div 向下推(在移动设备上,xs)到目前为止网站链接:http://20162.hosts.ma-cloud.nl/port
我花了很长时间试图让它工作。 我有一个名为“RightExtra”的部分和一个名为“RightExtraContent”的 div。我正在努力使这两个 div 可以在窗口调整到某个点时自由移动,而不会
我有一个按钮列表。当我按下按钮时, View 应该以向下的方式滑出按钮,如下所示: 开始: 中途: 结束: 我该怎么做呢?应该滑出的 View 比按钮大,所以首先将 View 隐藏在按钮后面,然后向下
尝试在一个页面上显示 20 strip 有详细信息的消息。详细信息是固定的。该消息可以从无到大约 240 个字符不等。想要显示消息的第一部分,然后在悬停时显示其余部分。 我可以很好地做到这一点,但是当
所以我有一个 div : .col-4 { width:300px; height:400px; margin-bottom:20px; } 还有一些文字背景图片: .head
我是一名优秀的程序员,十分优秀!