使用动态左值jQuery重新调整绝对定位div的大小?

使用动态左值jQuery重新调整绝对定位div的大小?,jquery,Jquery,我编写了一个可以正常工作的函数,但是当我扩展它以添加多个层时,我可以告诉你我的数学已经完全失败了。基本上,我试图通过更改绝对div的宽度、左侧和顶部值来调整绝对div的大小(对于这个问题,我更关注的是理解数学和使用$(window.width()),调整左侧值,如果您想更深入的话,还可能调整宽度)。这里有一个更好的例子来说明我所说的 同样,这个功能对我来说主要是基于正确的数学,这就是为什么我失败的原因,因为我知道数学是错误的,我不知道如何利用我正在使用的元素并利用窗口宽度来缩放它 这应该可以解释

我编写了一个可以正常工作的函数,但是当我扩展它以添加多个层时,我可以告诉你我的数学已经完全失败了。基本上,我试图通过更改绝对div的宽度、左侧和顶部值来调整绝对div的大小(对于这个问题,我更关注的是理解数学和使用
$(window.width()
),调整左侧值,如果您想更深入的话,还可能调整宽度)。这里有一个更好的例子来说明我所说的

同样,这个功能对我来说主要是基于正确的数学,这就是为什么我失败的原因,因为我知道数学是错误的,我不知道如何利用我正在使用的元素并利用窗口宽度来缩放它

这应该可以解释一切,但让我给你一些快速的细节

详细信息:用户可以使用jQuery的
.draggable()
添加任意数量的层。该层被拖动到所需位置,然后保存到数据库中,然后该位置和内容在前端使用

我想做的是让这个反应灵敏,css不能很好地工作,因为位置是随机的/动态的

HTML示例:

  <div class="jsfiddle-container">
    <div class="example">

      // You can see the positions are in no particular order
      <div class="d1" data-orig="191px" style="position: absolute; left: 191px;"><span></span>Stewie Griffen</div>
      <div class="d2" data-orig="10px" style="position: absolute; left: 10px;"><span></span>Brian Griffen</div>
      <div class="d3" data-orig="419px" style="position: absolute; left: 419px;"><span></span>Peter Griffen</div>

    </div>
  </div>
结束:我觉得框架基本上都设置好了,只需要把数学计算下来,在屏幕滚动时将
$(window.width()
与左边的值绑定起来,并正确设置宽度


一些帮助将是非常棒的,可以帮我省去很多头痛,我也很高兴听到大家的意见。另外,如果您想了解更多详细信息,请询问,我重新编写了一些代码以适应小提琴,但这并不完美,但我想向您展示我正在谈论的内容,也许还可以给您一些东西来玩。

如果您想做的是,当容器的宽度小于800px时,所有div都会改变宽度并向左移动,以便完美地填充顶部,那么为什么不使用基于宽度的百分比作为100%,并使用元素数作为拆分器呢

e、 g.如果宽度为600px,有3个div,那么600px将是100%,有3个元素,因此33%每个元素=600/3=200px每个元素。然后从0开始,将左撇子设置为按此数量递增

var itemWidth = 0;
var numOfItems = $(obj).length;
var containerWidth = $(".jsfiddle-container").css.width;

if (containerWidth <= 800)
{
    itemWidth = containerWidth / numOfItems;
    var count = 0;

    obj.each(function () {
        $(this).css({
          'left': (itemWidth * count) + 'px',
          'width': itemWidth + 'px',

        });
        count++;
    });
}
else
{
    // Set static width
}
var itemWidth=0;
var numOfItems=$(obj).length;
var containerWidth=$(“.jsfiddle container”).css.width;

if(containerWidth Hey抱歉回复太晚了,我问了这个问题后睡着了。是的,我确实想过类似的事情,但我不确定如何获得项目数量,我本来想问这个问题,现在我发现它就像使用
.length()一样简单
虽然我做了一些修改,但这看起来很简单,而不是
.jsfiddle container
宽度我需要
$(window.width())
所以我根据你的代码逻辑更新了我的小提琴。这真的帮了我很大的忙。谢谢。虽然我觉得我可能需要在实时版本中对它进行调整,但这让我感觉很好。谢谢!事实上,我已经发现了一个怪癖,当低于800px时,brian griffen一直在左边,但因为这是低于800px的第二个顺序,所以它得到了重新组织在标记中占据它的位置。当它在中间标记时,它应该保持左边。
var itemWidth = 0;
var numOfItems = $(obj).length;
var containerWidth = $(".jsfiddle-container").css.width;

if (containerWidth <= 800)
{
    itemWidth = containerWidth / numOfItems;
    var count = 0;

    obj.each(function () {
        $(this).css({
          'left': (itemWidth * count) + 'px',
          'width': itemWidth + 'px',

        });
        count++;
    });
}
else
{
    // Set static width
}