フローから要素を削除するにはどうすればよいですか?


83

position: absoluteフローから要素がポップされ、隣接する要素との相互作用が停止することはわかっています。

これを達成するために他にどのような方法がありますか?


ページから完全に削除するのですか、それとも単に非表示にするのですか?「隣人との交流」とはどういう意味ですか?
ジェイソンホール

何を達成しようとしていますか?
griegs 2010年

私はそれを行う方法があると思ったので、思い出せなかったので、stackoverflowに目を向けました:) position:absolute worksしかし、私はただ疑問に思っていました
2010年

回答:


63

なし?

つまり、でレイアウトから完全に削除する以外は、それだけdisplay: noneだと確信しています。

position: absolute実行可能な解決策ではない特定の状況に直面していますか?


4
position: absoluteスクロール時に再描画が発生しますが、これはモバイルでのパフォーマンスに悪影響を
及ぼします

7
これは、タイトルが「フローから削除」と表示されているため、ユーザーがここに来たときに期待する答えではありません。display: noneフローからだけでなく、要素を完全に削除します。
jstice4all 2016年

118

position:absolute私にとってより口に合うようにする1つのトリックは、その親を作ることposition:relativeです。その場合、子は親の位置に対して「絶対」になります。

jsFiddle


37

もう1つのオプションはheight: 0; overflow: visible;、要素に設定することですが、実際にはフローの外側にはないため、マージンの崩壊が壊れる可能性があります。


2
@Jessica、::before絶対位置の疑似要素を使用して背景をエミュレートします。
ユーザー

4

ありdisplay: noneますが、それはあなたが探しているものより少し多いかもしれないと思います。


2
しかし、それでも、それはまだ「近所に」あります。体に対する絶対位置は、その位置を完全に制御する唯一の方法です。親が相対として宣言されている場合、その絶対原点は相対的であることに注意してください。その場合、要素をdocument.bodyまたは非相対宣言要素に追加する必要があります。
Dan Heberden 2010年

4
何?要素が表示されていない場合、位置は関係ありません。
Greg Hewgill 2010年

Firefoxでは、入力の検証メッセージがdisplay: none無意味な場所(画面の上部、タブを覆っている)に表示されます。少なくともそのブラウザでは、表示されていない要素は本当に位置がないようです。
ブリリアン

4

position: fixed;あなたが言うように、フローから要素を「ポップ」します。:)

position: absoluteポジションを伴う必要があります。例えばtop: 1rem; left: 1rem

position: fixedただし、ドキュメントフローに従って通常表示される場所に要素を配置しますが、その後は移動しません。また、次の要素がその上にシフトするように、高さを(domに関して)0pxに効果的に設定します。

position: fixed; z-index: 1次の要素の上に「ポップ」するように設定(または必要なz-index)できるので、これはかなりクールです。

これは、たとえば、スクロールしたときに上部に留まる固定位置ヘッダーに特に役立ちます。


3

フローティングすると、フローは再編成されますが、位置:絶対は、ドキュメントのフローから完全に削除する唯一の方法です。


2

この質問は数年前のものですが、あなたがやろうとしているのは、画像のような大きな要素がdivの高さに干渉しないようにすることです。

似たようなものに出くわしました。画像をdivでオーバーフローさせたいのですが、テキストの文字列の最後に配置したかったので、どこにあるのかわかりませんでした。

私が理解した解決策は、margin-bottom:-elementの高さを配置することでした。したがって、画像の高さが20pxの場合、

margin-bottom: -20px; vertical-align: top;

例えば。

そうすれば、それはdivの外側に浮かび、文字列の最後の単語の隣にとどまりました。


1

完全を期すために:floatプロパティは、HTMLのフローからも要素を削除します。

float: right

-1

これを使用してみてください:

position: relative;
clear: both;

絶対位置を使用できない場合に使用page-break-after: always;position:relativeます。たとえば、使用する場合の印刷では、でのみ正常に機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.