2016-07-12 15 views
0

特定のCSSを背景色のように変更するだけでなく、実際には異なるコンテンツや同じコンテンツを表示しますが、異なる方法で再配置します。私はブートストラップを使用しています。スクロールするときのナビゲーションバーのコンテンツを変更するにはどうすればよいですか?

http://www.univision.com/noticiasは何したいですか?

ユーザがスクロールしたかどうかによって、別のnavbarを作成し、jQueryを使用して表示または非表示にする必要がありますか?皆さんはこのコードを知っていますか?

ありがとうございます!

+0

全くcssではありません。それはちょうどjavascriptの –

答えて

0

この効果は、CSSと少しのJavaScriptを使用して達成できます。 JavaScriptスクロールイベントリスナを追加し、必要なオフセットをチェックし、それに応じてhtml要素からCSSクラスを追加または削除することができます。

例:

HTML:

<h1 class="default-style">Hello World</h1> 

CSS:

.default-style { 
    background-color: yellow; 
} 
.changed-style { 
    background-color: green; 
} 

のjQuery:

function init() { 
$(window).scroll(function() { 
    var distanceY = window.pageYOffset; 
    var breakpoint = 300; // you can change this value according to your layouts 
    var elementToChange = $(".default-style"); 
    if (distanceY > breakpoint) { 
     elementToChange.addClass("changed-style"); 
    } 
    else { 
     if (elementToChange.hasClass("default-style")) { 
      elementToChange.removeClass("changed-style"); 
     } 
    } 
}); 
} 

window.onload = init(); 

もちろん、あなたのケースでは、あなたがブートストラップを使っていると言ったように、ヘッダのブートストラップクラスを変更することができます。例えば。

次の3つのメニュー

<div class="col-md-4 menu-1">Home</div> 
<div class="col-md-4 menu-2">About</div> 
<div class="col-md-4 menu-3">Contact</div> 

を持っており、ユーザーがスクロールを使用すると、メニュー3を隠し、(メニュー1メニュー2ための)半分の総ブラウザの幅を分割したいときのが言わせた場合。あなたはできます:

function init() { 
$(window).scroll(function() { 
    var distanceY = window.pageYOffset; 
    var breakpoint = 300; // you can change this value according to your layouts 
    var menu1 = $(".menu-1"), menu2 = $(".menu-2"), menu3 = $(".menu-3"); 
    if (distanceY > breakpoint) { 
     menu3.hide(); 
     menu1.addClass("col-md-6"); 
     menu2.addClass("col-md-6"); 
    } 
    else { 
     if (menu1.hasClass("col-md-6") || menu2.hasClass("col-md-6")) { 
      menu1.removeClass("col-md-6"); 
      menu2.removeClass("col-md-6"); 
     } 
    } 
}); 
} 

window.onload = init(); 

希望します。

+0

ありがとうAneeqが、私はそれが一緒に別のコンテンツを持っていたい場合はどうすればいいですか? Hello Worldというより、今はHello Worldと異なるタブがあります:メニュー1 - メニュー2 - メニュー3? クラスを非表示にしてそれに応じて表示する必要がありますか? – adp

+0

@Andreaええ、あなたはメニューを整形するためのクラスを使用するべきです(ブートストラップは、あなたがそれを使っていたと言うようにクラスを組み込んでいます)。スクロールイベントに基づいてJSまたはjQueryを使用して、これらのブートストラップクラスを切り替えることができます。私は例として答えを更新しました。 – Aneeq

関連する問題