chris: Nur eine Tabelle drucken mit CSS

Hi, ich habe mich schon durchs Forum und so gelesen.
Ich probiere grad nur eine Tabelle von einer Website zu drucken.

Der Aufruf erfolgt durch
<input type=button value=" Drucken " onClick="javascript:window.print()">

Dann habe ich im Forum gelesen, dass es mit css gehen müsste. Nun gesagt, getan. Da ich ja alles auf der Seite ausblenden möchte, außer die besagte Tabelle (mit der id=printipp), habe ich folgenden Code in die css geschrieben:

@media print{
* {display:none;}
#printipp {display:block;}
}

Dann wird mir aber garnichts mehr angezeigt, also eine leere seite.

Was mache ich falsch?

Danke

  1. Hi,

    <input type=button value=" Drucken " onClick="javascript:window.print()">

    was bewirkt Deiner Meinung nach das "javascript:" in dem JavaScript-Code?

    @media print{
    * {display:none;}
    #printipp {display:block;}
    }

    Guter Ansatz, aber ein ganz klein bisschen zu einfach gedacht.

    Dann wird mir aber garnichts mehr angezeigt, also eine leere seite.

    Natürlich. Du blendest beispielsweise das <html>-Element aus, so dass bereits der darin befindliche <body> niemals dargestellt werden kann. Werde spezifischer.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Dann wird mir aber garnichts mehr angezeigt, also eine leere seite.

      Natürlich. Du blendest beispielsweise das <html>-Element aus, so dass bereits der darin befindliche <body> niemals dargestellt werden kann. Werde spezifischer.

      Cheatah

      Das heißt ich muss jedes einzelne Element usw. ausblenden mit display:none und dann nur bei der Tabelle nicht?

      Danke schonmal

      1. Servus,

        Das heißt ich muss jedes einzelne Element usw. ausblenden mit display:none und dann nur bei der Tabelle nicht?

        oder Du könntest das tun, was Cheatah Dir (wahrscheinlich) durch die
        Blume gesagt hat, und zuerst alles was innerhalb von body ausblenden
        lassen.

        Grüsse

        1. oder Du könntest das tun, was Cheatah Dir (wahrscheinlich) durch die
          Blume gesagt hat, und zuerst alles was innerhalb von body ausblenden
          lassen.

          Grüsse

          Hä wie jetzt?

          Wenn ich alles innerhalb des body ausblende, sehe ich doch auch nichts mehr? Die Tabelle steht doch nicht ausserhalb des body. Irgendwie reden wir aneinander vor oder ich bin zu doof es zu kapieren. :o)

          Ist sowieso noch etwas komplizierter, da es eine php-datei ist.

          1. Hi,

            Wenn ich alles innerhalb des body ausblende, sehe ich doch auch nichts mehr?

            bis auf das Element innerhalb des <body>, welches Du wieder einblendest.

            Die Tabelle steht doch nicht ausserhalb des body.

            Nein, aber bei Deiner bisherigen Variante sind die Tabelle _und_ der <body> innerhalb eines Elements, welches ausgeblendet ist; und damit kannst Du Dich auf den Kopf stellen und pfeifend im Kreis herumlaufen, das betreffende Element wird niemals sichtbar sein.

            Ist sowieso noch etwas komplizierter, da es eine php-datei ist.

            Nö, was hat das damit zu tun?

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
          2. Hello out there!

            Wenn ich alles innerhalb des body ausblende, sehe ich doch auch nichts mehr? Die Tabelle steht doch nicht ausserhalb des body.

            Na die blendest du ja auch wieder ein. Du musst dafür sorgen, dass deren Selektor nicht weniger spezifisch ist als der für alles, was in body steht, und bei gleiche Spezifität muss die Regel für die Tabelle hinter der anderen stehen.

            Ist sowieso noch etwas komplizierter, da es eine php-datei ist.

            PHP hat mit clientseitigen Problemen nichts zu tun.

            See ya up the road,
            Gunnar

            --
            “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
            1. Irgendwie komme ich noch nicht rein.
              Mal ein Beispiel (weil es auch so ist)

              Wie würde bspw. eine Datei aussehen wenn die Tabelle die gedruckt werden soll, in  einer anderen Tabelle verschachtelt ist?

              <html>
              <head>
                <style type="text/css">
              @media print{
              #noprint {display:none;}
              #printipp {display:block;}
              }
                </style>
              </head>
              <body>
              <table id="noprint">
              <tr><td>
              ...
              </td></tr>

              <tr><td>
              <table id="printipp"><tr><td>Tabelle die gedruckt werden soll</td></tr></table>
              </td></tr>
              </table>
              </body>
              </html>

              So? Oder ist das falsch?

              1. Hello out there!

                Wie würde bspw. eine Datei aussehen wenn die Tabelle die gedruckt werden soll, in  einer anderen Tabelle verschachtelt ist?

                Du kannst die 'display'-Eigenschaft auf sonstwas setzen; wenn die 'display'-Eigenschaft eines Vorfahrenelements den Wert 'none' hat, wird nichts dargestellt.

                Sorge also dafür, dass nicht übergeordnete Elemente 'display: none' erhalten, sondern Geschwister des Elements, das dargestellt werden soll.

                See ya up the road,
                Gunnar

                --
                “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
                1. Hello out there!

                  Du kannst die 'display'-Eigenschaft auf sonstwas setzen; wenn die 'display'-Eigenschaft eines Vorfahrenelements den Wert 'none' hat, wird nichts dargestellt.

                  Ja aber ich will doch das die Tabelle außerhalb nicht angezeigt wird, sondern nur diese eine welche die in dieser Tabelle "sitzt"!

                  Sorge also dafür, dass nicht übergeordnete Elemente 'display: none' erhalten, sondern Geschwister des Elements, das dargestellt werden soll.

                  s.o. Ich muss doch aber auch das übergeordnete Element ausblenden wenn dieses nicht mitgedruckt werden soll. Irgendwie kapier ich das nicht.

                  Kannst du nicht mal ein kurzes beispiel geben was du meinst, vielleicht ist es dann verständlicher.

                  Danke

                  1. Hello out there!

                    Kannst du nicht mal ein kurzes beispiel geben was du meinst, vielleicht ist es dann verständlicher.

                    Du hast eine Schachtel mit einer roten, einer grünen und eine blauen Kugel drin. Du willst aber nur die rote Kugel haben.

                    Wenn du nun die ganze Schachtel wegwirfst, ist dein rote Kugel auch mit weg.

                    Du musst also die Schachtel aufheben und aus dieser nur die grüne und die blau Kugel wegwerfen.

                    „wegwerfen“ ≙ 'display: none'

                    See ya up the road,
                    Gunnar

                    --
                    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
                    1. Du hast eine Schachtel mit einer roten, einer grünen und eine blauen Kugel drin. Du willst aber nur die rote Kugel haben.

                      Wenn du nun die ganze Schachtel wegwirfst, ist dein rote Kugel auch mit weg.

                      Du musst also die Schachtel aufheben und aus dieser nur die grüne und die blau Kugel wegwerfen.

                      „wegwerfen“ ≙ 'display: none'

                      Ja ist ok. Schönes praktisches Beispiel. Ich lass es sein.
                      Das was du dort beschrieben hast, habe ich gemacht. Ich wollte nur Tabelle A, die In Tabelle B drinsitzt. Also habe ich Tabelle B auch "weggeworfen", wie du so schön sagst. Das ist jetzt aber auch wieder nicht richtig, da die ja da drin sitzt. Da hättest du Dir dein Beispiel auch sparen können.

                      Aber ist egal, dann muss ich mir was anderes einfallen lassen. Nichts für Ungut. Trotzdem Danke

                      Gruß

                      1. Hi chris,

                        nanana nur nicht so schnell aufgeben. Du hast eine Tabelle und darin noch eine Tabelle. Nun willst du, dass nur noch die innere Tabelle gedruckt wird. Dazu musst du alles, was außer deiner Tabelle noch in der übergeordneten Tabelle ist ausblenden.

                        .noprint { display:none; }

                        <table>
                          <tr>
                            <td>
                               <table>
                                   <!--Deine Tabelle, die gedruckt werden soll-->
                               </table>
                            </td>
                            *<td class="noprint">
                            *</td>
                          </tr>
                          *<tr class="noprint">
                            *<td>
                            *</td>
                            *<td>
                            *</td>
                          *</tr>
                        </table>

                        * = wird nicht gedruckt

                        Die äußere Tabelle wird zwar noch gedruckt, aber sie enthält jetzt nur noch deine innere Tabelle. Du musst nun vielleicht noch die Formatierung der äußeren Tabelle ändern, damit beim Drucken nicht auffällt, dass deine Tabelle noch in einer anderen steckt. Und schon wird (scheinbar) nur noch deine innere Tabelle gedruckt.

                        Gruß,
                        OhneNamen

                        1. Hallo

                          Du hast eine Tabelle und darin noch eine Tabelle. Nun willst du, dass nur noch die innere Tabelle gedruckt wird. Dazu musst du alles, was außer deiner Tabelle noch in der übergeordneten Tabelle ist ausblenden.

                          Frage: Warum steckt überhaupt eine Tabelle in einer anderen Tabelle? Das stinkt nach Verschachtelung wegen Layout.

                          @chris: Nimm die Tabelle aus der anderen heraus und probiere dann mit display:none; für die auszublendenen Geschwisterelemente der Tabelle herum.

                          Tschö, Auge

                          --
                          Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
                          (Victor Hugo)
                          Veranstaltungsdatenbank Vdb 0.1
              2. Hi,

                #printipp {display:block;}
                <table id="printipp"><tr><td>Tabelle die gedruckt werden soll</td></tr></table>

                block ist kein sinnvoller display-Wert für eine Tabelle, da sollte schon table gewählt werden (Daß der IE wiedermal zu blöd dafür ist, ist was anderes).

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Schreinerei Waechter
                O o ostern ...
                Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.