2017-03-29 7 views
1

一部のJSコードで生成されたブロックをカバーするために、オーバーレイのフェードインとフェードアウトに問題があります。コンテンツブロックオーバーレイのフェードイン/クリック時

以下は、作品へのリンクです。いずれかの大陸をクリックすると、国旗のあるブロックが生成されます。また、「一部のコンテンツ」と表示されている灰色のバーも表示されます。理想的には、フラグの1つをクリックするまで、そのバーを非表示にします。どちらの時点で、オーバーレイがフラグの上にスライドします。ブロックの外側のどこかをクリックすると、オーバーレイが外に出て消えます。

CodePen link.

私が設定してみました:

&__block-overlay { 
    .... 
    opacity: 0; 
    .... 
} 

&__block-overlay:active { 
    opacity: 0.7; 
} 

をしかし、それは動作しませんでした。

どのような提案も大変ありがとうございます。

答えて

1

ここで解決する2つの問題があります。 1つは「一部のコンテンツ」バーを隠すことです。

&__block { 
    display: inline-block; 
    width: 25%; 
    margin: 0.5%; 
    height: 150px; 
    text-align: center; 
    position: relative; 
    cursor: pointer; 
    border-radius: 5px; 
    overflow: hidden; /* add this */ 

その後、代わりにaddClass()toggleClass()を使用し、連続したクリックの上、コンテンツの表示を切り替えるために:あなたは、彼らが旗の上に場合にのみ表示されるように、彼らの親にoverflow: hiddenを設定することにより、それを達成することができます

blockClicked(e) { 
    const $block = $(e.target.closest('.js-block')); 
    $('.details-open').removeClass('details-open'); 
    $block.toggleClass('details-open'); 
}, 

Updated CodePen

+0

oh優れています。ありがとうございました! 質問をフォロー:最近クリックしたオーバーレイを開いているだけですか?つまり、新しいオーバーレイをクリックしたときに、他のオーバーレイをすべて非表示にするにはどうすればよいですか? –

+0

'.details-open'クラスを他のすべての要素から削除してから、クリックしたクラスに追加することができます。私はあなたのために私の答えを更新しました –

+0

ああ、私はすべての細部を見つけることのラインに沿って考えていた - 開いて、それらをすべて閉じて、現在のものを開いて切り替えます。私はあなたのことがより簡潔だと思います。とても有難い! –

関連する問題