方法 1
これは、 jQueryコードを使用すると、はるかに簡単に実行できます。
HTML
<img id="img1"/>
<img id="img2"/>
<div id="div1"/>
<div id="div2"/>
<div id="div3"/>
<div id="div4"/>
Jクエリ
$("#img1").on('click', function() {
$(this).hide();
$("#div2, #div3, #div4").hide();
$("#div1").show();
});
表示/非表示を、画像をクリックしたときに表示または非表示にするものに置き換えるだけです。
トップヒント:
show/hide を toggle() または fadeIn() /fadeOut() に置き換えることもできます
toggle() : クリックするたびに表示ブロックと非表示を交互に切り替えます。
fadeIn() : show() と同じことを行いますが、素敵なフェード アニメーションを伴います。
方法 2
新しい方法は、CSS アニメーションを使用することです。テストでは、CSS は jQuery よりもアニメーション処理のパフォーマンスが優れていることが示されています。
HTML
<div id="imgWrap">
<img id="img1" class="Active" data-box="div1"/>
<img id="img2" data-box="div2"/>
<img id="img3" data-box="div3"/>
<img id="img4" data-box="div4"/>
</div>
<div id="divWrap">
<div id="div1" class="Active">1</div>
<div id="div2">2</div>
<div id="div3">3</div>
<div id="div4">4</div>
</div>
CSS
#divWrap div{
opacity:0;
}
#divWrap .Active{
opacity:1;
-webkit-animation:fadeIn ease-in-out 0.5s;
animation:fadeIn ease-in-out 0.5s;
}
@-webkit-keyframes fadeIn{
from{opacity:0;}
to {opacity:1;}
}
@keyframes fadeIn{
from{opacity:0;}
to {opacity:1;}
}
要素が表示されていないときにページスペースを予約したくない場合は、追加display:none/block
してopacity
ください(フィドルを参照) 。
CSS を使用する利点は、アニメーションを自由に作成できることです。Active
このコードは、クラスが要素に追加されたときにアニメーションをトリガーするだけです。
アニメーションの例をいくつか示します。
ジャバスクリプト
$('img').on('click', function () {
var divID = $(this).attr('data-box');
$(this).addClass('Active').siblings().removeClass('Active');
$('#' + divID).addClass('Active').siblings().removeClass('Active');
})
最後に、上記のように JavaScript または jQuery を追加して、クリック時に Active クラスを追加します。この例では、ページの読み込み時にデフォルトのアクティブ要素を作成するために、Active が html 内の 1 つの要素にハードコーディングされています。
このコードは、クリックされたボタンにも Active を追加します。これはオプションですが、現在アクティブなボタンに CSS スタイルを追加するために使用できます。