Задать вопрос
trevoga_su
@trevoga_su

Как сделать 2 колонки с помощью inline-block?

Почему это не работает??!

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <style>
	* {
		padding:0;
		margin:0;
	}

	html, body {
		width:100%;
		height:100%;
	}

   div {
		display:inline-block;
		border:1px solid #ccc;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
   }
   
   .box1 {
		width:50%;
   }
   .box2 {
		width:50%;
   }
  </style>
 </head>
 <body> 
  <div class="box1">11111</div>
  <div class="box2">222</div>
 </body>
</html>
  • Вопрос задан
  • 1434 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
rajdee
@rajdee
Front-end developer
Попробуйте вот так:
<div class="box1">11111</div><div class="box2">222</div>

или так:
<div class="box1">11111</div><div
 class="box2">222</div>

Проблема в переводе строки между div, который воспринимается, как отступ
Более подробно можно почитать, например, вот тут
Ответ написан
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
В результате показанного вами форматирования (пробельные символы) образуются 3 текстовых узла — первый ребёнок в body, последний ребёнок и один между блоками. Первые два не влияют на расчёт положения блоков, а вот третий будет учитываться, поскольку находится между строчными элементами.

Вам потребуется обнулить размер шрифта в контейнере, в котором находятся блоки с display:inline-block. Вернуть размер можно с помощью rem, для этого не забыв указать размер шрифта в html (а не по старинке в body)

Однако, для современных браузеров это не требуется — есть display:flex. А схему со строчно-блочными элементами, обнулением/возвратом размера шрифта сделать только для старых IE (9 и 8). А если вы намереваетесь и IE7 захватить, то нужно помнить, что в нём display:inline-block можно установить только для строчных элементов (кто ещё помнит hasLayout Model?:).

В итоге так (с учётом корректировки Руслан Абдуллаев относительно фоллбэков для старых крокодилов):

<style>
#container {
	display: -webkit-box; /* iOS 6-, Safari 3.1-6 */
	display: -ms-flexbox; /* IE 10 */
	display: -webkit-flex; /* Chrome */
	display: flex; /* Opera 12.1, Firefox 20+ */
}
.column {
	width: 50%;
}
.content.c1 {
	height: 300px;
	background: #cf9;
}
.content.c2 {
	height: 500px;
	background: #c9f;
}
</style>
<!--[if IE]>
<style>
#container {
	font-size: 0;
}
.column {
	display: inline-block;
	vertical-align: top;
	font-size: 1rem;
}
</style>
<![endif]-->
...
<div id="container">
	<div class="column">
		<div class="content c1"></div>
	</div>
	<div class="column">
		<div class="content c2"></div>
	</div>
</div>

Часто встречается вариант простановки класса в html для разных версий IE. Тогда можно оперировать этими классами в общих стилях.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@redbis
Вот тебе ответ ruseller.com/lessons.php?id=1429&rub=29

А вообще можно сделать просто вот так
<div class="box1">11111</div><div class="box2">222</div>,
в одну строчку.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы