Открыть меню    

Пространство между inline-block элементами

Дело вот в чем: inline-block элементы располагаются последовательно таким образом, что между ними возникает пустое пространство.

Другими словами взгляните на разметку и результат:

нежелательное пустое пространство между inline-block элементами

HTML

<nav>
<a href="#">One</a>
<a href="#">Two</a>
<a href="#">Three</a>
</nav>

CSS

nav a {
display: inline-block;
padding: 5px;
background: red;
}

inline_block элементы и пустая область между нимиC другой стороны часто требуется расположить элементы один за другим - впритык. Например, для горизонтальной навигации, что поможет нам избежать небольших некликабельных зазоров. Вряд ли это баг. Скорее это свойство элементов расположенных на одной линии. Ведь вам требуется пространство между словами, когда вы печатаете. Верно? Вот и пространство между встроенными блочными (inline-block) элементами подобно промежутку между словами.

Удаляем пустое пространство между inline-block элементами

HTML Разметка

Удивительно, но пустое пространство образуется из-за пробелов и переносов в разметке между элементами. Например, написав код так, как показано выше, вы получите пробелы межу элементами в окне браузера.

Итак, чтобы удалить пустое пространство кодируйте так, как показано ниже:

HTML

<ul>
  <li>
   one</li><li>
   two</li><li>
   three</li>
</ul>

или

HTML

<ul>
  <li>one</li
  ><li>two</li
  ><li>three</li>
</ul>

или с комментариями...

HTML

<ul>
  <li>one</li><!--
  --><li>two</li><!--
  --><li>three</li>
</ul>
удаляем пустое пространство между inline-block элементами при помощи HTML разметки

Довольно оригинально и забавно, но уловка сработает. HTML довольно странный язык, местами.

Отрицательное поле

Вы можете сдвинуть элемент назад, задав ему отрицательное поле равное 4px (иногда требуется корректировка в зависимости от размера шрифта элемента-родителя). Очевидно, возникнут проблемы в старых браузерах от IE (ie6/ie7), но, если для вас чистота разметки важнее поддержки старых IE, то данный метод хорош.

CSS

nav a {
  display: inline-block;
  margin-right: -4px;
}

Пропускаем закрывающий тег

Вы можете опускать закрывающие теги, HTML5 это допускает. Однако такой код не совместим с XHTML.

CSS

<ul>
  <li>one
  <li>two
  <li>three
</ul>

Размер шрифта равен 0

Если у элемента-родителя шрифт равен 0, то пустое пространство исчезает.

CSS

nav {
  font-size: 0;
}
nav a {
  font-size: 16px;
}  

Сделайте элементы плавающими

Иногда совсем не требуется inline-block элементы. Достаточно сделать элементы плавающими (свойство float со значениями left или right). Минус в том, что вы не сможете центрировать плавающие элементы, назначив блоку-родителю объявление text-align:center. Однако наполнить плавающий элемент, установить высоту (height), ширину (width) и подложку (padding) вы будете в состоянии.

Источник

Комментарии к статье

Добавить комментарий