Как вынуть элемент из flow, так чтобы остальные элементы не сдвинулись?

Есть три дива: A, B, C. При рендеринге по-умолчанию — position: static — каждый из них располагается под другим.

Задача: вынуть «B» из дефолтоного течения (flow) через присвоение ему position: fixed или absolute. При этом нижний див «С» не должен сдвинуться наверх, на место вынутого «B». Возможно ли реализовать последнее средствами чистого CSS?

Знаю про приём клонирования элемента, но хотелось бы избежать такого использования Яваскрипта.
  • Вопрос задан
  • 3613 просмотров
Пригласить эксперта
Ответы на вопрос 6
UZER2006
@UZER2006
Если вы всё-таки вынимаете его из потока – другие это не смогут не заметить.
Если же вам только нужно поменять положение элемента – можно воспользоваться position:relative, но тогда расчёт положения будет вестись относительно изначального положения, а не начала координат.
Ответ написан
Комментировать
fear86
@fear86
Developer
Ну вариантов только 2

1 — Подставить на js заглушку враппер той же высоты (или врапер предопределить заранее и просто устанавливать ему height относительно div)
2 — Зная высоту блока заранее, отодвинуть соседа через Margin/Padding

Если второй вариант невозможен то лично я за JS, лучше он чем Cатана в css и html ))
Ответ написан
Комментировать
CodeByZen
@CodeByZen
php, js, my/mssql, sqlite, html, css, it-consult
Сделайте для C margin-top на высоту вынутого блока. Если высота известна заранее. Если нет, то никак (на чистом CSS).
Ответ написан
Комментировать
position: fixed|absolute как раз таки и изымает элемент из течения.
Ответ написан
Комментировать
@Sayonji
В каком смысле вы хотите выкинуть элемент из течения, если разметка не должна этого заметить?
А если речь только о трех дивах, то получится разве что зная высоту среднего дива (понятно) или выкинув третий див тоже (опять же понятно).
Ответ написан
Комментировать
SerDIDG
@SerDIDG
Если B задаётся высота, то что-то вроде такого можно.
jsfiddle.net/AvyzL/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы