2017-01-01 18 views
0

これは私が試みたものです。 CSS:ホバーDIVは、別のdiv *を再配置せずに表示します。*

div#Layer3:hover div#Layer3copy 
{ 
    display: inline-block; 
} 

HTML:

<div id="Layer3"><img src="images/Layer3.png"> 
     <div id="Layer3copy"><img src="images/Layer3copy.png"></div>    
    </div> 

私は、これはホバー別は、しかし、それが表示され、その作業OKをDIV

しかしから少し移動したときに隠されたとされるようにDIVたいです実際の場所、

解決方法はありますか?

+0

divの動いている理由はわかりません。私は[JsFiddle](jsfiddle.net)をあなたのページの完全なHTMLとCSSで作成することをお勧めします。 –

+0

divはもともとインラインブロックですか?おそらくそれがブロック要素であり、インラインに変更すると位置の違いになります。 –

答えて

1

さてさて、まずあなたのスニペット#レイヤ3は#Layer3copyをラップしている中で、私たちは

#Layer3:hover > #Layer3copy{ 
    /*Do your things here*/ 
    } 
すなわち直接の子セレクタを使って、ホバー状態でそれを呼び出すことができるCSS の表示、位置および擬似状態の性質を知っている必要があります

作業例:https://jsfiddle.net/ishusupah/eupfr101/

この例では、#Layer3copyの表示を使用しています:なし、ホバー状態で表示:ブロックにしています。

あなたが望むように表示して配置することができます。この

#Layer3:hover > #Layer3Copy { 
position: absolute; 
display: inline-block; 
/** Postion of your div **/ 
} 

を使用して

0

divを非表示にしているわけではありません。上記のコードで実際に何をしているのは、Layer3 divがホバーされている場合、Layer3copy divのスタイルをinline blockに変更していることです。それが動いている理由です。 divはデフォルトでblock要素です。つまり、行の全幅を占めています。 inline-blockに変更すると、行に十分な幅があり、全幅を取らない場合、別の要素の隣に整列するようにdivに指示しているので、divは親divの次に移動します。

また、セレクタを変更して要件を満たす必要があります。

実際に、あなたは(それが移動することなくLayer3copyを隠し、裏表示)欲しいものを達成、このCSSコードを使用するには:

#Layer3 #Layer3copy{ 
    display: none; 
} 

#Layer3:hover #Layer3copy{ 
border: 3px solid red; 
display: block; 
} 

layer3たときに第1のセレクタはデフォルトの定義を与えている - コンテナdiv要素があります覆われていない - 子Layer3copy divは表示されません(display:none)。 divsのデフォルトの表示(彼らはブロック要素です)である - - このことが表示され、「なしそれにその初期位置に滞在してきている

第2のセレクタはlayer3Layer3copyにスタイルを適用し、display:blockにそれを回すホーバーされたときに言っています移動"。

Here is a working example with the above code.

あなたは私がblock要素に言いたいことが表示されますので、私は、さらに、内部のdivに薄い赤のボーダーを追加しました - 列の幅全体を取っています。

0

試して、あなたはそれがになりたいところはどこでも、それが配置されるまでの位置を調整するようにしてください。 私はあなたがツールチップのようになりたいと思うと思う

関連する問題