jQuery:基于容器中元素的数量的CSS边距?

我正在尝试使用jquery创建一个简单的拼贴创作者。

我需要做的是每个元素(拼贴)之间的边距为1%。

但与此同时,我需要拼贴画从他们的容器中获得零余量。

我希望这是有道理的。

我已经创建了这个FIDDLE,所以你知道我的意思。

当你运行代码时,只需点击4次按钮,你就会看到在容器内部创建的拼贴画完美无缺,但是它们的容器和子元素之间有一个不需要的边界。

有什么办法可以解决这个问题吗?

这是我的代码:

$('#colBtn').live('click', function(){

    $('.lable').show();
    $('#reset').show();
    $('#fileField').show();
    $('#sbs').show();
    var width = $('#width').val();
    var height = $('#height').val();

    $('#main').append('<div class="droppable" style="width:'+width+';height:'+height+';overflow: hidden;  position:relative;float:left; margin:1%;"></div>');


    $('#layout').text($('#main').html());
    return false;
});

在这里输入图像描述


你要找的是一个负边界。

把另一个div放在你的#main div中并给它一个负值。

margin: 0 -1%

这将使它好像没有余量,因为你有

overflow: hidden

设置为您的主容器。

像这样的东西:小提琴

希望这能让你更接近你的目标;)


由以上给出的数字。 主要问题似乎是搞清楚哪一个是第一个项目,哪个是最后一个项目。 在一行中具有动态数量的项目。

我只是想出第一个项目和最后一个项目,你可以用它来调整保证金。

function fix(){
var $item = $('.droppable');
var parentWidth = $item.parent().width();
var itemWidth = $item.outerWidth(true);
var itemInLine = Math.floor(parentWidth/itemWidth);
var totalItems = $item.length;
var rows = totalItems / itemInLine;

var lastItem = 0;
var firstItem = 1;
    for(var i = 1; i< rows + 1; i++){
    lastItem = i * itemInLine;
    $('.droppable:nth-child('+ lastItem +')').css({'margin-top':'0px','margin-right':'0px'});
    firstItem = (i * itemInLine) - itemInLine + 1;
    $('.droppable:nth-child('+ firstItem +')').css({'margin-top':'0px'});
    }
}
链接地址: http://www.djcxy.com/p/34253.html

上一篇: jQuery: css margin based on the amount of elements in container?

下一篇: Print Preview issues after running large amount of VBA