Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загадка про margin, padding и div
 
 автор: Ъ   (06.02.2015 в 21:24)   письмо автору
3.3 Кб
 
 

Жили были два кода. Первый был не очень смышлёный и всё время терял свою серую зону вместе с маргином своего «младшего брата»:
<div id="старшийБрат" style="background-color: #eee">
    <div id="младшийБрат" style="margin: 25px 0 25px 0">
        Я должен быть весь в серой зоне, вместе с маргином!
    </div>
</div>


Второй был умный, и оставлял серую зону «младшему брату»:
<div id="старшийБрат" style="padding: 25px 0 25px 0; background-color: #eee">
    <div id="младшийБрат">
        Я должен быть весь в серой зоне, вместе с маргином!
    </div>
</div>


Почему первый не может быть таким же, как второй?

  Ответить  
 
 автор: Ъ   (06.02.2015 в 21:32)   письмо автору
 
   для: Ъ   (06.02.2015 в 21:24)
 

Я так понимаю, это всё «эффект схлопывания»?

  Ответить  
 
 автор: elenaki   (07.02.2015 в 10:06)   письмо автору
 
   для: Ъ   (06.02.2015 в 21:32)
 

Это - разница между margin и padding

  Ответить  
 
 автор: Ъ   (07.02.2015 в 13:55)   письмо автору
 
   для: elenaki   (07.02.2015 в 10:06)
 

Не совсем. В идеале в первом варианте второй div должен сместить края верхнее и нижнее первого div-а, и тем самым создать область вокруг себя того же фона, но он этого не делает. Только если закрыть схлопывание:
<div id="старшийБрат" style="padding: 25px 0 25px 0; background-color: #eee"> 
    <div id="младшийБрат" style="margin: 25px 0 25px 0"> 
        Я должен быть весь в серой зоне, вместе с маргином! 
    </div> 
</div>

То есть в случае данного примера поля будут не 50px, а всё равно 25px.

  Ответить  
 
 автор: Mookapek   (07.02.2015 в 18:13)   письмо автору
 
   для: Ъ   (06.02.2015 в 21:32)
 

> Я так понимаю, это всё «эффект схлопывания»?

Да. Можно исправить, добавив диву-обертке границу или сделав его плавающим. Хотя есть и другие способы.

  Ответить  
 
 автор: Ъ   (09.02.2015 в 13:22)   письмо автору
 
   для: Mookapek   (07.02.2015 в 18:13)
 

Да, методы обхода знаю, просто первый раз столкнулся с данным эффектом. Даже не знаю почему, но раньше его не наблюдалось. Мне показалось, что эффекта раньше такого не было, до последнего обновления моей таблицы стилей. Я её сократил, убрав некоторые неиспользуемые вещи. Как будто я раньше как-то совладал с этим эффектом, сам того не зная.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования