如何动态调整Div的left属性

山姆

我的标题可能没有明确说明我要实现的目标,我有一些动态创建的div,现在我有一个ajax请求来删除用户希望删除的任何div,我想如果ajax返回成功,我将删除div ,我使用.remove()方法删除div,现在我的问题是删除图像后,其中包含的空间留为空白,因此我需要调整所有直接同级的左边以填充空白空间。

  <div class="carousel-inner">
      <div class="mycrousel" id="photo1" style="left:10"></div>
      <div class="mycrousel" id="photo2" style="left:120"></div>
      <div class="mycrousel" id="photo3" style="left:230"></div>
      <div class="mycrousel" id="photo4" style="left:340"></div>
      <div class="mycrousel" id="photo5" style="left:450"></div>
      <div class="mycrousel" id="photo6" style="left:560"></div>
      <div class="mycrousel" id="photo7" style="left:670"></div>
      <div class="mycrousel" id="photo8" style="left:780"></div>
      <div class="mycrousel" id="photo9" style="left:890"></div>
      <div class="mycrousel" id="photo10" style="left:1000"></div>
  </div>

所有这些都在从左到右的同一行上,现在假设用户删除id = photo5的div,我想将id为photo6-photo10的div的左侧减少110,以占用已删除的div留下的空间

function scrollThumb() {
            var $scrollWidth = 110;
            var $photoId = 'photo5' //id of the photo that was deleted
            var $totalPhoto = $('.carousel-inner > div').length;//get the total number of div left;


            $('#photo6').animate({
                    left: "-=" + $scrollWidth + "px"
                }
             $('#photo7').animate({
                    left: "-=" + $scrollWidth + "px"
                }
              $('#photo8').animate({
                    left: "-=" + $scrollWidth + "px"
                }
              $('#photo9').animate({
                    left: "-=" + $scrollWidth + "px"
                }
                $('#photo10').animate({
                    left: "-=" + $scrollWidth + "px"
                },

           }

我知道上面的代码是错误的,但这只是我要实现的目标的概述,我不希望也无法对其进行硬编码,我希望它是动态的,而且我也考虑在函数中使用计数器,但它不会因为ID不是连续的,所以不能工作。.任何帮助使该工作甚至更好的主意的工作,在此先感谢。

编辑: 在此处输入图片说明

我更新了添加为img的问题,在下面的img中,我们可以看到我现在有4张图像,我删除了一张,并且它占据的空间是空的,我需要动态地更改右边2张图像的左侧属性删除的图像并将其减少110px,这将使它们填满删除的图像留下的空间,如果我使用float:left而不是绝对位置,CSS会为我完成此操作,但是我需要使用绝对位置来实现我的目标,任何帮助谢谢

盖茨比尔

我做了一个小jsfiddle,希望它就是您想要的:https://jsfiddle.net/j45x4qjx/

这是函数:

function deleteDiv(selector) {

  var mycrousel = $('.mycrousel');
  var div = $(selector);
  var divIndex = mycrousel.index(div);
  var otherElem;

  if (divIndex === 0) {
    otherElem = $(mycrousel.get(divIndex + 1));
  } else {
    otherElem = $(mycrousel.get(divIndex - 1));
  }

  // get left value between two member
  var leftElem = parseInt(div.css('left'));
  var leftOtherElem = parseInt(otherElem.css('left'));
  var leftPx = Math.abs(leftElem - leftOtherElem);

  // remove div
  div.remove();

  $('.mycrousel').each( function( index, element ) {
    if (index > divIndex - 1) {
     var $element = $(this);
     var left = parseInt($element.css('left'));
     // get new value of left or 0 if negative value
     var newLeft = Math.max(0, left - leftPx); 

     $element.animate({
         left: newLeft + "px"
     });
    } 
  });

 }

您只需要传递要删除的div的选择器,然后计算该div与最接近的div之间有多少像素,然后将该数字删除到所有其他div。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章