javascript - Jquery 添加尽可能多的跨度来填充一个 div

标签 javascript jquery html css

我有一个 HTML div `

<div class="words_padding">

</div>

那是 800px,我有这个 jquery 数组

var words=["thing","my","low","life","that","repeat","his","meaning","if","she","he","never","tell","part","tubes","how","should","come","off","on","it","about","me","and","do","same","put","country","math","like"];

我想在不超出边界的情况下用尽可能多的跨度填充该 div。
我已经尝试过这样做

    for (var i = 0; i <= 8; i++) {
        $('.words_padding').append("<span class=\"words_totp\">"+words[Math.floor((Math.random() * words.length))]+"</span>");
    }

但是有些单词比其他单词长,所以它超出了边界 Jsfiddle:https://jsfiddle.net/2yxvg5ye/2/

最佳答案

我觉得这很简单.. JS如下:

var words=["thing","my","low","life","that","repeat","his","meaning","if","she","he","never","tell","part","tubes","how","should","come","off","on","it","about","me","and","do","same","put","country","math","like"];
$('body').on('click', '.Start_tp', function(event) {
    event.preventDefault();
    var $newWord, $wrapper = $('.words_padding'), canLoop = true, totalWidthsUsed = 0;
    while (canLoop) {
        $newWord = $("<span class=\"words_totp\">"+words[Math.floor((Math.random() * words.length))]+"</span>");
        $wrapper.append($newWord);
        $newWord = $wrapper.find('.words_totp').last();
        totalWidthsUsed += $newWord.outerWidth();
        if(totalWidthsUsed > 800) {
           $newWord.remove();
           canLoop = false;
        }
    }
});

更新的 JSFiddle:https://jsfiddle.net/2yxvg5ye/4/

关于javascript - Jquery 添加尽可能多的跨度来填充一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42443849/

相关文章:

javascript - 通过 .load 加载的 JavaScript 是否会在 "deleted"之后运行?

带有许多 html 页面的 javascript

javascript - Redux 操作未触发 reducer

javascript - 将变量传递给 resize() jquery

javascript - 如何在数组循环中访问原型(prototype)函数

javascript - Adobe Edge 问题 IE 动画未加载未定义的阶段错误

javascript - 如何使用 Javascript 将 HTML 属性添加到数组

css - overflow-x 滚动不工作 css

javascript - 计算表列中的总价格,可以手动插入

javascript - mediaelement 'playing' 事件跟踪