回答:
この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から要素を削除します。要素はまだ存在していますが、表示されません。