回答:
このvisibility
プロパティは、要素を表示するかどうかをブラウザに通知するだけです。表示されている(visible
- 表示できる)または非表示(- 表示されhidden
ない)です。
display
プロパティは、ブラウザに指示どのように描くと、すべての場合には、要素を表示する-それは次のように表示するかどうかinline
の要素か(すなわち、それは、テキストや他のインライン要素をフロー)block
レベルの要素(すなわち、それは、高さと幅のプロパティを持っていますあなたは)それは、などを浮揚可能ですが、設定することができ、またはinline-block
(それがブロックボックスのように動作しますが、インライン代わりに敷設された)と他のいくつか(すなわちlist-item
、table
、table-row
、table-cell
、flex
、など)。
要素をset display: block
だけでなく setに設定してもvisibility: hidden
、ブラウザはそれをブロック要素として扱いますが、表示されないだけです。赤いボックスを見えないボックスの上に重ねるようなものです。赤いボックスは、実際には見えない物理的なボックスの上にあるのに、空中に浮いているように見えます。
つまり、これは、要素が表示されているかどうかに関係なく、要素display
がないnone
場合でも、ページ内の要素のフローに影響を与えることを意味します。で要素を囲むボックスは、display: none
その要素が存在しなかったかのように動作します(ただし、DOMには残ります)。
display: none;
、その要素はDOMから削除されますか?または私は完全に混乱していますか?
可視性:非表示。
表示:なし。
追加のメモ:
表示:なし; DOM要素の視覚スタイル/物理スペースをDOMから削除しますが、visibility:hidden; 要素は削除されませんが、単に非表示になります。したがって、DOMで300ピクセルの垂直方向のスペースを占めるdivは、visibility:hiddenに設定されている場合でも、300ピクセルの垂直方向の幅を占有します。ただし、display:noneに設定すると、それは視覚的なスタイルであり、それが占めるスペースは隠されており、そのスペースはより良い言葉がないために「解放」されます。
[編集]-上記を書いたのはしばらく前のことで、十分な知識がなかったのか、悪い日を過ごしたのかはわかりませんが、実際には、要素がDOM階層から削除されることはありません。display:noneを使用すると、すべてのブロックレベルの表示「スタイル」は完全に「非表示」になりますが、visibility:hiddenを使用すると、要素自体は非表示ですが、それでもDOMの視覚空間を占めます。これで問題が解決することを願っています
display: none
なりません DOMから要素を削除します。要素はまだ存在していますが、表示されません。