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のセレクタはlayer3
がLayer3copy
にスタイルを適用し、display:block
にそれを回すホーバーされたときに言っています移動"。
Here is a working example with the above code.
あなたは私がblock
要素に言いたいことが表示されますので、私は、さらに、内部のdivに薄い赤のボーダーを追加しました - 列の幅全体を取っています。
divの動いている理由はわかりません。私は[JsFiddle](jsfiddle.net)をあなたのページの完全なHTMLとCSSで作成することをお勧めします。 –
divはもともとインラインブロックですか?おそらくそれがブロック要素であり、インラインに変更すると位置の違いになります。 –