Ho una tabella dinamica nella mia pagina web che a volte contiene un sacco di righe. So che ci sono page-break-before
e page-break-after
proprietà CSS. Dove li inserisco nel mio codice per forzare l'interruzione di pagina, se necessario?Come applicare l'interruzione di pagina CSS per stampare una tabella con molte righe?
risposta
È possibile utilizzare il seguente:
<style type="text/css">
table { page-break-inside:auto }
tr { page-break-inside:avoid; page-break-after:auto }
</style>
, consultare le specifiche del W3C CSS Print Profile per i dettagli.
E fare anche riferimento allo Salesforce developer forums.
Ecco un esempio:
tramite CSS:
<style>
.my-table {
page-break-before: always;
page-break-after: always;
}
.my-table tr {
page-break-inside: avoid;
}
</style>
o direttamente sull'elemento:
<table style="page-break-before: always; page-break-after: always;">
<tr style="page-break-inside: avoid;">
..
</tr>
</table>
Questo utilizza correttamente 4 pagine per quella che è effettivamente una tabella di 2 pagine e sembra avere lo stesso effetto di nessun css in Safari (6) e Chrome (24). – David
Ovunque si desidera applicare una pausa, o un table
o tr
, devi dare una lezione per l'ex. page-break
con i CSS come di seguito indicate:
/* 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">
e funzionerà come richiesto
In alternativa, si può anche avere div
struttura per la stessa:
CSS:
@media all {
.page-break { display: none; }
}
@media print {
.page-break { display: block; page-break-before: always; }
}
Div :
<div class="page-break"></div>
Funziona solo se sai in anticipo esattamente quante righe si adatteranno a una pagina (dato che devi dichiarare le interruzioni di pagina direttamente nel tuo markup). Ciò potrebbe essere difficile (o impossibile) se esiste la possibilità che i dati in una riga della tabella possano essere inseriti in una seconda riga. E che dire di più formati di pagina (A4 vs US Letter vs US Legal)? – aapierce
Questa soluzione non ha funzionato con me quando si utilizzano celle multilinea e più colonne. Ho trovato una soluzione a questo, però: https://stackoverflow.com/a/47498775/43615 - Si occupa anche del problema di @aapierce. –
Impossibile ottenere l'interruzione 'tr' per funzionare in Chrome v64. –
Ho cercato una soluzione per questo. Ho un sito mobile jquery che ha una pagina di stampa finale e combina dozzine di pagine. Ho provato tutte le correzioni sopra, ma l'unica cosa che ho potuto ottenere al lavoro è questo:
<div style="clear:both!important;"/></div>
<div style="page-break-after:always"></div>
<div style="clear:both!important;"/> </div>
Purtroppo gli esempi di cui sopra non ha funzionato per me in Chrome.
Mi è venuta in mente la soluzione di seguito in cui è possibile specificare l'altezza massima in PX di ciascuna pagina. In questo modo, la tabella verrà divisa in tabelle separate quando le righe saranno uguali a tale altezza.
$(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();
});
Sarà inoltre necessario il seguito nel foglio di stile
div.tablePage {
page-break-inside:avoid; page-break-after:always;
}
questo sta lavorando per me:
<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>
Da questa discussione: avoid page break inside row of table
- 1. Cancella molte righe da una tabella con id in MySQL
- 2. ASP.NET: Come applicare la classe CSS per una tabella generata in C# codebehind
- 3. Come progettare css per stampare un'etichetta
- 4. Applicare css per primo tavolo
- 5. Come stampare lo stesso carattere molte volte con Console.WriteLine()
- 6. Come stampare parte specifica di una pagina tramite window.print()
- 7. come visualizzare una tabella con zero righe in UITableView
- 8. Applicare border-radius Per barre di scorrimento con i CSS
- 9. CSS per una colonna, due righe con fratelli con FlexBox
- 10. Posso usare knitr per applicare gli stili CSS alle singole celle di una tabella?
- 11. Come posso inserire molte righe in una tabella MySQL e restituire i nuovi ID?
- 12. Mysql trigger loop per il risultato query con molte righe
- 13. Raggruppamento di righe di tabella e interruzioni di pagina
- 14. Righe di tabelle nidificate HTML CSS
- 15. Come aggiungere righe al centro di una tabella con jQuery?
- 16. Rails: come applicare il tag di invio con css personalizzato
- 17. Applicare CSS solo per Safari?
- 18. ASPxGridView righe per pagina
- 19. Come aggiornare n righe in una tabella?
- 20. Come stampare una pagina Web senza aprire una finestra popup?
- 21. concatenate molte righe in una singola stringa di testo con il raggruppamento
- 22. Croce applicare una funzione valutata tabella
- 23. Più di molte relazioni a una singola tabella
- 24. Applicare i CSS dinamicamente con JavaScript
- 25. Come posso stampare molte cifre significative in Python?
- 26. Supporto browser per numeri di pagina CSS
- 27. jQuery: seleziona le prime cinque righe di una tabella
- 28. chartjs: Come stampare grafico a più righe con intervalli irregolari
- 29. Applicare foglio di stile CSS diverso per parti diverse della stessa pagina Web
- 30. Applicare i CSS alla pagina dei contenuti in Asp.NET
Questo non funziona per Safari (6) o Chrome (24) :( – David
Sotto soluzione funziona per Safari o Chrome –
Lavoro s in Chrome v30 –