2016-05-22 18 views
0

私は4つのdiv要素にクラスを割り当てました。それらはすべてdisplay = noneに設定されています。ページの別のdivがクリックされたときにブロックを表示するように変更します。私は正常にすべての要素が異なるdiv要素がクリックされたときにブロックするための表示プロパティを変更するには、JavaScriptの 2.使用をONLOAD 1.非表示に管理しているCSSプロパティDISPLAYで希望の出力が得られません

問題は、それが実際にちょうどそれのようにコンテンツ全幅を示すことがありますそれは代わりに、それがすべてのものをオーバーラップする1つの列に現れます。なぜなら、これがなぜ起こっているのか分からず、私は助けに感謝します。

<script> 
    function myFunction(id){ 
    var elements = document.querySelectorAll('.element'); 
    for(var i=0; i<elements.length; i++){ 
    elements[i].style.display = elements[i].id == id ? ' inline' : 'none'; 
    } 
} 
</script> 

このコードが動作している細かな人は、私は、誰かが&レシピ、飲料を調理する上でクリックしたときに、それが正しく表示されてい探求し、レストランする方法を見つけ出す助けてください:JavaScriptコード

。ページへのリンク:http://theinformant.to/food-drink/

答えて

0

サイトがグリッドレイアウトにisotopehttp://isotope.metafizzy.co)を使用しているかのように見えます。残念ながら、displayプロパティを切り替えると、isotopeは要素の表示位置を再計算しません。

あなたが負荷の要素を隠しているのでisotopeが初期化されるとき、それは、したがって、文書フローに起因するdisplay: noneでないとして示された場合に、それは各要素の大きさを決定することができないが、それだけで、互いの上に積み重ねられます。また、ビューポートのサイズを変更すると、要素が適切にレイアウトされることに気づくでしょう。これは、isotopeがウィンドウのサイズ変更イベントをリッスンし、自動的にそれをlayout()メソッドと呼びます。

したがって、要素をdisplay: blockに変更すると、isotopelayout()メソッド(http://isotope.metafizzy.co/methods.html#layout)も呼び出す必要があります。

+0

ありがとうございました。私がそれを推測できる方法はありませんでした。私はプログラミングに慣れていないので、本当にあなたの助けを訴えます。私はjqueryを使用していないが、私はJavaScriptを使用しています。 ( 'グリッド')。 // jQueryの $ grid.isotope( 'レイアウト') //バニラJS iso.layout() のvar $グリッドは$を=同位体(:あなたは私が見つけたページで言及{ 石積み:{ カラム幅:50 } }); // giganteクラスをトグルしてアイテムのサイズを変更する $ grid.on( 'クリック'、 '.grid-item'、function(){ $(this).toggleClass( 'gigante'); //トリガーレイアウトアイテムサイズが変更された後 $ grid.isotope( 'layout'); }); これで何を使用しますか? – user2296604

+0

あらかじめ作ったWordPressテーマを使っているので、すでに 'jQuery'を使っているように見え、' isotope'を初期化するために使っています。だから 'jQuery( '。isotope')。isotope( 'layout');'を使うのが最も簡単です。 'div'をクラス' .isotope'で探します。そのページ上に 'isotope'の' layout'メソッドを呼び出します。 – kevinto

+0

スクリプトタグでは、次のように書く必要があります。 jQuery( '。isotope')。isotope( 'layout'); ?? – user2296604

関連する問題