jquery - 将文本限制为 div 的问题

标签 jquery html css cross-browser compatibility

早些时候,我在这里得到了很好的帮助,解决了一些关于溢出文本的问题,以及如何将其放入新的 div 中。引用:Issues with text formatting after jQuery

现在我看到文本在不同浏览器(即 IE11 和 Chrome)中的显示方式有所不同。我知道这是正常的,但我想知道我可以在我的代码中更改什么以使它们显示相似。 您可以在 IE11 中查看 fiddle 的外观:http://jsfiddle.net/hm2yfw61/9/ 此处文本在我希望显示文本的区域上方流动 3-4 行。

对于实时测试,您可以在此处查看我的测试页面:http://tangeland.net/brev/test.php - 在 IE11 中显示异常。在 Chrome 中它看起来更好,但我会说它可能会在以新的 div 开始之前削减大部分文本。

这是我用过的jquery:

var currentCol = $('.box:first');
var text = currentCol.html();
currentCol.html('');
text = text.replace(/ (?![^<>]*>)/gi, '%^%');
var wordArray = text.split('%^%');



$.fn.hasOverflow = function() {
   var div = this[0]; 
   return div.scrollHeight>div.clientHeight;
};


for(var x=0; x<wordArray.length; x++){
    var word= wordArray[x];
    currentCol.append(word+' ');
    if (currentCol.hasOverflow()){
        currentCol = currentCol.next('.box');
    }
}

谢谢!

最佳答案

我发现了你的问题。问题是您在附加单词后计算高度,因此您的 UI 已经被破坏并且文本在 DIV 之外。您需要做的是删除最后插入的单词,然后将其附加到下一个适当的 DIV 中。这是您需要在 if 中包含的代码:

    var currHtml = currentCol.html();
    currentCol.html(currHtml.substring(0, currHtml.length - (word.length + 1)));
    currentCol = currentCol.next('.box');
    currentCol.append(word+' ');

我还更新了你的 fiddle :http://jsfiddle.net/hm2yfw61/23/

如果您对任何部分不清楚,请告诉我,我会尝试更详细地解释。

关于jquery - 将文本限制为 div 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26462580/

相关文章:

javascript - 如何根据输入 id 创建名称为对象的属性?

java - HTML 的 CDATA 替代品

html - href 之后的 '?' 是做什么用的?

html - 未应用下拉文本颜色的悬停

css - 将按钮和链接放在 particles.js 脚本(Z-index)上

javascript - 来自ajax的 Controller 中的空参数

javascript - 自动删除图像并重新排列 ID 号

jquery - 在 pjax 容器加载上保留脚本

html - 使用 vw 和过渡值设置的 Div 无法平滑缩放。任何修复?

javascript - jquery 自动完成不会触发