2017-02-22 33 views
0

CSSとHTMLのみを使用してカスタムコンポーネントを作成しようとしています。 コンポーネントの動作は次のようになります。入力が選択されている(フォーカスがある)とき、別のコンテナが開いています。 問題は、コンテナが入力失うフォーカスを開いて、コンテナが最初のクリックで閉じているときである:(他の要素がフォーカスされていると入力がフォーカスを失う

ので、どのように私は開いたコンテナの上?

<div class="block"> 
    <label>Field</label> 
    <input type="text" tabindex="-1"/> 
    <div tabindex="-1" class="infront"> 
     Keep this bastard open.<br/> 
     <br/> 
     while clicking on this div 
    </div> 
</div> 
を集中していたときに入力フォーカスが集中することを持つことができます

CSS

.block{ 
    position: relative; 
    display: inline-block; 
    margin: 50px; 
} 

.infront{display: none;} 

.block input[type="text"]:focus ~ .infront { 
    display: block; 
    position: absolute; 
    top:100%; 
    width: 80%; 
    right: 0; 
    background: #ccc; 
    opacity:0.8; 
} 

Fiddle:

+0

私はあなたに従うカント申し訳ありませんが、私は「.infront」、本当に私は入力がフォーカスされたときにあなたのコードは罰金 – MKAD

+0

であることを理解いけません入力がフォーカスを失ったために隠れる「.infront」コンテナをクリックすると、コンテナが開かれます。私が必要とするのは、そのコンテナの外をクリックすると、そのコンテナを開いて隠すことです。 – Sharmila

+0

@MKADをうまくいくと思うどんな問題が – BurebistaRuler

答えて

1

.infrontのコンテナ状態も処理する必要があります。

この

にあなたのCSSを更新
.block input[type="text"]:focus ~ .infront 
, .infront:hover 
, .infront:active 
, .infront:focus { 
    display: block; 
    position: absolute; 
    top:100%; 
    width: 80%; 
    right: 0; 
    background: #ccc; 
    opacity:0.8; 
} 
+0

あなたの答えをありがとう! – BurebistaRuler

1

私はHTMLとCSSだけではできないと思います。次のようなjqueryコードが必要です。

$(.block input[type=text]).on('focus', function(e) { 
    $('.infront').show(); 
}); 
+0

本当に、コンテナ ".infront"は私のCSSから見えるので、jQueryは必要ありません。私が必要とするのは、そのコンテナの外をクリックすると、コンテナを隠すと ".infront"コンテナを開いたままにしておくことです。 – BurebistaRuler

+0

@burebistarulerあなたは正しいですが、これを表示:ブロックとして保持したい場合はjsでそれを変更しなければならない場合は、フォーカスを外してもそれは削除されません –

関連する問題