开发者

Converting jquery to prototype.js for scrollTop equivalent change to header as you scroll down

开发者 https://www.devze.com 2023-04-05 01:15 出处:网络
I am still a relative noob when it comes to javascript and especially going into jquery, prototype.js and such.I am trying to duplicate something similar to the http://giglocator.com header (or, to a

I am still a relative noob when it comes to javascript and especially going into jquery, prototype.js and such. I am trying to duplicate something similar to the http://giglocator.com header (or, to a lesser extent, TechCrunch's redesigned header) where a portion of the header stays on screen once you scroll past a certain point. This boils down to changing header code from relative position to fixed position once a person has scroled past xxx number of pixels. I came across vinceh's answer at Header changes as you scroll down (jQuery) which included a fiddle ( http://jsfiddle.net/KEjfe/ ) he created. I managed to tweak his code up to more or less do a giglocator type header using the following script code instead:

$("#body").scroll( function() {
    var value = $(this).scrollTop();
    if ( value > 120 )
        $("#header").css("position", "fixed").css("top", "0");
    else
        $("#header").css("position", "relative").css("top", "120px");
});

So that is great except that I am trying to do this with a forum software package that uses prototype.js and scriptaculous. It seems like a waste to load jquery just for this (in addition t开发者_StackOverflow中文版o the others). Is there any way to convert the code above so that it works in prototype/scriptaculous? Or is there a way to just load jquery's scrolltop?


Based on the fiddle here is the equivalent; http://jsfiddle.net/S7gpT/1/

Event.observe("body", "scroll", function() {
    var value = this.scrollTop;
    if ( value > 120 )
        $("header").setStyle({border: "1px solid blue"});
    else
        $("header").setStyle({border: "1px solid green"});
});

It looks very similar because when it comes to DOM the two libraries are functionally similar. The differences are circumstantial...

  • $() takes an ID instead of CSS selector so it does not need a # character.
  • The name of an event is passed as a string to observe() instead of using a dedicated function.
  • scrollTop is an existing property of elements, no need to wrap it in another function.
  • css() is replaced with setStyle()
0

精彩评论

暂无评论...
验证码 换一张
取 消