Tôi có một bảng động trong trang web của tôi mà đôi khi chứa nhiều hàng. Tôi biết có page-break-before
và page-break-after
thuộc tính CSS. Tôi đặt chúng vào mã của mình ở đâu để buộc trang bị vi phạm nếu cần?Làm cách nào để áp dụng ngắt trang CSS để in một bảng có nhiều hàng?
Trả lời
Bạn có thể sử dụng như sau:
<style type="text/css">
table { page-break-inside:auto }
tr { page-break-inside:avoid; page-break-after:auto }
</style>
Tham khảo đặc điểm kỹ thuật CSS Print Profile của W3C để biết chi tiết.
Và cũng tham khảo Salesforce developer forums.
Dưới đây là một ví dụ:
Via css:
<style>
.my-table {
page-break-before: always;
page-break-after: always;
}
.my-table tr {
page-break-inside: avoid;
}
</style>
hoặc trực tiếp trên các yếu tố:
<table style="page-break-before: always; page-break-after: always;">
<tr style="page-break-inside: avoid;">
..
</tr>
</table>
Điều này thành công sử dụng 4 trang cho những gì có hiệu quả một bảng 2 trang và dường như có tác dụng tương tự như không có css trong Safari (6) và Chrome (24). – David
Bất cứ nơi nào bạn muốn áp dụng nghỉ ngơi, hoặc là một table
hay tr
, bạn cần phải đưa ra một lớp cho ex. page-break
với CSS như đã đề cập dưới đây:
/* class works for table row */
table tr.page-break{
page-break-after:always
}
<tr class="page-break">
/* class works for table */
table.page-break{
page-break-after:always
}
<table class="page-break">
và nó sẽ làm việc như bạn cần
Ngoài ra, bạn cũng có thể có div
cấu trúc cho cùng:
CSS:
@media all {
.page-break { display: none; }
}
@media print {
.page-break { display: block; page-break-before: always; }
}
Div :
<div class="page-break"></div>
Điều này chỉ hoạt động nếu bạn biết trước thời gian chính xác số lượng hàng sẽ phù hợp trên một trang (vì bạn phải khai báo ngắt trang trực tiếp trong đánh dấu của bạn). Điều này có thể khó (hoặc không thể) nếu có khả năng dữ liệu trong một hàng của bảng có thể bao bọc thành dòng thứ hai. Và còn nhiều kích thước trang (A4 so với US Letter vs US Legal) thì sao? – aapierce
Giải pháp này không hoạt động đối với tôi khi sử dụng các ô nhiều dòng và nhiều cột. Tuy nhiên, tôi đã tìm thấy một giải pháp cho điều đó: https://stackoverflow.com/a/47498775/43615 - Nó cũng đề cập đến vấn đề @aapierce đề cập đến. –
Không thể ngắt được 'tr' để hoạt động trong Chrome v64. –
Tôi đã xem xét để khắc phục sự cố này. Tôi có một trang web di động jquery có trang in cuối cùng và nó kết hợp hàng chục trang. Tôi đã thử tất cả các bản sửa lỗi ở trên nhưng điều duy nhất tôi có thể làm việc là:
<div style="clear:both!important;"/></div>
<div style="page-break-after:always"></div>
<div style="clear:both!important;"/> </div>
Thật không may các ví dụ trên không có tác dụng với tôi trong Chrome.
Tôi đã đưa ra giải pháp dưới đây, nơi bạn có thể chỉ định chiều cao tối đa trong PX của mỗi trang. Điều này sau đó sẽ chia bảng thành các bảng riêng biệt khi các hàng bằng chiều cao đó.
$(document).ready(function(){
var MaxHeight = 200;
var RunningHeight = 0;
var PageNo = 1;
$('table.splitForPrint>tbody>tr').each(function() {
if (RunningHeight + $(this).height() > MaxHeight) {
RunningHeight = 0;
PageNo += 1;
}
RunningHeight += $(this).height();
$(this).attr("data-page-no", PageNo);
});
for(i = 1; i <= PageNo; i++){
$('table.splitForPrint').parent().append("<div class='tablePage'><hr /><table id='Table" + i + "'><tbody></tbody></table><hr /></div>");
var rows = $('table tr[data-page-no="' + i + '"]');
$('#Table' + i).find("tbody").append(rows);
}
$('table.splitForPrint').remove();
});
Bạn cũng sẽ cần dưới đây trong stylesheet của bạn
div.tablePage {
page-break-inside:avoid; page-break-after:always;
}
này đang làm việc cho tôi:
<td>
<div class="avoid">
Cell content.
</div>
</td>
...
<style type="text/css">
.avoid {
page-break-inside: avoid !important;
margin: 4px 0 4px 0; /* to keep the page break from cutting too close to the text in the div */
}
</style>
Từ chủ đề này: avoid page break inside row of table
- 1. Kiểm soát ngắt trang CSS khi in trong Webkit
- 2. Làm cách nào để ngắt kế thừa CSS?
- 3. Làm thế nào để áp dụng ảo hóa hàng cho một bảng/danh sách trong HTML/CSS/JS?
- 4. Mã CSS để thực hiện ngắt trang để in các trang web là gì?
- 5. Có cách nào để áp dụng nhiều kiểu CSS trong một lô để tránh nhiều lần lặp lại không?
- 6. Làm cách nào để in nhiều trang trên trang A4 mà không có lề trang?
- 7. Làm cách nào để áp dụng lớp CSS cho HtmlTableCell?
- 8. Làm cách nào để áp dụng khoảng cách giữa các hàng trong bảng trong XSL-FO?
- 9. Tạo đầu trang và chân trang của trang bằng cách sử dụng CSS để in
- 10. Có cách nào để có danh sách tất cả CSS được áp dụng cho một đoạn hoặc trang HTML không?
- 11. Làm cách nào để áp dụng tính năng PostgreSQL UNLOGGED cho một bảng hiện có?
- 12. Các hàng trong bảng và các ngắt trang nhóm
- 13. Làm cách nào để thực thi ngắt trang SSRS với các bảng trống?
- 14. Làm cách nào để áp dụng kiểu cho nhiều lớp cùng một lúc?
- 15. Tôi làm cách nào để áp dụng CSS trên tất cả các nút có trong trang đó?
- 16. Áp dụng nhiều thuộc tính CSS trong một dòng
- 17. Bố cục in CSS - In trên một trang đơn
- 18. Sử dụng mySQL, làm cách nào để đặt hàng theo ngày trên nhiều bảng khác nhau?
- 19. Làm thế nào để đặt bảng ở giữa trang bằng cách sử dụng CSS?
- 20. Làm cách nào để áp dụng màu nền cho các hàng trong bảng excel bằng cách sử dụng Apache POI?
- 21. Tôi làm cách nào để in một trang web với tất cả kiểu css được gắn vào trang?
- 22. Làm cách nào để in đồ họa R thành nhiều trang PDF và nhiều tệp PDF?
- 23. Tôi làm cách nào để tìm cách sử dụng CSS cho một trang web hoàn chỉnh?
- 24. Trong PetaPoco, làm thế nào để trang trí một bảng có nhiều cột khóa chính
- 25. Làm cách nào để ngăn trang trống cuối cùng?
- 26. Trang cào màn hình sử dụng CSS để bố cục và định dạng ... làm cách nào để loại bỏ CSS áp dụng cho html?
- 27. Làm cách nào để áp dụng các kiểu CSS cho các đối tượng Raphael.js bằng jQuery?
- 28. Cách sử dụng áp dụng để tạo hàng khung dữ liệu theo hàng?
- 29. Ngay cả ngắt trang cho in hai mặt trong HTML & CSS
- 30. Làm cách nào để áp dụng nhiều kiểu XAML cho một phần tử?
này không làm việc cho Safari (6) hoặc Chrome (24) :( – David
Giải pháp dưới đây hoạt động cho Safari hoặc Chrome –
Công việc Trong Chrome v30 –