page-break-inside doesn't work in Chrome?

前端 未结 11 1386
夕颜
夕颜 2020-12-05 17:32

I have a bunch of paragraphs on a page:

...

...

...

The CSS rule for those p

相关标签:
11条回答
  • 2020-12-05 17:36

    Actually, it DOES work in Chrome, and the solution is really silly!!

    Both the parent and the element onto which you want to control page-breaking must be declared as:

    position: relative;
    

    Check out this fiddle (or in fullscreen)

    This is true for:

    page-break-before
    page-break-after
    page-break-inside
    

    However, controlling page-break-inside in Safari does not work (in 5.1.7, at least)

    I hope this helps!!!

    0 讨论(0)
  • 2020-12-05 17:40

    According to SitePoint, Chrome is not supported here, only Opera (and IE 8 buggy)...

    http://reference.sitepoint.com/css/page-break-inside

    Other references:

    http://www.webdevout.net

    http://www.reddit.com/r/css/comments/jdeim/pagebreakinside_avoid_doesnt_work/

    Stack Overflow threads:

    Cross-browser support of `page-break-inside: avoid;`

    "page-break-inside: avoid "- does not work

    Google Chrome Printing Page Breaks

    Which browsers support page break manipulation using CSS and the page-break-inside element?

    Google Chrome Forum:

    http://www.google.com/support/forum

    I will not post the W3Schools link (due to general unreliability) but they also state it's only supported in Opera, for whatever it's worth.

    0 讨论(0)
  • 2020-12-05 17:40

    What worked for me (in both FFox & Chrome, that is)

    .container {
      column-gap: .4em;
      columns: 3;
      padding: .4em;
    }
    
    .contained {
      page-break-before: avoid;
      page-break-inside: avoid;
      page-break-after: always;
    }
    

    And that's it ; I didn't need position.

    0 讨论(0)
  • 2020-12-05 17:45

    Here is how I solved this while writing a css for printing.

    For example, you put some pictures in an HTML file like this:

    <div class="bottom">
        <figure>
            <img src="img01.jpg" alt="Front View">
            <figcaption>Front View</figcaption>
            </figure>
        <figure>
            <img src="img02.jpg" alt="Rear View">
            <figcaption>Rear View</figcaption>
        </figure>
    </div>
    

    And write the css like this:

    .bottom figure{
      page-break-inside: avoid;
    }
    

    Sometimes it won’t work as you expect, because the default value of display for most elements is block or inline, which is not ‘page-break friendly’. I usually change it like this:

    .bottom{
        display: contents;
    }
    

    This aims to disappear the container, making the child elements children of the element the next level up in the DOM.

    As for your question, I suggest you to have a look at the display mode of the container of the paragraph to see whether it is set to block. If so, change it to contents and try again.

    I hope this help.

    0 讨论(0)
  • 2020-12-05 17:47

    I just tested this with a larger paragraph in IE9, Chrome 14 and Firefox 7, and it looks like only IE9 works as expected. You might have to resort to adding page breaks manually where you want them with

    page-break-after:always
    

    Of course that's only any good to you if you know the content length in advance.

    0 讨论(0)
  • 2020-12-05 17:50

    I've been fighting with this for a while and as well as follow the advice in the other answers I had to make sure that the element and all parent elements had the styling Display: block;.

    0 讨论(0)
提交回复
热议问题