2010-11-25 26 views
0

Ich frage mich, ob jemand weiß, wie man ein Bild/Steuerelement immer sichtbar hält, wenn der Benutzer die Seite hoch und runter scrollt.Kontrolle immer sichtbar halten

Ein Beispiel ist auf der neuen Google-Suchseite, die automatisch Ihre Ergebnisse beim Eintippen berücksichtigt. Auf der rechten Seite befindet sich eine Karte, die im oberen Teil der Seite 100-mal beginnt. Wenn Sie einen Bildlauf nach unten durchführen, bleibt die Karte sichtbar, ist aber 0 Pixel vom oberen Seitenrand entfernt. Wenn Sie einen Bildlauf nach oben durchführen, kehrt er zu seiner normalen Position 100 Pixel vom oberen Rand der Seite zurück.

Irgendwelche Ideen, wie das gemacht wird?

Antwort

3

Sie suchen position: fixed

<div style="position: fixed; right: 100px; top: 100px; width: 200px; height: 100px; background-color: red"> 
I'm fixed</div> 

Arbeiten in allen Browsern außer IE6.

+0

Sie könnten auch ein wenig js benötigen, wenn Sie etwas ähnlich wie "startet 100px routes vom oberen Rand der Seite will. Wenn Sie nach unten scrollen bleibt die Karte in Sicht, aber ist 0px" – sjobe

0

position:fixed ist der Weg, hier zu gehen. Wenn Sie den beschriebenen Effekt wie auf der Google-Seite erreichen möchten, benötigen Sie ein kleines Javascript, das die CSS-Stile des Elements abhängig von der Bildlaufposition umschaltet.

Sie können ein Skript für diese Aufgabe finden Sie hier: http://jsfiddle.net/6bnuU/

Beachten Sie, dass auf jquery abhängt. Wenn Sie nach einer Lösung suchen, die jQuery nicht benötigt, können Sie das Skript einfach neu schreiben, aber Sie müssen einen Browser-Schalter verwenden, da IE eine andere API für den Scroll-Status als die anderen Browser verwendet. Beachten Sie auch, dass IE 6 nicht Position unterstützt: fest, so dass, wenn Sie es unterstützen möchten, müssen Sie es mit Javascript emulieren müssen (was eine leichte Aufgabe ist)

+0

Danke Simon, aber was ist das Javascript zu TU das? – user439525

+0

Ich habe nur meine Antwort erweitert und hoffe, dass es dein Problem löst – Simon

+0

Ich muss etwas @Simon verpassen, aber deine jsfiddle tut einfach nichts, die feste div geht nur den ganzen Weg mit dem Inhalt – iamserious

0

Verwenden CSS position mit dem Wert fixed, dann Position es auf der Seite mit left, right, top und/oder bottom. Zum Beispiel:

#some_element { 
    position: fixed; 
    top: 100px; 
    right: 0; 
} 

Das genaue Beispiel, das Sie erwähnen, erfordert auch einige JavaScript.

Verwandte Themen