Masterix: scrollen von übergrossem layer vermeiden

Ich habe einen Layer, der aufgrund seiner dynamischen Größe normalerweise automatisch eine Scrollbar im Browser (nicht im Layer selbst) erzeugt. Dieser Layer soll zu Beginn unsichtbar sein und wird erst durch einen klick sichtbar. Wie kann ich also - bevor der Layer sichtbar ist - die scrollbar vermeiden? ich habe mich schon mit mit den CSS Eigenschaften visibility und display versucht, aber komme nicht ganz klar damit.
Wer kann mir helfen?
Vielen Dank.

  1. hi,

    Ich habe einen Layer, der aufgrund seiner dynamischen Größe normalerweise automatisch eine Scrollbar im Browser (nicht im Layer selbst) erzeugt.

    Was ist ein Layer? Wie sieht dieser Layer aus? Hat Javascript seine Finger im Spiel?

    Dieser Layer soll zu Beginn unsichtbar sein und wird erst durch einen klick sichtbar.

    Also doch Javascript?

    Wie kann ich also - bevor der Layer sichtbar ist - die scrollbar vermeiden?

    Ich rate mal ; du testest im IE? Der hat seine Schwierigkeiten mit den Scrollbars, entwickle deinen nerven zuliebe mit einem Browser[1].

    ich habe mich schon mit mit den CSS Eigenschaften visibility und display versucht, aber komme nicht ganz klar damit.

    Die Scrollbars werden mittels overflow gesteuert.

    Wer kann mir helfen?

    Mit einem Beispiel (relevanten Code), am besten schon Online und validiert, sicherlich viele.

    holla holla
    [1] Nur echt mit 2 F  :)

    1. Also doch Javascript?

      ja.

      Wie kann ich also - bevor der Layer sichtbar ist - die scrollbar vermeiden?

      Ich rate mal ; du testest im IE? Der hat seine Schwierigkeiten mit den Scrollbars, entwickle deinen nerven zuliebe mit einem Browser[1].

      nein mit FF

      ich habe mich schon mit mit den CSS Eigenschaften visibility und display versucht, aber komme nicht ganz klar damit.

      Die Scrollbars werden mittels overflow gesteuert.

      stimmt, overflow hab ich vergessen zu erwähnen.
      Hier der Code.

        
      <script language="javascript">  
      function SetOpacity(elem, opacityAsInt)  
      {  
       var opacityAsDecimal = opacityAsInt;  
        
       if (opacityAsInt > 100)  
        opacityAsInt = opacityAsDecimal = 100;  
       else if (opacityAsInt < 0)  
        opacityAsInt = opacityAsDecimal = 0;  
        
       opacityAsDecimal /= 100;  
       if (opacityAsInt < 1)  
        opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0  
        
       elem.style.opacity = opacityAsDecimal;  
       elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";  
      }  
        
      function FadeOpacity(elemId, fromOpacity, toOpacity, time, fps)  
      {  
        
       window.alert("overflow: " + document.getElementById(elemId).style.overflow);  
        
        
       var steps = Math.ceil(fps * (time / 1000));  
       var delta = (toOpacity - fromOpacity) / steps;  
        
       FadeOpacityStep(elemId, 0, steps, fromOpacity, delta, (time / steps));  
      }  
        
      function FadeOpacityStep(elemId, stepNum, steps, fromOpacity, delta, timePerStep)  
      {  
          SetOpacity(document.getElementById(elemId), Math.round(parseInt(fromOpacity) + (delta * stepNum)));  
        
          if (stepNum < steps) {  
              setTimeout("FadeOpacityStep('" + elemId + "', " + (stepNum+1) + ", " + steps + ", " + fromOpacity + ", " + delta + ", " + timePerStep + ");", timePerStep);  
          }  
          else  
          {  
           window.alert("nachher :" + document.getElementById(elemId).style.opacity);  
          }  
        
      }  
      </script>  
      
      
        
        
      <a href="javascript:FadeOpacity('globalcontainer', 0, 100, 10000, 2); ">KLICK</a>  
        
      <div id="globalcontainer">das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER<br>das ist mein LAYER</div>  
        
        
        
      <script language="javascript">  
        
      document.getElementById("globalcontainer").style.opacity = "0";  
      // document.getElementById("globalcontainer").style.display = "none";  
        
        
        
        document.getElementById(elemId).style.overflow = "hidden";  
        window.alert("nachher :" + document.getElementById(elemId).style.opacity);  
        
        
      </script>  
      
      

      Danke für Eure Hilfe

      1. Hi,

        ich habe mich schon mit mit den CSS Eigenschaften visibility und display versucht, aber komme nicht ganz klar damit.

        Den Unterschied zwischen beiden hast du dir aber anhand der Dokumentation in SELFHTML schon klar gemacht?

        Dann lies jetzt bitte noch (mal) die Tipps fuer Fragende - damit dir auch klar wird, warum wir hier mit "isch nix kommen klar" nichts anfangen koennen.

        document.getElementById("globalcontainer").style.opacity = "0";
        // document.getElementById("globalcontainer").style.display = "none";

        Von einer auskommentieren Zeile erwartest du hoffentlich nicht allzu viel Wirkung.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
      2. hi,

        Hier der Code.

        <script language="javascript">

        Language ist veraltet, nutze type, und je nach doctype eventuell noch in [/* <!\[CDATA\ */.

        <script language="javascript">  
          
         document.getElementById("globalcontainer").style.opacity = "0";  
        // document.getElementById("globalcontainer").style.display = "none";  
          
        document.getElementById(elemId).style.overflow = "hidden";  
        document.getElementById(elemId).style.opacity);  
          
         </script>
        

        wie Chris schon schrieb, du blendest den Container nicht aus, weil auskommentiert ; du machst den Inhalt des Containers lediglich „unsichtbar“.
        Für den Browser ist der Inhalt noch da, und da elemId undefiniert ist sind auch die Scrollbalken zu sehen, was ja auch richtig ist.

        holla holla

    2. [1] Nur echt mit 2 F  :)

      Du schreibst Opera mit 2 F ???

      1. hi,

        [1] Nur echt mit 2 F  :)
        Du schreibst Opera mit 2 F ???

        Ich sprach von einem Browser.

        holla holla