Как убрать элемент из потока?


83

Я знаю, position: absoluteчто вытолкнет элемент из потока, и он перестанет взаимодействовать со своими соседями.

Какие еще есть способы добиться этого?


Вы имеете в виду полностью удалить его со страницы или просто сделать невидимым? Что вы имеете в виду под «взаимодействием со своими соседями»?
Джейсон Холл

чего ты пытаешься достичь?
griegs

Я просто подумал, что есть способ сделать это, и я не мог вспомнить, поэтому я обратился к stackoverflow :) position: absolute работает, но мне просто интересно
Посвященный

Ответы:


63

Никто?

Я имею в виду, кроме полного удаления его из макета display: none, я почти уверен, что это так.

Вы сталкиваетесь с конкретной ситуацией, position: absoluteрешение которой не является жизнеспособным?


4
position: absoluteвызывает перерисовку при прокрутке, что плохо для производительности на мобильных устройствах
bafromca

7
Это не тот ответ, который ожидает получить пользователь, приходя сюда, поскольку в заголовке написано «удалить из потока». display: noneполностью удаляет элемент не только из потока.
jstice4all

118

Один трюк, который position:absoluteмне нравится больше, - сделать его родителем position:relative. Тогда дочерний элемент будет «абсолютным» относительно позиции родителя.

jsFiddle


37

Другой вариант - установить height: 0; overflow: visible;элемент, хотя на самом деле он не будет находиться вне потока и, следовательно, может нарушить сжатие поля .


2
@Jessica, используйте псевдоэлемент ::beforeс абсолютным позиционированием для имитации фона.
пользователь

4

Есть display: none, но я думаю, что это может быть немного больше, чем вы ищете.


2
Но даже в этом случае он все еще находится «по соседству» ... абсолютное положение относительно тела - единственный способ полностью контролировать его положение. Имейте в виду, что если его родительский элемент объявлен как относительный, тогда его абсолютное происхождение относительно него - в этом случае вам нужно будет добавить элемент в document.body или нерелятивный объявленный элемент.
Дэн Хеберден

4
Какая? Позиция не имеет значения, если элемент даже не отображается .
Грег Хьюгилл

В Firefox сообщения проверки для входов с помощью display: noneпоявляются в бессмысленном месте (вверху экрана, закрывая вкладки). Кажется, что неотображаемые элементы действительно беспозиционны, по крайней мере, в этом браузере.
Brilliand

4

position: fixed;также "вытолкнет" элемент из потока, как вы говорите. :)

position: absoluteдолжно сопровождаться позицией. напримерtop: 1rem; left: 1rem

position: fixedтем не менее, поместит элемент там, где он обычно появится в соответствии с потоком документов, но не позволит ему перемещаться после этого. Он также эффективно устанавливает высоту на 0 пикселей (по отношению к dom), чтобы следующий элемент перемещался над ним.

Это может быть довольно круто, потому что вы можете установить position: fixed; z-index: 1(или любой другой z-index, который вам нужен) так, чтобы он «появлялся» над следующим элементом.

Это особенно полезно для заголовков с фиксированной позицией, которые остаются вверху, например, при прокрутке.


3

Плавающий его реорганизует поток, но позиция: абсолютный - единственный способ полностью удалить его из потока документа.


2

Я знаю, что этому вопросу несколько лет, но я думаю, что вы пытаетесь сделать так, чтобы большой элемент, например изображение, не мешал высоте div?

Я просто столкнулся с чем-то похожим, где я хотел, чтобы изображение переполняло div, но я хотел, чтобы оно было в конце строки текста, поэтому я не знал, где оно окажется.

Решение, которое я придумал, заключалось в том, чтобы поместить высоту margin-bottom: -element, поэтому, если изображение имеет высоту 20 пикселей,

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

например.

Таким образом, он перемещался по внешней стороне div и оставался рядом с последним словом в строке.


1

Для полноты: floatсвойство также удаляет элемент из потока HTML, например

float: right

-1

Попробуйте использовать это:

position: relative;
clear: both;

Я использую его, когда не могу использовать абсолютное положение, например при печати, когда вы используете, page-break-after: always;отлично работает только с position:relative.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.