Drucken & lt; div id = "Druckbereich" & gt; & lt; / div & gt; nur?
Wie kann ich drucken Sie das angezeigte div (ohne manuell deaktivieren alle anderen Inhalte auf der Seite)?
Möchte ich vermeiden, ein neues Vorschau-dialog, so erstellen ein neues Fenster mit diesem Inhalt ist nicht sinnvoll.
Die Seite enthält ein paar Tabellen, eine davon enthält der div-ich will drucken - die Tabelle ist gestaltet mit visual styles für das web, das sollte nicht zeigen, im Druck.
InformationsquelleAutor der Frage noesgard | 2009-01-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Allgemeine Lösung, mit CSS nurdie ich überprüft, um zu arbeiten.
Alternative Ansätze sind nicht so gut. Mit
display
ist schwierig, weil, wenn jedes element hatdisplay:none
dann keiner seiner Nachkommen zeigt. Um es zu verwenden, müssen Sie ändern Sie die Struktur Ihrer Seite.Mit
visibility
funktioniert besser, da Sie können schalten Sie die Sichtbarkeit für die Nachkommen. Die unsichtbaren Elemente immer noch auf das layout, obwohl, so dass ichsection-to-print
nach oben Links, so dass es richtig druckt.InformationsquelleAutor der Antwort Bennett McElwee
Habe ich eine bessere Lösung mit minimalem code.
Platzieren Sie Ihre druckbare Teil in ein div mit einer id wie diese:
Dann fügen Sie ein Ereignis wie eine onclick (wie oben gezeigt), und übergeben Sie die id der div, wie ich oben.
Nun erstellen wir eine wirklich einfache javascript:
Bemerken, wie einfach das ist? Keine popups, keine neuen Fenster, keine verrückten styling, kein JS-Bibliotheken wie jquery. Das problem mit wirklich komplizierten Lösungen (die Antwort ist nicht kompliziert und nicht das, was ich mich beziehe), ist die Tatsache, dass es NIE übersetzen über alle Browser, immer! Wenn Sie wollen, um die Stile unterschiedlich ist, Sie, wie gezeigt, in der überprüft die Antwort, indem die media-Attribut, um ein stylesheet-link (media="print").
Kein Schnickschnack, leicht, es funktioniert einfach.
InformationsquelleAutor der Antwort Kevin Florida
Alle Antworten sind bisher ziemlich fehlerhaft - entweder Sie beinhalten das hinzufügen
class="noprint"
um alles oder Durcheinanderdisplay
innerhalb#printable
.Ich denke, die beste Lösung wäre ein wrapper um den nicht-druckbaren Sachen:
Natürlich ist dies nicht perfekt, da es sich um bewegliche Sachen herum in Ihr HTML ein bisschen...
InformationsquelleAutor der Antwort Greg
Mit jQuery es ist so einfach:
InformationsquelleAutor der Antwort romaninsh
Konnte verwenden Sie ein Druck-stylesheetund verwenden Sie CSS, um ordnen Sie die Inhalte, die Sie wollte gedruckt? Lesen Sie diesen Artikel weitere Hinweise.
InformationsquelleAutor der Antwort Paul Dixon
Dieser gut funktioniert:
Beachten Sie, dass dies funktioniert nur mit "Sichtbarkeit". "display" wird es nicht tun. Getestet, im FF3.
InformationsquelleAutor der Antwort Christian Maioli M.
Ich nicht wirklich wie irgendeine dieser Antworten als ganzes. Wenn Sie eine Klasse (sagen printableArea) und haben, das als unmittelbares Kind der Körper, dann Sie können tun, etwas ähnliches in Ihrem print-CSS:
Mit der Sichtbarkeit kann dazu führen, eine Menge von Abstand Probleme und leere Seiten. Dies ist, weil die Sichtbarkeit verwaltet die Elemente Raum, macht es nur versteckt, wo, wie display entfernt und können andere Elemente an Ihren Platz.
Der Grund, warum diese Lösung funktioniert, ist, dass Sie nicht greifen alle Elemente, nur die unmittelbar untergeordneten Elemente des Körpers und verbergen Sie. Die anderen Lösungen mit der css-Anzeige, verstecken alle Elemente, die Effekte alles in printableArea Inhalt.
Ich würde nicht vorschlagen, javascript als müssten Sie eine drucken-Schaltfläche, mit der der Benutzer und der standard-browser-drucken-buttons hätte nicht den gleichen Effekt. Wenn Sie wirklich brauchen, das zu tun, was ich tun würde, ist das speichern des html-von Körper, entfernen Sie alle unerwünschten Elemente, drucken, dann fügen Sie den html zurück. Wie bereits erwähnt, aber ich würde das vermeiden, wenn Sie können und verwenden eine CSS-option wie oben.
HINWEIS: Sie können hinzufügen, was CSS in der print-CSS-Verwendung von inline-styles:
Oder, wie ich Sie normalerweise verwenden, wird ein link-tag:
InformationsquelleAutor der Antwort fanfavorite
Geben, was auch immer element, das Sie drucken möchten, die id
printMe
.Gehören Sie dieses Skript in Ihrem Kopf-Tags:
Aufruf der Funktion
InformationsquelleAutor der Antwort
hm ... die Art der ein stylsheet für den Druck ... zB:
drucken.css:
InformationsquelleAutor der Antwort Andreas Niedermair
InformationsquelleAutor der Antwort Singh
Schritt 1: Schreiben Sie den folgenden javascript-Code innerhalb deines head-Tags
Schritt 2: Rufen Sie die PrintMe('DivID') - Funktion durch ein onclick-Ereignis.
InformationsquelleAutor der Antwort Hardik Thaker
Mit CSS 3 könnten Sie Folgendes verwenden:
InformationsquelleAutor der Antwort Gumbo
Nahm ich die Inhalte mit JavaScript und erstellt ein Fenster, das ich drucken konnte, statt...
InformationsquelleAutor der Antwort noesgard
Sandro ' s Methode funktioniert Super.
Ich optimiert, es zu ermöglichen, dass mehrere printMe links, besonders die zu verwendet werden in Registerkarten und expanding-text.
function processPrint(printMe){
<-- Aufruf für eine variable hiervar printReadyElem = document.getElementById(printMe);
<-- entfernt die Anführungszeichen um printMe zu Fragen, für eine variable<a href="javascript:void(processPrint('divID'));">Print</a>
<-- übergabe der div-ID bedruckt werden, um die Funktion zu aktivieren der printMe-Variablen in der div-ID. einfache Anführungszeichen sind erforderlich,InformationsquelleAutor der Antwort
printDiv ("divId"): Eine verallgemeinerte Lösung zum drucken, div auf jeder Seite.
Ich hatte ein ähnliches Problem, aber ich wollte (a) in der Lage sein, um die ganze Seite ausdrucken, oder (b) drucken einer von mehreren spezifischen Bereichen. Meine Lösung, Dank der viele der oben genannten, können Sie angeben, alle div-Objekt gedruckt werden.
Der Schlüssel für diese Lösung ist, fügen Sie eine entsprechende Regel, die der print-Medien-Stylesheet, so dass die angeforderte div (und deren Inhalt) werden gedruckt.
Erstellen Sie zunächst die erforderlichen print-css zu unterdrücken, alles (aber ohne bestimmte Regel zu ermöglichen, das element, das Sie drucken möchten).
Beachten Sie, dass ich habe Hinzugefügt neue Klasse Regeln:
nicht auf dem Bildschirm zu Seite. Diese verfügen in der Regel über "display:none" für den Bildschirm Stil.
Dann legen Sie drei JavaScript-Funktionen. Der erste schaltet lediglich die print media style-sheet-und ausschalten.
Die zweite macht die eigentliche Arbeit und der Dritte putzt danach. Die zweite (printDiv) aktiviert die print media style-sheet ist, dann hängt eine neue Regel zu ermöglichen, den gewünschten div-print, Probleme der print -, und fügt dann eine Verzögerung, bevor die endgültige Zimmerreinigung (sonst werden die styles können zurückgesetzt werden, bevor der Druck ist tatsächlich zu tun.)
Den letzten Funktionen wird der hinzugefügte Regel und legt die print-style wieder deaktiviert, sodass die ganze Seite gedruckt werden kann.
Die einzige andere Sache zu tun ist, fügen Sie eine Zeile zu Ihrem onload-Verarbeitung, so dass Sie das Druckformat ist zunächst deaktiviert, damit die ganze Seite drucken.
Dann, von überall in Ihrem Dokument, können Sie drucken ein div. Nur Frage printDiv("thedivid") mit einer Taste oder was auch immer.
Ein großes plus für diesen Ansatz bietet es eine Allgemeine Lösung für das drucken ausgewählten Inhalt innerhalb einer Seite. Es ermöglicht auch die Nutzung der vorhandenen Stile für Elemente, die gedruckt werden - einschließlich der mit div.
HINWEIS: In meiner Umsetzung, das muss man den ersten style-sheet. Ändern Sie die Blatt-Verweise (0) zu den entsprechenden Blatt-Nummer, wenn Sie brauchen, um es später in der blattreihenfolge.
InformationsquelleAutor der Antwort DrDave
@Kevin Florida
Wenn Sie mehrere divs mit der gleichen Klasse, können Sie es verwenden, wie diese:
war ich mit Colorbox inneren Gehalt geben
InformationsquelleAutor der Antwort Stefan
In meinem Fall hatte ich zum drucken eines Bildes in eine Seite. Wenn ich die Lösung gestimmt, ich musste 1 leere Seite und die andere zeigt das Bild. Hoffe, es wird jemand helfen.
Hier ist die css, die ich verwendet habe:
Mein html ist:
InformationsquelleAutor der Antwort Raphael Monteiro
Verwenden Sie ein spezielles Stylesheet für den Druck
und fügen Sie dann eine Klasse, d.h. "noprint" für jeden tag, das die Inhalte, die Sie nicht drucken möchten.
In der CSS verwenden
InformationsquelleAutor der Antwort Xn0vv3r
Wenn Sie nur drucken wollen, dieses div-Element verwenden, müssen Sie die Anweisung:
InformationsquelleAutor der Antwort
Den printDiv () - Funktion kam ein paar mal, aber in diesem Fall, verlieren Sie alle Ihre binding-Elemente und Eingabewerte. Also, meine Lösung ist, erstellen Sie ein div für alles, was als "body_allin" und einer außerhalb der ersten sogenannten "body_print".
Dann rufen Sie diese Funktion:
InformationsquelleAutor der Antwort pmrotule
Könnten Sie ein separates CSS-Format deaktiviert, alle anderen Inhalte außer die mit der id "printarea".
Sehen CSS-Design: Print für weitere Erläuterungen und Beispiele.
InformationsquelleAutor der Antwort Kosi2801
Ich hatte mehrere Bilder mit jeweils einem Knopf und notwendig, um klicken Sie auf eine Taste drucken Sie jedes div mit einem Bild. Diese Lösung funktioniert, wenn ich die cache deaktiviert in meinem browser und die image-Größe nicht ändern in Chrome:
InformationsquelleAutor der Antwort 40-Love
One mehr Ansatz weiter, ohne die aktuelle Seite und es bleiben auch die css beim drucken. Hier selector muss bestimmten div-Selektor, welche Inhalte wir brauchen, um zu drucken.
Hier einige time-out zeigen, dass externe css angewendet werden.
InformationsquelleAutor der Antwort M K Suman
Diese können Sie verwenden:
http://vikku.info/codesnippets/javascript/print-div-content-print-only-the-content-of-an-html-element-and-not-the-whole-document/
Oder verwenden Sie
visibility:visible
undvisibility:hidden
css-Eigenschaft zusammen mit@media print{}
'display:none" zu verstecken alle verschachtelten 'display:block'. Das ist nicht die Lösung.
InformationsquelleAutor der Antwort 0xC0DEGURU
Ich habe versucht, viele der Lösungen zur Verfügung gestellt.Keiner von Ihnen arbeitete perfekt. Sie entweder verlieren, CSS-oder JavaScript-bindings. Ich fand eine perfekte und einfache Lösung, die weder Verluste CSS noch JavaScript-bindings.
HTML:
CSS:
InformationsquelleAutor der Antwort BibanCS
Besten css zu passen, Raum, leer, Höhe:
InformationsquelleAutor der Antwort TRI ÂN