2016-05-31 6 views
0

私はスティッキーヘッダーを持つワードプレステーマを実行しています。私はヘッダのすぐ下に表示されているサブナビを構築しました。このサブナブを使用するときはいつも、ヘッダーは粘着性を持つべきではありません。サブナビはスティッキーでなければなりません(すでに単純なjavascript addClassで作られています)。私はヘッダーのスティッキーさを最善の方法で止める方法だけに興味があります。パフォーマンスのCSSルールとjQueryの比較.toggleClass

(1)CSSの使用: 1つの方法は、CSSを使用して、クラスをオーバーライドしてヘッダーを固定することです。これは既に動作していますが、位置を固定に変更し、プレースホルダを無効にしました。位置が固定に設定され、ヘッダーがフローから取り除かれると、コンテンツのギャップが回避されます。多くのページ(約70%)でサブナビを使用したいという状況に基づいて、関連するページをIDでターゲティングするための1つの大きなCSSルールを作成する必要があります。これは、javascriptがリソース上でより良いかもしれないという私の考えにつながります。

(2)JavaScriptを使用:

if(document.getElementById('subnavfullwidth')){ 
jQuery('.header-sticky-height').toggleClass('header-sticky-height', 'false'); 
jQuery('.header-wrapper').toggleClass('header-is-sticky', 'false'); 
jQuery('.header').toggleClass('.header-sticky-shadow', 'false'); 
} 

シンプル: を私はsubnavのIDがページ上に存在するときに容易、全体CSS-クラスを削除するJavaScriptの小さなスニペットを、書いてきましたタイトルとして:javascriptは良いか、サイトのパフォーマンスのための大きなCSSルールですか?私のjavascriptを最適化する方法はありますか、それはちょうど大丈夫ですか?

親切!

+0

あなたのセレクタにIDを追加することで、JavaScriptを最適化することができます。この投稿を見る:http://stackoverflow.com/questions/23518072/improve-inefficient-jquery-selector/23518492#23518492 – terpinmd

+0

こんにちはterpmind、上記のCSSクラスにIDを追加する必要がありますか(.header-sticky-height、 .header-wrapperと.header)、別の要素のidを使用することもできます。ページ全体の親要素は#wrap_allです。私はこれをより良いパフォーマンスのために使うこともできますか? - > jQuery( '#wrap_all')。find( '。header-sticky-height).toggleClassなどですか? – DoUtDes

+1

パフォーマンスはここでは無関係です。 /可読性と保守性の観点から、私はbody要素かhtml要素のどちらかでJSを介して_one_ classだけを切り替え/トグルします。子孫セレクタを使用して、スタイルシートに残したいものはすべて選択します。 – CBroe

答えて

0

私はstickyという名前の '.header'(関連する領域のルート要素であると仮定します)に1つのクラスを追加し、クラスヘッダをヘッダのidに変更する方がより好きです。

あなたが書いた方法では、 '.header'にidを追加して、メソッドを連鎖させて検索する要素の数を制限することで、少しパフォーマンスを向上させることができます。

+0

こんにちはdyagmin、あなたのコードはうまくいっているかどうかをテストするのに少し時間がかかります;) – DoUtDes

関連する問題