2017-02-03 12 views
1

Не против прокомментированных строк. Я экспериментирую с моделью коробки, но не могу понять, почему я не могу использовать margin-top, чтобы немного поменять желтый ящик? Я могу использовать margin-left, чтобы заставить его двигаться вправо, так что мне кажется странным ... Спасибо.Почему маркер не работает, чтобы получить желтую коробку?

Я хотел бы понять, почему это происходит :)

.largebox { 
 
    width: 800px; 
 
    height: 350px; 
 
    background-color: #00f; 
 
    //padding-left: 50px; 
 
    margin-left: 10px; 
 
    //border: 2px solid black; 
 
} 
 

 
.box1 { 
 
    width: 250px; 
 
    height: 300px; 
 
    background-color: #ff0; 
 
    //display: inline; 
 
    //float: left; 
 
    //margin-right: 0px; 
 
    margin-left: 50px; 
 
    margin-top: 25px; 
 
}
<div class="largebox"> 
 
     <div class="box1"></div> 
 

 
    </div>

+0

в следующий раз сделать лучше поиск, точно такое же название уже допросили здесь – dippas

ответ

2

Это происходит благодаря margin collapsing - так border, padding к родительскому элементу или inline содержания (любой inline элемента) выключит запас рушится.

Смотреть демо ниже:

.largebox { 
 
    width: 800px; 
 
    height: 350px; 
 
    background-color: #00f; 
 
    margin-left: 10px; 
 
    border: 1px solid; /*ADDED THIS*/ 
 

 
} 
 
.box1 { 
 
    width: 250px; 
 
    height: 300px; 
 
    background-color: #ff0; 
 
    margin-left: 50px; 
 
    margin-top: 25px; 
 
}
<div class="largebox"> 
 
    <div class="box1"></div> 
 

 
</div>

+1

Отличный ответ, спасибо! – Vethica

2

Использование display:inline-block; в box1

.largebox { 
 
    width: 800px; 
 
    height: 350px; 
 
    background-color: #00f; 
 
    //padding-left: 50px; 
 
    margin-left: 10px; 
 
    //border: 2px solid black; 
 
} 
 

 
.box1 { 
 
    width: 250px; 
 
    height: 300px; 
 
    background-color: #ff0; 
 
    //display: inline; 
 
    //float: left; 
 
    //margin-right: 0px; 
 
    margin-left: 50px; 
 
    margin-top: 25px; 
 
    display:inline-block; 
 
} 
 
    
 
<div class="largebox"> 
 
     <div class="box1"></div> 
 

 
    </div>

+0

Спасибо за ваш ответ, не могли бы вы объяснить мне, почему с по умолчанию Дисплей не работает? – Vethica

+0

@Veen 'inline-block' фактически сообщает браузеру рассчитать размеры div после его размещения, а затем эти вычисления применяются. –

0

Вы можете попробовать использовать position:absolute; в .box1 так:

.box1{ 
    position:absolute; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^