Split text into pages and present separately (HTML5)

前端 未结 6 1656
梦如初夏
梦如初夏 2020-12-03 03:27

Let\'s say we have a long text like Romeo & Juliet and we want to present this in a simple ereader (no animations, only pages and custom font-size). What approaches exis

6条回答
  •  囚心锁ツ
    2020-12-03 03:45

    See my answer to Wrap text every 2500 characters in a for pagination using PHP or javascript. I ended up with http://jsfiddle.net/Eric/WTPzn/show

    Quoting the original post:

    Just set your HTML to:

    ...

    Add some css for pages:

    #target {
        white-space: pre-wrap; /* respect line breaks */
    }
    .individualPage {
        border: 1px solid black;
        padding: 5px;    
    }
    

    And then use the following code:

    var contentBox = $('#target');
    //get the text as an array of word-like things
    var words = contentBox.text().split(' ');
    
    function paginate() {
        //create a div to build the pages in
        var newPage = $('
    '); contentBox.empty().append(newPage); //start off with no page text var pageText = null; for(var i = 0; i < words.length; i++) { //add the next word to the pageText var betterPageText = pageText ? pageText + ' ' + words[i] : words[i]; newPage.text(betterPageText); //Check if the page is too long if(newPage.height() > $(window).height()) { //revert the text newPage.text(pageText); //and insert a copy of the page at the start of the document newPage.clone().insertBefore(newPage); //start a new page pageText = null; } else { //this longer text still fits pageText = betterPageText; } } } $(window).resize(paginate).resize();

提交回复
热议问题