Patrick Andrieu: [nicht nur] für Struppi!

Beitrag lesen

Hallo Detlef!

Du hattest das "fixed" auch bereits im else-Zweig, damit der IE position:absolute behält.

Kennst meinen Code besser als ich :) - hatte ich vergessen!

Warum sollten auch Scrollbalken erscheinen?
Fixierte Elemente werden am Viewport ausgerichtet, der lässt sich sowieso nicht scrollen (nur sein Inhalt). Scrollbalken, die erscheinen, obwohl der Inhalt auch mit ihrer Hilfe unerreichbar bleibt, würde ich eher als Fehler betrachten.

War mir auch schon mal klar, jedoch mache ich immer wieder diesen Denkfehler... vielleicht sollte ich so spät nicht mehr posten ;)

So, ich habe vorhin etwas gebastelt, hier die neue Dateien:

Eibox
eibox_3.js

Wenn der Eibox-Link zu weit oben im Browserfenster steht, erscheint diese oben abgeschnitten. Ich fände es besser, wenn die Titelleiste der Eibox beim Einblenden immer innerhalb des Fensters wäre.

Das ist jetzt geregelt:

  
  eiboxposy = (ypos - 300) < body.scrollTop ? body.scrollTop+"px" : ypos - 300+"px";  

und wurde mit IE, Mozilla, Firefox und meinen drei Operas (7.54, 8.54 und 9.01) erfolgreich getestet. Du hattest recht, ist viel besser so, da nicht gescrollt werden muss, um die Titelleiste "anfassen" zu können.

Nur das mit dem Fixieren bereitet mir noch Kopfzerbrechen. Fangen wir mit den "modernen" Browsern an... so sehen die else-Zweige der clip_eibox respektive restore_eibox aus:

  
  else {  
    obs.position = "fixed";  
    obs.top = self.innerHeight-29+"px";  
 alert(obs.top);  
  }  

  
    else {  
    obs.position = "absolute";  
      if (cth != 0) {  
        obs.top = dcde.scrollTop+self.innerHeight-cth-88+"px";  
      }  
      else {  
        obs.top = dcde.scrollTop+self.innerHeight-pic_h-88+"px";  
      }  
    }  

Geckos und Opera 9.01: null problemo.
Opera 7.54 und 8.54: die Eibox ist beim Clippen nicht mehr zu sehen. Ich lasse mir obs.top in einer Alertbox ausgeben, und m.E. müsste die Höhe korrekt sein, damit sie zu sehen ist. Warum die älteren Versionen da nicht mitmachen, kann ich mir im Moment nicht erklären.

Simuliertes Fixieren für den IE mittels "onscroll":
Im Moment bin ich nicht in der Lage, die einmal angesprochene Funktion nur für die jeweilige Box zu deaktivieren. Das sieht dann so aus:

Hat man zwei Boxen geclippt, bleiben beide beim Scrollen am unteren Rand des Viewports, soweit also gut, ruckelt tut es bei meinem Rechner ja relativ wenig. Sobald man aber eine der beiden Boxen wiederherstellt, scrollt wieder die übriggebliebene, noch geclippte Box mit. Hier meine bisherige Implementierung Deines Vorschlags, die für den IE relevanten if-Zweige beider Funktionen clip_eibox und restore_eibox:

  
  if (dc.all && !window.opera) {  
    obs.top=dcde.scrollTop+dcde.clientHeight-29+"px";  
    dcde.onscroll = function () {  
      obs.top=dcde.scrollTop+dcde.clientHeight-29+"px";  
    }  
  }  

  
    if (dc.all && !window.opera) {  
      if (cth != 0) {  
        dcde.onscroll = null;  
        obs.top = dcde.scrollTop+dcde.clientHeight-cth-30+"px";  
      }  
      else {  
        dcde.onscroll = null;  
        obs.top = dcde.scrollTop+dcde.clientHeight-pic_h-88+"px";  
      }  
    }  

Um die Anpassung der Schaltflächen kümmere ich mich ein anderes Mal, ebenso um Struppis Vorschlag mit onselectstart.

Viele Grüße aus Frankfurt/Main,
Patrick

--

_ - jenseits vom delirium - _
<hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
1 50

[nicht nur] für Struppi!

Patrick Andrieu
  • javascript
  1. 0
    Patrick Andrieu
    1. 0
      Struppi
      1. 0
        Patrick Andrieu
      2. 0
        Patrick Andrieu
        1. 0
          Struppi
          1. 0
            Patrick Andrieu
            1. 0
              Patrick Andrieu
              1. 0
                Mathias Brodala
                1. 0
                  Patrick Andrieu
                  1. 0
                    Mathias Brodala
                2. 0
                  Patrick Andrieu
  2. 0

    iBox^W Eibox

    Mathias Brodala
    1. 0
      Patrick Andrieu
      1. 0
        Mathias Brodala
        1. 0
          Patrick Andrieu
          1. 0
            Mathias Brodala
            1. 0
              Patrick Andrieu
        2. 0
          Detlef G.
  3. 0
    Detlef G.
    1. 0
      Patrick Andrieu
      1. 0
        Detlef G.
        1. 0
          Patrick Andrieu
          1. 0
            Patrick Andrieu
          2. 0
            Patrick Andrieu
          3. 0
            Detlef G.
            1. 0
              Patrick Andrieu
              1. 0
                Patrick Andrieu
                1. 0

                  Eibox, die 7.!

                  Patrick Andrieu
                  1. 0
                    Patrick Andrieu
                  2. 0
                    Patrick Andrieu
                    1. 0
                      Detlef G.
                    2. 0
                      Detlef G.
                      1. 0
                        Patrick Andrieu
                        1. 0
                          Detlef G.
                          1. 0
                            Patrick Andrieu
                            1. 0
                              Struppi
                              1. 0
                                Patrick Andrieu
                                1. 0
                                  Struppi
                            2. 0
                              Patrick Andrieu
                            3. 0
                              Detlef G.
                              1. 0
                                Patrick Andrieu
                                1. 0
                                  Detlef G.
                            4. 0
                              Patrick Andrieu
                              1. 0
                                Detlef G.
                                1. 0
                                  Patrick Andrieu
                                  1. 0
                                    Detlef G.
                                    1. 0
                                      Patrick Andrieu
  4. 0
    Detlef G.
    1. 0
      Patrick Andrieu