2015-12-08 2 views
0

Я хочу, чтобы четыре divs отображались на одной строке. Я могу сделать три из них сделать это, но другой не будет, если я не сделаю общую ширину, что четыре divs занимают менее 100%.Почему эти четыре divs не отображаются в одной строке?

Этого не должно быть, правда, правда? Они должны уметь, в общей сложности, занимать 100% ширины страницы, если нет ничего «на пути»? Ниже приведен фрагмент моего кода, что я имею в виду.

* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
html, 
 
body { 
 
    overflow: hidden; 
 
    font-size: 10px; 
 
} 
 
.wrapper { 
 
    position: absolute; 
 
    bottom: 0; 
 
    width: 100%; 
 
    margin-bottom: 0.5%; 
 
    margin-left: 0.5%; 
 
    margin-right: 0.5%; 
 
} 
 
.inner { 
 
    display: inline-block; 
 
    vertical-align: top; 
 
    width: 25%; 
 
} 
 
.half { 
 
    width: 12.5%; 
 
}
<div class="wrapper"> 
 
    <div class="inner" style="background-color: red;">Div 1</div> 
 
    <div class="inner" style="background-color: blue;">Div 2</div> 
 
    <div class="inner" style="background-color: green;">Div 3</div> 
 
    <div class="inner"> 
 
    <div class="inner half" style="background-color: purple;">Div 4 - First Half</div> 
 
    <div class="inner half" style="background-color: Teal;">Div 4 - Second Half</div> 
 
    </div> 
 
</div>

Я не проверил, чтобы убедиться, совместив дивы на одной и той же линии, используя float: left будет иметь значение проблемы, как мне нужно использовать display: inline-block для выравнивания других бедрам дивы в моем фактическом коде.

Значит ли кто-нибудь знает, как получить последний, чтобы появиться на одной строке?

+1

Это потому, что [встроенные элементы уважать пробелы] (http://stackoverflow.com/questions/19038799/why-is-there-an-unexplainable-gap-between-these-inline-block-div- элементы/19038859 # 19038859) в разметке, что означает, что между элементами создается дополнительное пространство. Либо удалите разрывы строк, либо выполните одну из других альтернатив в связанном ответе. –

+0

Возможный дубликат [Почему эти 4 встроенных блока не подходят в контейнере?] (Http://stackoverflow.com/questions/32801095/why-dont-these-4-inline-block-boxes-fit -neatly-in-their-container) –

+0

@JoshCrozier Удаление всех перерывов не является швом, чтобы сработать. – crossboy007

ответ

1

Потому что вам нужно добавить float: left; к внутреннему, чтобы заставить его вести себя так, как ожидалось.

Также Адам прав, 12,5% будет составлять 12,5% от уже имеющегося контейнера шириной 25%. Я удалил внутренний класс из половины divs и изменил их ширину на 50%.

* { 
 
    margin: 0; 
 
    padding: 0; 
 
    box-sizing: border-box; 
 
} 
 

 
html, 
 
body { 
 
    overflow: hidden; 
 
    font-size: 10px; 
 
} 
 

 
.wrapper { 
 
    position: absolute; 
 
    bottom: 0; 
 
    width: 100%; 
 
    margin-bottom: 0.5%; 
 
    margin-left: 0.5%; 
 
    margin-right: 0.5%; 
 
} 
 

 
.inner { 
 
    display: inline-block; 
 
    vertical-align: top; 
 
    width: 25%; 
 
    float:left; 
 
} 
 

 
.half { 
 
    float:left; 
 
    width: 50%; 
 
}
<div class="wrapper"> 
 
    <div class="inner" style="background-color: red;">Div 1</div> 
 
    <div class="inner" style="background-color: blue;">Div 2</div> 
 
    <div class="inner" style="background-color: green;">Div 3</div> 
 
    <div class="inner"> 
 
    <div class="half" style="background-color: purple;">Div 4 - First Half</div> 
 
    <div class="half" style="background-color: Teal;">Div 4 - Second Half</div> 
 
    <div style="clear:both;"></div> 
 
    </div> 
 
</div>

1

Ваш CSS-doenst содержит класс, называемый «внутренняя половина», поэтому вы объединяете два. У вас многократная ширина. Ваши первые звонки внутренние, поэтому требуется 25% + 12,55

+0

Не второй переопределяет первый? – crossboy007

+0

Нет, они складываются. –

+0

Спасибо Адаму, мое плохое, исправит это сейчас :) – crossboy007

1

Попробуйте clearfix. Просто примените class="clearfix" к родительскому элементу. Это самый простой и более современный способ по сравнению с поплавками. Большим преимуществом является то, что вы можете повторно использовать его по всему HTML DOM намного проще, чем подход, который вы принимаете.

.clearfix:after { 
    visibility: hidden; 
    display: block; 
    font-size: 0; 
    content: " "; 
    clear: both; 
    height: 0; 
} 
.clearfix { display: inline-block; } 
/* start commented backslash hack \*/ 
* html .clearfix { height: 1%; } 
.clearfix { display: block; } 
/* close commented backslash hack */ 
Смежные вопросы