【问题标题】:jquery: calculate number of fitting divs and margin between them?jquery:计算拟合 div 的数量和它们之间的边距?
【发布时间】:2010-12-22 11:12:14
【问题描述】:

我的页脚中有一个名为#elementbar 的栏。 我希望这个元素栏有 30px 宽的彩色方块。这些正方形之间应该有大约 10 像素的边距。

我现在想做的是准确计算适合身体宽度的元素数量。我想计算它们之间的边距,以便元素从头到尾具有完全相同的边距。现在我刚刚在 css 中手动设置了边距,但在这种情况下,第一个元素到 browseredge 的距离与最后一个元素的距离略有不同。

是否有数学解决方案来计算拟合元素以及它们之间的适当边距(边距应始终在 5px 到 10px 左右)

#elementbar {
    overflow:hidden;
    height:15px;
    bottom:0px;
    position:fixed;
    text-align:center;
}

#elementbar .element {
    width: 30px;
    height: 15px;
    float:left;
    /*margin:0px 5px 0px 5px;*/
}

#elementbar .element {
    margin:0px;
}

jquery:

function elementbar() {
    var bw = Math.round($('body').width());
    var num = Math.round(bw / 30); //one element is 30px wide
    for (var i=0; i<num; i++) {
        $("#elementbar").append("<div class='element'></div>");
    }
}
elementbar();

稍后我还想在调整大小时调用该函数,以便每当您调整浏览器大小时,适当数量的元素都会附加到元素栏。

有什么想法吗?谢谢

【问题讨论】:

    标签: jquery css element


    【解决方案1】:
    <div class="bar"></div>
    <div class="debug"></div>
    
    var bw = $('.bar').width();
    var num = Math.floor(bw/40); // Assume 30px width + 10px margin
    var margin = Math.floor((bw - num*30)/(num-1));
    
    for (i=0; i<num; i++) {
      $(".bar").append("<span class='block'>&nbsp;</span>");
    }       
    $('.block').css({ marginRight: margin + 'px'});
    $('.block:last').css({ marginRight: '0px'});
    
    $(".debug")
        .append("Width: " + bw +
                ", marginRight: " + margin +
                ", number: " + num);
    

    查看实际操作:jsfiddle.net/s4MGT/

    【讨论】:

    • 谢谢,但在这种情况下,它并不完全有效:jsfiddle.net/s4MGT/1 我的条形是 100% 宽,我希望它们与主体宽度一样分布。现在最后一个元素跳到下一行。
    • 它确实有效,你犯了一个错误,并且取了 body 的 with 而不是包含 div.bar 的宽度 jsfiddle.net/s4MGT/3 但是,还有一个舍入问题,我们需要落地而不是圆形以避免溢出。
    • 哦,是的,对!完美的。非常感谢你。最后一个问题:知道如何在调整窗口大小时添加新对象。我总是希望拥有适量的对象,当我将窗口大小调整为更大或更小时也是如此。我可以保存当前的对象数量并在调整大小时检查是否适合或多或少并附加或删除这些对象?
    • 只需用这个函数创建一个函数并在 $(window).resize 中调用它(参见该函数的 jQuery API 文档)。不要忘记每次清除 div.bar 的内容。
    猜你喜欢
    • 1970-01-01
    • 2012-01-17
    • 2017-04-18
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 2017-11-24
    • 2023-03-25
    • 2020-03-13
    相关资源
    最近更新 更多