Как заявляет cliffordlife,
.dontsplit { border: 2px solid black; page-break-inside: avoid; }
будет работать.Но не для Firefox.В Firefox вам нужно будет проверить высоту, а затем добавить page-break-after: always;
, когда это уместно.
В среднем, поле будет 1 дюйм сверху и снизу.Итак, чтобы измерить, сколько пикселей потребляет 10-дюймовая страница, я использовал это:
var pageOfPixels;
(function(){
var d = document.createElement("div");
d.setAttribute("style", "height:9in;position:absolute;left:0px;top:0px;z-index:-5;");
document.body.appendChild(d);
pageOfPixels = $(d).height();
d.parentNode.removeChild(d);
})();
У меня было много элементов div, в каждом из которых было много абзацев.Поэтому я перебрал их, а затем сравнил их текущую высоту на текущей странице со значением pageOfPixels.
var currentPosition = 0;
$('.printDiv').each(function (index, element) {
var h = $(this).height();
if (currentPosition + h > pageOfPixels) {
//add page break
$('.printDiv').eq(index - 1).css("page-break-after", "always");
currentPosition = h;
} else {
currentPosition += h;
}
});
Это помогло мне в Firefox.