Announcement

Collapse
No announcement yet.

Print: Display bei verschachtelten DIV's

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Print: Display bei verschachtelten DIV's

    Hallo ich habe ein kleines Problem.

    Und zwar habe ich mir eines CSS-Datei für das Ausdrucken von Seiten angelegt.

    Meine Seite hat einen groben aufbauen der so ausschaut:

    HTML Code:
    <html>
    <head>
    Hier die Einbindung der CSS-Datei mit Medium="print"
    </head>
    <body>
    <div id="foo">
    text1
       <div id="bar">
       text2
       </div>
    </div>
    </body>
    </html>
    Jetzt wollte ich mit Hilfe von display:none mein Div mit der ID "foo" unsichtbar machen und mit display:block mein Div mit der ID "bar" sichtbar lassen! Das Problem ist, dass er es dadurch, dass "foo" ausgeblendet ist nicht mehr anzeigt. Gibt es irgendwie eine Möglichkeit das ich mein verschachteltes Div trotzdem anzeigen lassen kann und das andere ausblenden kann?

  • #2
    Originally posted by Hahne View Post
    ...Gibt es irgendwie eine Möglichkeit das ich mein verschachteltes Div trotzdem anzeigen lassen kann und das andere ausblenden kann?
    Div-Elemente dienen in erster Linie zur Logischen Strukturierung von Inhalten. Das was du machen möchtest entbehrt aber jeder Logik - zumindest erschließt sie sich mir nicht.
    Was willst du denn damit bezwecken?

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Originally posted by Hahne View Post
      ... Gibt es irgendwie eine Möglichkeit das ich mein verschachteltes Div trotzdem anzeigen lassen kann und das andere ausblenden kann?
      Mit ineinander verschachtelten Elementen wird das entsprechend der CSS2-Empfehlung vom W3C nicht möglich sein. Dort steht zwar, dass die display-Eigenschaft nicht vererbt wird, andererseits wird dort beim Eigenschaftswert "none" eine Ausnahme vorgehalten:
      Originally posted by CSS2, dt.Übersetzung, Abschn.9.2.5
      none
      Dieser Wert veranlasst ein Element, keine Boxen in der Formatierungsstruktur zu erzeugen (das heißt, das Element hat keinen Einfluss auf das Layout). Abgeleitete Elemente erzeugen ebenfalls keine Boxen; dieses Verhalten kann nicht überschrieben werden, indem die 'display'-Eigenschaft der abgeleiteten Elemente auf einen anderen Wert gesetzt wird.
      ...
      Du müsstest m.E. auf die Verschachtelung verzichten.
      Zuletzt editiert von hela; 13.11.2008, 23:48.

      Comment


      • #4
        Originally posted by Falk Prüfer View Post
        Div-Elemente dienen in erster Linie zur Logischen Strukturierung von Inhalten. Das was du machen möchtest entbehrt aber jeder Logik - zumindest erschließt sie sich mir nicht.
        Was willst du denn damit bezwecken?

        Gruß Falk
        Ich möchte, dass man unnötige dinge wie zb das menü nicht beim ausdrucken der seite sieht sondern lediglich den hauptteil...

        Comment


        • #5
          Dann gib doch den Elementen, die Du nicht haben willst, einfach im print-Stylesheet "display:none;" mit. Wozu die Verschachtelung?

          Comment


          • #6
            Originally posted by Efchen View Post
            ... Wozu die Verschachtelung?
            Die Verschachtelung ist beispielsweise sinnvoll, wenn ein größeres Element ausschnittsweise in einem kleineren scrollbaren DIV-Element gezeigt werden soll. Ein typisches Beispiel sind "Vertical scrolling tables", die im Printlayout natürlich komplett gezeigt werden sollen.

            Comment


            • #7
              Scrollbare Elemente auf dem Papier???
              Komische Erklärung :-)

              Diese vertical scrolling tables hab ich mir nicht genau angesehen, aber ich wüsste nicht, wozu man da überhaupt ein einziges div braucht, geschweige denn verschachtelte. Das ist doch einfach ein tbody { overflow:auto; } bei fester Höhe, hab ich doch schon vor Jahren gemacht. Aber egal, darum gehts ja hier sicher nicht, denn auf dem Papier kann nicht gescrollt werden.

              Comment


              • #8
                Originally posted by Efchen View Post
                ..., denn auf dem Papier kann nicht gescrollt werden.
                Genau, deshalb habe ich oben auch geschrieben, dass diese Tabellen "im Printlayout natürlich komplett gezeigt werden sollen".

                Man kann eine Tabelle im Firefox auch scrollbar machen, indem man dem TBODY-Element eine diskrete Höhe und die OVERFLOW-Eigenschaft verpasst. Leider funktioniert das nicht in den anderen Browsern (IE, Opera usw.). Eine echte Cross-Browser-Lösung erhält man derzeit m.E. nur durch die Einbettung der großen Tabelle in einem kleineren scrollfähigen Element.

                Ich würde mich mächtig freuen, wenn jemand eine bessere Lösung hat.

                Comment


                • #9
                  Originally posted by hela View Post
                  Genau, deshalb habe ich oben auch geschrieben, dass diese Tabellen "im Printlayout natürlich komplett gezeigt werden sollen".
                  ...
                  Ich würde mich mächtig freuen, wenn jemand eine bessere Lösung hat.
                  Hallo,

                  warum willst du den "scrollbaren Container" verbergen, wenn er sogar komplett angezeigt werden soll? Ist es nicht besser die entsprechenden Eigenschaften so anzupassen das eben einfach nicht mehr gescrollt wird?
                  HTML Code:
                  ...
                    <style type="text/css" media="print">
                      #foo{
                        height: auto;
                        overflow: auto;
                      }
                    </style>
                  ...
                  Gruß Falk
                  Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                  Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                  Comment


                  • #10
                    Hallo Falk,

                    klar: Man kann die Höhenbegrenzung im DIV-Block für das Drucklayout freigeben, allerdings hilft das nicht wirklich weiter. Da dieser DIV-Block im o.g. Beispiel (Method #2) in einer Tabellenzelle der Rahmentabelle sitzt, wird im Drucklayout auch nur die äußere Tabelle (bis zum Seitenende) und nicht die lange innere Tabelle angezeigt.

                    Aber ich möchte diesen Thread mit dem Tabellenbeispiel nicht unnötig aufweiten. Die verschachtelten Tabellen sollten wirklich nur ein Beispiel sein, dass es ohne JavaScript-Einsatz hier problematische Fälle gibt, die man besser mit einem anderen Konzept umgeht.
                    Da sich Hahne nicht mehr meldet, hat er vermutlich einen Weg gefunden ...

                    Comment

                    Working...
                    X