【问题标题】:How to paginate text in browser?如何在浏览器中对文本进行分页?
【发布时间】:2018-11-13 15:09:57
【问题描述】:

假设我在变量wandp 中有战争与和平的文本。

有没有什么方法可以编写一个函数,使page(n) 会返回正确数量的文本以填充当前浏览器窗口,其中n 是wandp 的字符索引。

我希望文本的数量正确,即没有明显的空格或滚动条。

我想我正在寻找针对浏览器的电子书算法的文本描述。

附:我敢肯定章节和其他布局功能存在一些问题,但他们可以等待。

【问题讨论】:

    标签: javascript html css browser scrollbar


    【解决方案1】:

    借用Work out how many characters can fit into DIV with JavaScript 的一个想法,我将创建一个隐藏的<div> 并将该元素的宽度设置为等于浏览器窗口的宽度。然后,我将创建一个从wandp 添加文本的函数,在添加时检查<div> 元素的高度,直到<div> 元素的高度等于浏览器窗口高度。

    它可能看起来像这样:

    HTML:

    ...
    <div id="normalDiv" style="width: 100%; overflow: hidden"></div>
    <div id="hiddenDiv" style="visibility: hidden; width: 100%;"></div>
    ...
    

    Javascript:

    ...
    var targetHeight = window.innerHeight - 40; //browser window height minus height of last line of text
    var wandp = 'The entire content of War and Peace...';
    var startChar = 0;
    var endChar = 0;
    for(var i=startChar; i < wandp.length; i++){
        endChar = i;
        document.getElementById('hiddenDiv').innerHTML += wandp.charAt(i);
        if (document.getElementById('hiddenDiv').clientHeight > targetHeight){
            endChar--;
            break;
        }
    }
    document.getElementById('normalDiv').innerHTML = wandp.substring(startChar, endChar);
    ...
    

    请记住,这将导致文本被截断,因为它将上升到符合约束条件的绝对最后一个字符。您需要发挥一些创意才能以合理的字符结束页面上的文本(遇到的最后一个句点,遇到最后一个空格之前,等等)。

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 2017-01-02
      • 2015-01-10
      • 1970-01-01
      相关资源
      最近更新 更多