Harald Legler: Probleme mit Scrollbar im NS

Hallo, ich mal wieder...

Ich habe verschiedene Layer/Ebenen mit <div ID="">...</div> definiert. Einer ist höher als der Bildschirm, deshalb verschiebe ich ihn nach oben(top:-800px), damit die Scrollbar verschwindet. Bei Aufruf verschiebe ich den Layer zur benötigten Position.

IE: Klappt hervorragend, die Scrollbar erscheint nur wenn der große Layer da ist. Beim Ausblenden (und wieder nach oben verschieben) verschwindet die Scrollbar.

NS: Scrollbar ist immer da (obwohl layer definitiv verschoben ist). Beim Ausblenden wird er wieder nach oben verschoben(wird über alert kontrolliert). Der neu einzublendende layer wird positioniert, die Scrollbar bleibt.

Ich habe nichts gegen die Scrollbar, aber der neue Layer wird mit top:0 eingeblendet und Scrollbar steht bei Aufruf unten, d.h. ich muß diese nach oben verschieben.

Weiß jemand Rat?

PS: Sonst ist alle o.k. Alle Layer werden erkannt!! Kein Fehler im Debugger, keine vergessenen Tags.

Gruß

Harald Legler

  1. Hallo, ich mal wieder...

    Ich habe verschiedene Layer/Ebenen mit <div ID="">...</div> definiert. Einer ist höher als der Bildschirm, deshalb verschiebe ich ihn nach oben(top:-800px), damit die Scrollbar verschwindet. Bei Aufruf verschiebe ich den Layer zur benötigten Position.

    IE: Klappt hervorragend, die Scrollbar erscheint nur wenn der große Layer da ist. Beim Ausblenden (und wieder nach oben verschieben) verschwindet die Scrollbar.

    NS: Scrollbar ist immer da (obwohl layer definitiv verschoben ist). Beim Ausblenden wird er wieder nach oben verschoben(wird über alert kontrolliert). Der neu einzublendende layer wird positioniert, die Scrollbar bleibt.

    Ich habe nichts gegen die Scrollbar, aber der neue Layer wird mit top:0 eingeblendet und Scrollbar steht bei Aufruf unten, d.h. ich muß diese nach oben verschieben.

    Weiß jemand Rat?

    PS: Sonst ist alle o.k. Alle Layer werden erkannt!! Kein Fehler im Debugger, keine vergessenen Tags.

    Gruß

    Harald Legler

    Gibst Du mal Deine URL bekannt?

    Danke.

    Jörg

    1. Gibst Du mal Deine URL bekannt?

      Danke.

      Jörg

      ..aber gerne doch. Bitte schaue es Dir aber mit IS und NS an!!

      http://www.doerrmann-bau.de/leistung_test2.htm

      Ist aber noch ein Dummy. Ärger macht:alles aus einer Hand.

      Gruß

      Harald

      1. Gibst Du mal Deine URL bekannt?

        Danke.

        Jörg

        ..aber gerne doch. Bitte schaue es Dir aber mit IS und NS an!!

        http://www.doerrmann-bau.de/leistung_test2.htm

        Ist aber noch ein Dummy. Ärger macht:alles aus einer Hand.

        Gruß

        Harald

        So, nun habe ich mir Deine Seiten mal angesehen.
        Ich habe auf der oben genannten Startseite den Button "Alles aus einer Hand angeklickt".

        Zum IE (Version 5.0): Ein Scrollbalken wurde lediglich angezeigt, wenn das Browserfenster stark verkleiner wurde. Im Vollbildmodus war kein Scrollbalken zu sehen, im Gegensatz zum NC.

        Zum NC (Version 4.6): Der Layer wurde korrekt angezeigt, d.h. ich mußte nicht nach oben scrollen, gleichwohl wurde der Scrollbalken abgezeigt.

        Dafür ergab sich ein andere Effekt: wenn ich das Browserfenster vergrößert und anschließend verkleinert habe, wurden plötzlich die Buttons "Kommunales Bauen", "Industrie- und Gewerbebau","Wohnungsbau","Kommunale Bauten","Industire und Gewerbebau","Wohnungsbau","Alles aus einer Hand" untereinander angezeigt. Anklickbar war einer der Buttons. Sieht so aus, als ob mehrere Layer auf sichtbar geschaltet werden. Dieser Effekt tritt nicht beim IE auf!

        Gruß

        Jörg

        1. Zum NC (Version 4.6): Der Layer wurde korrekt angezeigt, d.h. ich mußte nicht nach oben scrollen, gleichwohl wurde der Scrollbalken abgezeigt.

          Genau das ist da Problem, wie bekomme ich den weg???

          Dafür ergab sich ein andere Effekt: wenn ich das ...

          Das kann am Dummy liegen, aber Danke!

          Gruß

          Harald

          1. Zum NC (Version 4.6): Der Layer wurde korrekt angezeigt, d.h. ich mußte nicht nach oben scrollen, gleichwohl wurde der Scrollbalken abgezeigt.

            Genau das ist da Problem, wie bekomme ich den weg???

            Also: wenn ich Dich richtig verstanden habe, positionierst Du die Layer zunächst auf der Position top: -800. (Laut Quelltext). Erst wenn der betreffende Layer benötigt wird, poitionierst Du ihn mit top:0. Richtig?
            Nun ist es so, daß, wenn ein Layer positioniert werden soll, in der <DIV> Definition stehen muß:
            STYLE="position:absolute; top:-800; left: 0; width: (hier steht die Breite des Layers); height: (hier steht die Höhe des Layers. Die angegeben Werte zu top, left können jederzeit überschrieben werden mit der Syntax:
            Layername.STYLE.Wert der verändert werden soll=Wert.
            Beispiel: Layername: Komune
            Komune.Style.top=0;
            ACHTUNG: Diese Sytax gilt NUR für den IE. Für den NC sieht sie anders aus.
            In diesem Zusammenhang empfehle ich die SELFHTML von Stefan Münz, dort steht sehr viel über Layer unter NC.

            Ich kann Dir nicht sagen, ob dann der Scrollbalken verschwunden ist. Tip: Wenn ansonsten alles richtig funktioniert, ignoriere den Balken einfach ...

            Gruß

            Jörg

            1. Also: wenn ich Dich richtig verstanden habe, positionierst Du die Layer zunächst auf der Position top: -800. (Laut Quelltext). Erst wenn der betreffende Layer benötigt wird, poitionierst Du ihn mit top:0. Richtig?

              Richtig

              Nun ist es so, daß, wenn ein Layer positioniert werden soll, in der <DIV> Definition stehen muß:
              STYLE="position:absolute; top:-800; left: 0; width:

              Das habe ich in der StyleCSS gemacht #eine {....}

              In diesem Zusammenhang empfehle ich die SELFHTML von Stefan Münz, dort steht sehr viel über Layer unter NC.

              Danke, das ist lieb von Dir, aber die kenn ich fast auswendig ;-).

              Ich kann Dir nicht sagen, ob dann der Scrollbalken verschwunden ist. Tip: Wenn ansonsten alles richtig funktioniert, ignoriere den Balken einfach ...

              Geht leider nicht, da wie vorher erläutert, die Positionierung des neuen Layers auf top:0 ist und damit nach oben gescrollt werden muß!!

              Gruß

              Harald

              1. Geht leider nicht, da wie vorher erläutert, die Positionierung des neuen Layers auf top:0 ist und damit nach oben gescrollt werden muß!!

                Gruß

                Harald

                Tja, nachdem ich jetzt zum wiederholten Male Deinen Quelltext angesehen habe, werde ich langsam gaga ...

                Mit der Methode, STYLE eines Layers im CSS zu definieren, bin ich nicht vertraut. Ich packe immer alle Angaben in den <Div> Teil oder schreibe die entsprechenden Werte per JavaScrip-Funktion direkt in den betreffenden Layer.

                <STYLE TYPE="text/css">
                <!--  #w {position:absolute; visibility:hidden; left:0px; top:0px;}
                #komune {position:absolute; visibility:hidden; left:0px; top:0px;}
                #industrie {position:absolute; visibility:hidden; left:0px; top:0px;}

                #basis {position:absolute; visibility:visible;  }
                #hand {position:absolute; visibility:hidden; top:-400px; }

                a:link {
                color: #0000A0;
                }
                a:visited {
                color: #0000A0;
                }
                -->
                </STYLE>

                In dieser Style-Definition ist mir aufgefallen, daß vor dem schließenden Style-Tag der Doppelslash vor --> fehlt. Richtig müßte es lauten: //-->. Inwiefern das einer Auswirkung auf Dein Problem hat, weiß ich nicht.

                Vorläufig verabschiede ich mich mal. Sollte mich jäh der Geist der Erleuchtung treffen, werde ich Dich umgehend davon in Kenntnis setzen.

                Gruß

                Jörg

                1. Hallo Jörg!

                  In dieser Style-Definition ist mir aufgefallen, daß vor dem schließenden Style-Tag der Doppelslash vor --> fehlt. Richtig müßte es lauten: //-->. Inwiefern das einer Auswirkung auf Dein Problem hat, weiß ich nicht.

                  Das ist schon richtig mit <!-- --> , das ist die richtige Art Kommentare zu setzten.
                  Das //--> kommt davon, daß im Javascript  Kommentare in einer Zeile mit // gesetzt werden also Z.B.
                  <!-- verstecke Kontext von alten Browser
                  // Ende versteckten Kontext --> man hat nur den Text rausgenommen gebleiben ist aber das //  .

                  Grüße
                  Thomas

          2. hallo Harald,

            Genau das ist da Problem, wie bekomme ich den weg???

            indem Du eine resize-Funktion einbaust, die das Ganze neu laed, wenn die Fenstergroesse veraendert wird. So etwa koennte das aussehen (frei nach Christine Kuehnel ;-)):

            function neu()
            {
            if (document.layers)
            {
            if ((Breite_vor_resize != self.innerWidth) (Hoehe_vor_resize != self.innerHeight))
            history.go(0);
            }
            else
            history.go(0);
            }

            window.onresize = neu;

            Dabei wird die vorherige mit der aktuellen Fenstergroesse verglichen. Wenn ein Unterschied besteht, wird neu geladen.

            Viel Erfolg  Joachim

            1. Hallo  Joachim,

              das wäre eine Möglichkeit. Vielen Dank. Ich werde es ausprobieren.

              Schade, daß der NS soviel Zuwendung braucht ;-)

              Gruß

              Harald

            2. hallo Harald,

              Genau das ist da Problem, wie bekomme ich den weg???

              indem Du eine resize-Funktion einbaust, die das Ganze neu laed, wenn die Fenstergroesse veraendert wird. So etwa koennte das aussehen (frei nach Christine Kuehnel ;-)):

              function neu()
              {
              if (document.layers)
              {
              if ((Breite_vor_resize != self.innerWidth) (Hoehe_vor_resize != self.innerHeight))

              »»  history.go(0);

              }
              else
              history.go(0);
              }

              window.onresize = neu;

              Dabei wird die vorherige mit der aktuellen Fenstergroesse verglichen. Wenn ein Unterschied besteht, wird neu geladen.

              Viel Erfolg  Joachim

              Hallo Joachim,

              habe es versucht, da aber beim ersten Layer in NS schon die Scrollbar eingeblendet ist, bringt das rezize natürlich nichts.

              Bleibt also die Frage: Warum zeigt NS die Scrollbar an, obwohl gar kein Layer dieses Formates (so lang) im Bildbereich ist, und der IE nicht.

              Habe überigends lokal alle Layer mit Height bezeichnet, bringt aber auch nichts..

              :-((

              Harald

              1. hi Harald,

                das Script hilft auch nur gegen den Zusammenbruch des Layoutes bei resizen.

                Wegs des Scrollbalken habe ich mal gehoert, das es durchaus eine Rolle spielt, in_welche_Richtung Du ihn versteckst.
                Hast Du ihn vor dem Aufdecken statt oben auch mal nach links verschoben?

                Sonst faellt mir leider auch nix dazu ein. Viel Erfolg und Gruss

                Joachim

  2. NS: Scrollbar ist immer da (obwohl layer definitiv verschoben ist). Beim Ausblenden wird er wieder nach oben verschoben(wird über alert kontrolliert). Der neu einzublendende layer wird positioniert, die Scrollbar bleibt.

    Ganz spontan und ohne es anzuschauen, wuerde ich erstmal sagen, dass Du in deinen DIVs keine Attribute fuer width bzw height angegeben hast. Ein Versuch ist es Wert :-)

    Viele Gruesse, Thomas Hieck

  3. Tja.. ich kenn das Problem umgekehrt.. man blendet
    ein Layer ein.. aber keine Scrolbar obwohl eine nötig
    wäre..
    tja.. da hilt nur Höhe der Seite berechnen und via
    document.height =  XXX
    die Höhe dem Herrn Netscape mitzuteilen.. :)

    gruss
    Jens

  4. Ich habe verschiedene Layer/Ebenen mit <div ID="">...</div> definiert. Einer ist höher als der Bildschirm, deshalb verschiebe ich ihn nach oben(top:-800px), damit die Scrollbar verschwindet. Bei Aufruf verschiebe ich den Layer zur benötigten Position.

    IE: Klappt hervorragend, die Scrollbar erscheint nur wenn der große Layer da ist. Beim Ausblenden (und wieder nach oben verschieben) verschwindet die Scrollbar.

    NS: Scrollbar ist immer da (obwohl layer definitiv verschoben ist). Beim Ausblenden wird er wieder nach oben verschoben(wird über alert kontrolliert). Der neu einzublendende layer wird positioniert, die Scrollbar

    etwas spaet, aber besser als nie !!!

    Ein kleiner Nachtrag !!!

    NETSCAPE definiert eine Fenstergroesse samt Scollbar beim einlesen der Datei, d.h. Wenn die Seite gelesen wird und sie nicht auf eine Anzeigeflaeche passt dann gibts ein scrollbar ob bei IE oder NN, wenn du erst dann deine Elemente verschiebst, beliebt der Scrollbar beim NN denn der hat Probleme bei dynisch-veraenderten Inhalt die Fenstergroesse anzupassen, das macht er naehmlich nicht !!!
    Loesung, Alle Elemente muessen so platziert sein, das sie in das Fenster passen und erst dann verschieben !!!

    Curt

    1. etwas spaet, aber besser als nie !!!

      Ein kleiner Nachtrag !!!

      Danke, ich habe schon sowas vermutet :-(.

      Loesung, Alle Elemente muessen so platziert sein, das sie in das Fenster passen und erst dann verschieben !!!

      Tja, das hieße den Inhalt des Layers verändern (jemand erschlägt mich) oder ganz normales HTML.

      Vielleicht experientiere ich mit CLIP??

      Danke allen für die Hilfe

      Gruß

      Harald