[英]How to catch div position and reposition it later (on MAC)
我正在创建一个APP,它将为用户提供可拖动的元素。 我想保存元素的位置,以便以后在同一位置重新定位。 我在stackoverflow上发现了一些类似的问题,但看起来像是有人因为同样的问题而通过了。 所以,我想知道我是否理解不正确。
基本上我的问题是:根据窗口的调整,元素位置的值可能会有所不同。
示例:如果在窗口调整到其原始大小的50%(小于)的情况下捕捉到元素的左侧位置,则左侧位置将不同于100%尺寸。
因此,如果用户将窗口的元素调整少了50%,并在同一用户返回时将其保存,则这些元素将变得一团糟(如果窗口的大小不同)。
我有这个例子http://jsfiddle.net/EV5JZ/1/
如果转到控制台,您将看到(值):
console.log($('#section > li:eq(0)').find('.element:last()').position().left);
如果您调整窗口大小,将获得不同的值。
因此,我缺少某些东西还是应该使用特定的方法?
CSS:
<style>
body, html {
height: 100%;
overflow: hidden;
}
#section {
list-style-type: none;
padding: 0px;
margin: 0px;
}
#section li {
margin: 0px 0px 1px 0px;
width: 99.9%;
background-color:#ccc;
border: 0px solid red;
min-height: 100px;
float: left;
}
</style>
HTML:
<div id="central-panel">
<div id="template">
<ul id="section">
<li>
<div class="element">1</div>
<div class="element">2</div>
<div class="element">3</div>
<div class="element">4</div>
</li>
<li><span>::</span>Item 2</li>
<li><span>::</span>Item 3</li>
<li><span>::</span>Item 4</li>
</ul>
</div>
</div>
更新 :
好吧,我找到了如何在Windows上修复它,但是我意识到最大的问题在于MAC。
基本上,如果我将元素类上的float:left更改为none或将id模板从“%”更改为“ px”,如下所示,我可以解决此问题,但在MAC上,它将保持错误的行为。
.element {
float: none;
}
#template {
width: 1000px;
}
任何想法?
好吧,实际上我正在尝试以最糟糕的方式做。
我的布局是流动的,因此所有内容都用“%”定义。 当我尝试重新放置元素时,我需要减去为放置在元素之前的布局元素的“宽度”保存的左侧位置,但是这些布局元素可以根据调整的大小来更改其“宽度”的问题。因此,分辨率也会受到影响。
我应该重新定位的元素位于用“ px”定义的DIV元素内。 因此,这种方式要容易得多。 我只是从中取出“ float:left”,并得到了像$ .css('left')这样的位置。
问题是我的方法。 现在基本上我可以像这样重新定位:
得到
$('#section > li:first()').find('.element:last()').css('left')
复位
$('#section > li:first()').find('.element:last()').css('left', '536px');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.