2012-02-19 14 views
0

私はCSSスタイルを、ページ上のどこにあるかに基づいて変更しようとしています。私はグーグル上のすべての同様のスレッドを読んできたが、このコードは私が望むものだと思われるが、うまくいかない。どんな助けでも大歓迎です。ありがとう。スクロール位置にjqueryを変更するCSSを

私が修正したスクリプト: http://jsfiddle.net/BKnzr/151/

と私のテストページ(非作業): http://newmedia.academyart.edu/~02225904/portfolio/test.html

と私が使用しようとしていますjqueryの:

// cache the elements 
var $container = $('#container'); 
var $nav = $('#a.nav'); 
var $home = $('#home'); 
var $about = $('#about'); 
var $work = $('#work'); 
var $contact = $('#contact'); 

// get the view area of #container 
var top=$(window).scrollTop(); 
var bottom = top + $container.height(); 

// run code when #container is scrolled 
$container.scroll(function() { 
if ($home.offset().top < bottom) { 
    $nav.css({"color":"green","font-size":"20px"}); 
} else if ($about.offset().top < bottom) { 
    $nav.css({"color":"green","font-size":"20px"}); 
} else if ($work.offset().top < bottom) { 
    $nav.css({"color":"green","font-size":"20px"}); 
} else { 
    $nav.css({"color":"green","font-size":"20px"}); 
} 
}); 
+0

あなたは背景色が – Prabhavith

+0

いいえ、私は私が私が欲しいもののために働くかもしれないと思ったが、それはしなかったのliタグにクラスを追加している。この他のプラグインを変更することがしたいです。アンカータグの色を変更したい。 – user1218670

+0

あなたの変数に '$'を使わないでください。 jQueryオブジェクトまたは単なる変数の場合は混乱させます。 – Joseph

答えて

0

から#を削除しますvar $nav = $('#a.nav'); - aはIDではなくタグです

やナビゲーションの唯一のリンクは色付けを取得するよう代わりにこれを使用する:

$nav = $('#textlinks-container a.nav')

+0

ええ、まあ、小さなミス、それは私が知る限り、スクリプトを壊すものではありません。機能が発射さえしていないようです。私は多くの他のチュートリアルを参照してきましたが、jqueryの知識はほとんどありません。リンク色を変更する必要があります。 – user1218670

+0

jQueryのこれらの小さなミスが黙って失敗します。それらを変更しようとしましたか? – Joseph

+0

はい、私はそれを変えましたが、まだ何も変わりませんでした。ブラウザのコンソールで、Uncaught TypeError:ヌル (匿名関数)のプロパティ 'top'を読み取れません。 – user1218670

0

あなたが正常に単に「現在の」クラスを追加するプラグインを使用してアンカータグのテキストの色を変更することができるはずですliタグに。

これがまだあなたの目標である場合、問題はCSSにあります。あなたのスタイルシートの81行目で、li.current {color:red}は、先に宣言されたa.nav {color:#fff;}を上書きしません。より具体的なセレクターを使用する必要があります。li.current a {color:red;}

+0

応答のおかげで、私は実際にこれに似た何かをやった – user1218670

2

これは意味的に最適な解決策であるかどうかはわかりませんが、これは私の問題でうまくいきました。

$(document).ready(function(){ 

var container = $('#container'); 
var nav = $('a.nav'); 
var home = $('#home'); 
var about = $('#about'); 
var work = $('#work'); 
var contact = $('#contact'); 

$(window).scroll(function(){ 
    if ($(window).scrollTop() <= $('#about').offset().top - 360) 
    { 
$('a.nav-home').css({ 
    'color': '#2dc9b2', 
}); 
$('a.nav-about').css({ 
    'color': '#fff', 
}); 
$('a.nav-work').css({ 
    'color': '#fff', 
}); 
$('a.nav-contact').css({ 
    'color': '#fff', 
}); 
$("a.nav").removeClass("about-hover"); 
$("a.nav").addClass("home-hover"); 
$("a.nav").removeClass("work-hover"); 
$("a.nav").removeClass("contact-hover"); 
    } 

    else if ($(window).scrollTop() <= $('#about').offset().top * 2 - 360) { 
$('a.nav-home').css({ 
    'color': '#fff', 
}); 
$('a.nav-about').css({ 
    'color': '#e7ad4a', 
}); 
$('a.nav-work').css({ 
    'color': '#fff', 
}); 
$('a.nav-contact').css({ 
    'color': '#fff', 
}); 
$("a.nav").addClass("about-hover"); 
$("a.nav").removeClass("home-hover"); 
$("a.nav").removeClass("work-hover"); 
$("a.nav").removeClass("contact-hover"); 
    } 

    else if ($(window).scrollTop() <= $('#about').offset().top * 2.9999 - 360) { 
$('a.nav-home').css({ 
    'color': '#fff', 
}); 
$('a.nav-about').css({ 
    'color': '#fff', 
}); 
$('a.nav-work').css({ 
    'color': '#a22330', 
}); 
$('a.nav-contact').css({ 
    'color': '#fff', 
}); 
$("a.nav").removeClass("about-hover"); 
$("a.nav").removeClass("home-hover"); 
$("a.nav").addClass("work-hover"); 
$("a.nav").removeClass("contact-hover"); 
    } 

    else { 

$('a.nav-home').css({ 
    'color': '#fff', 
}); 
$('a.nav-about').css({ 
    'color': '#fff', 
}); 
$('a.nav-work').css({ 
    'color': '#fff', 
}); 
$('a.nav-contact').css({ 
    'color': '#374ad3', 
}); 
$("a.nav").removeClass("about-hover"); 
$("a.nav").removeClass("home-hover"); 
$("a.nav").removeClass("work-hover"); 
$("a.nav").addClass("contact-hover"); 
    } 
}); 
}); 
関連する問題