mQm
@mQm
https://medium.com/@gearmobile

CSS — блок-потомок поверх блока-родителя?

Прошу помощи.

Вопрос заключается в следующем. Наваял тут себе детальки по mockup - codepen.io/gearmobile/pen/EjVWab.

Все располагается (схематично) как и должно быть. Но вот вопрос один у меня остался.

Блок .middle__inner располагается как и задумано только в том случае, если у блока-родителя .middle есть border или же padding-top & padding-bottom.

Если же у блока .middle нет border или padding, то блок-потомок .middle__inner не будет "выглядывать" из блока-родителя .middle (margin-top: -50px не будет работать).

Толи я что-то знал и забыл, толи не знал чего-то вовсе. Подскажите, почему так происходит?

P. S.
Только сейчас разглядел - у меня даже желаемого не получилось. Блок-потомок выглядывает не на равное расстояние сверху и снизу относительно блока-родителя. Для блока-потомка нужно задавать margin-top: -60px (компенсация padding-top: 10px). У меня такое ощущение, что я какую-то фигню наваял и все это можно сделать лучше. Так?
  • Вопрос задан
  • 579 просмотров
Пригласить эксперта
Ответы на вопрос 2
teotlu
@teotlu
Навёрстываю упущенное
Уберите у .middle свойство padding и добавьте:
display:inline-block;
vertical-align:top;

Без padding у вас блок не выглядывает потому, что margin перебрасывается на блок-родитель, и он тоже перемещается на 50 пикселов выше (если через devtools посмотрите, то увидите). Чтобы это не происходило, нужно вырвать блок из потока. Для этого можно использовать, к примеру, display: inline-block, display: table-cell, float и overflow: hidden. Последнее используют для этого чаще всего, но вам это не подходит, блок обрежется. Зато inline-block — самое то.
А вот неодинаково выглядывал ваш блок именно из-за padding :)

P.S. В данном случае у вас задана ширина 100%, поэтому display: inline-block никак не повлияет на отображение, что есть хорошо.
P.P.S. Вот форк, на всякий случай.
Ответ написан
Комментировать
andykov
@andykov
Shit happens
или можете позиционировать блок абсолютом с выравниванием по центру как вам и нужно, форк
Ответ написан
Ваш ответ на вопрос

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

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