2015-11-03 3 views
3

может кто-нибудь объяснить, почему div не вписывается в одну строку? Все div имеют ширину 20% минус 20px. Первые четыре div имеют правое поле 25px. 20 * 5 = 100px 25 * 4 = 100pxCSS3 calc для получения 100% -ной ширины

Я не понимаю.

HTML:

<div class="one-fifth"> 
1 
</div> 

<div class="one-fifth"> 
2 
</div> 

<div class="one-fifth"> 
3 
</div> 

<div class="one-fifth"> 
4 
</div> 

<div class="one-fifth"> 
5   
</div> 

CSS:

.one-fifth{ 
    width:calc(20% - 20px); 
    display:inline-block; 
    background-color:red; 
} 
.one-fifth:not(:last-child){ 
    margin-right:25px; 
} 

Здесь JSFiddle: https://jsfiddle.net/d6dw7bcL/1/

Спасибо!

+2

инлайн-блочные элементы не прилипают друг к другу, если HTML-код имеет пространство между ними: см http://stackoverflow.com/questions/5078239/how-to- remove-the-space-between-inline-block-elements –

+0

Большое спасибо. Я этого не знал. Теперь все ясно – dezimar

ответ

2

Пространства добавляют ширину.

Комментарий их так:

</div><!-- 

--><div> 

См работает пример here.

Но комментарии - это самый простой способ сделать это. Есть много других методов (некоторые из других ответов здесь) объяснены на CSS-Tricks.com.

+0

Почему все эти ответы были опущены (кроме @ nkmol's)? Что-то подозрительное здесь ... –

1

Обычно я использую комментарии для визуального разделения divs, но сохраняю их без пробелов. Как это:

<div class="one-fifth">1</div><!-- 
--><div class="one-fifth">2</div><!-- 
--><div class="one-fifth">3</div><!-- 
--><div class="one-fifth">4</div><!-- 
--><div class="one-fifth">5</div> 
+0

Whoa! Копируем мой ответ! =) –

+0

Ну, я сделал JSFiddle и получил первый ... = P –

+0

@ Jonathan Вы выигрываете :) –

2

Действительно пробельные после DIV проблема. Для того, чтобы удалить пробелы только с помощью CSS вы можете просто float элементы:

.one-fifth { 
    float: left; 
} 

JSFiddle

1

Первоначально я думал, что проблема с запасом, но реальная проблема с инлайн-блок. Если вам действительно нужно использовать встроенный блок, вы можете выбрать некоторые решения, изменяющие html-код, и использовать комментарии для удаления этого интервала. Я бы скорее определил эту ответственность для CSS, поэтому вы можете определить родительский div с размером шрифта: 0 и переопределить размер шрифта в ваших div. Смотрите этот пример

body { 
 
    margin: 0; 
 
} 
 
.parent { 
 
    font-size: 0; 
 
} 
 
.one-fifth { 
 
    width: calc(20% - 20px); 
 
    display: inline-block; 
 
    background-color: red; 
 
    letter-spacing: 0; 
 
    font-size:12px; 
 
} 
 
.one-fifth:not(:last-of-type) { 
 
    margin-right: 25px; 
 
}
<div class="parent"> 
 
    <div class="one-fifth"> 
 
    1 
 
    </div> 
 

 
    <div class="one-fifth"> 
 
    2 
 
    </div> 
 

 
    <div class="one-fifth"> 
 
    3 
 
    </div> 
 

 
    <div class="one-fifth"> 
 
    4 
 
    </div> 
 

 
    <div class="one-fifth"> 
 
    5 
 
    </div> 
 
</div>

+0

Это потому, что вы используете 'margin'' 20px' вместо '25px' – nkmol

+0

Это правда, я изменил свой ответ сейчас. Спасибо за наблюдение nkmol –