Как расположить два блока рядом css
Перейти к содержимому

Как расположить два блока рядом css

  • автор:

Как расположить два блока рядом css

Аватар пользователя Вячеслав Межуревский

Для того чтобы расположить рядом для элемента, например <div>, которые по умолчанию блочные элементы, а значит занимают всю доступную ширину экрана, достаточно изменить тип отображения ( display ) на значение inline-block, и элементы встанут в ряд. Рассмотрим пример. Исходный HTML имеет вид:

С таким вариантом есть одна особенность. Если, к примеру, текст в во втором блоке будет сильно длинный, то браузер перенесет этот блок на новую строку чтобы уместить содержимое, и отобразить контент полностью.

Чтобы этого избежать можно применить другой способ, как расположить два блока рядом. Добавим в исходный HTML обертку, и назначим ему способ отображение как flex элемент. Во первых, наши элементы встанут в ряд, а во вторых, они не будут переносится на следующую строку. Вместо этого просто появится полоса прокрутки.

Два блока рядом друг с другом CSS

Два блока рядом друг с другом CSS

Два блока рядом друг с другом CSS

При формировании той или иной страницы на сайте иногда возникает необходимость создать колонки с тем или иным содержимым, которые находились рядом друг с другом. По умолчанию блоки <div> не располагаются рядом друг с другом, а идут по порядку снизу.

Вопросы по теме статьи или любые другие можно оставить на странице обсуждения.

Создание блоков в HTML

Для начала нам нужно создать в HTML два блока <div> на нашей странице:

Оформление блоков DIV рядом друг с другом по горизонтали

Два блока, расположенные в один ряд при помощи CSS

Чтобы блоки расположить рядом друг с другом в одну линию необходимо прописать в CSS двум элементам следующие параметры:

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

  • float — можно придать значения «left» и «right«, фактический означает к какой стороне прикрепить блок, можно например первый блок разместить слева, второй справа и они хорошо впишутся. Пример смотрите в конце статьи в созданном шаблоне.
  • display: block; — выводит div блоком.

Дополнительные настройки

Остальные параметры носят декоративный характер:

  • width — задаём размер блокам
  • border — настраиваем границу блоков
  • margin — внешние отступы, чтобы блоки не прилипали друг к другу

Примечание

Если же возникли трудности с вёрсткой на CSS или есть вопросы по данной статье, то задавайте их в специально созданной теме про CSS на нашем форуме.

Способы размещения блоков горизонтально

Часто на практике приходится решать задачу группирования и выравнивания контента средствами CSS. Сегодня мы рассмотрим основные способы размещения элементов в горизонтальный ряд.

Материал данной статьи призван помочь начинающим веб-дизайнерам в освоении приемов верстки web-страниц.

Размещение блоков горизонтально

Из чего выбрать или методы

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

  • метод «Float»
  • метод «Inline-block»
  • метод «Table-cell»

Каждый из них имеет свои преимущества, области применения и недостатки. Рассмотрим их по порядку.

«Для рывка» или немного теории

Все структурные элементы HTML можно условно разделить на:

Инлайновые (встроенные) — типа img, span и им подобные. У нас нет возможности менять их фон и задавать им произвольные линейные размеры.

Блочные — занимающие всю ширину родительского блока, всегда начинаются с новой строки — p, h, div.

Наглядный пример встроенных и блочных структур приведен ниже:

строчные и блочные элементы

Метод «Float»

Как уже известно (см. выше), блочный элемент размещается с новой строки вне зависимости от заданной ему ширины (width). По этому, уменьшая горизонтальный размер div-а, в рядок блочки не построить.

Наиболее популярный (особенно среди начинающих верстальщиков), метод решения это использование свойства float.

CSS свойство float обрело большую популярность и практическую ценность после перехода от табличного способа верстки к блочному.

Float: left (right) трансформирует блочный элемент в плавающий, выравнивает по левому (правому) краю родительского блока и устанавливает обтекание справа (слева) текстом и другими элементами.

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

И внешнюю таблицу стилей с следующим содержимым:

В результате получаем четыре блока, расположенные в горизонтальный ряд и выровненные по левому краю родительского блока:

размещение блоков float left

Иногда на практике бывает необходимо выровнять блоки по правому краю родительского элемента. Изменим обтекание блоков в предыдущем примере:

размещение блоков flooat right

Обратите внимание на надписи, расположенные в блоках. На первый взгляд может показаться, что пример отработал криво. Но на самом деле, браузер обработал код правильно: прочитал блоки сверху вниз, и сделал то, что мы от него просили — выровнял по правому краю. Учтите этот момент при использовании свойства float: right.

Для того, чтобы прервать обтекание элементов с какого-то конкретного места, используйте строчку:

В рассмотренном выше примере расстояния между блоками мы задавали при помощи отступа margin-right. Но что делать, если у вас при верстке страницы возникла задача: разместить блоки в ряд, центрировать их, да и еще чтобы отступы были только между ними, но никак не снаружи?

Алгоритм действий следующий.

В результате получаем такую картину:

центрированный Float left

Ну что же, всех практических ситуаций не рассмотришь, по этому перейдем к общим особенностям.

    Ширина блоков должна быть фиксированной. Иначе получите что-то такое:

float left без полей

Метод «Inline-block»

Как строчные так и блочные элементы имеют свои преимущества и недостатки в контексте каждой конкретной решаемой задачи. А что если объединить их преимущества?

Встречайте, гвоздь программы — свойство display: inline-block.

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

Блочно-строчный элемент имеет следующие свойства:

  • высота и ширина блока определяется автоматически по содержимому и значению отступов (padding)
  • высота и ширина блока может быть задана фиксировано
  • Отсутствует эффект схлопывания границ.

Рассмотрим пример создания простого навигационного меню, содержащего картинку и ссылку.

В результате получаем такую менюшку:

inline block

Как видим, получилось кривовато… Но расстраиваться мы не намерены, по-этому применяем к нашим дивам CSS свойство vertical-align (подробнее см. ниже):

Теперь наша навигационная панель выровнялась по верхней линии:

display inline block

Конечно, приведенный пример является примитивным, но я уверен, что на его основе вы сможете создать настоящий шедевр.

  1. При уменьшении ширины окна обозревателя невмещающийся элемент перемещаеться вниз (как в случае float: left)
  2. Элемент, отображаемый как inline-block чувствителен к пробелам. Это приводит к тому, что даже при нулевых значениях margin между блоками будет зазор. Зазор этот зависит от применяемого шрифта. Для примера рассмотрим список:
    HTML:

Результатом рендеринга такого кода будет следующая картина:

inline block зазор

Есть несколько способов убрать зазоры:

    подобрать отрицательные значения margin:

Результатом применения любого из выше перечисленных приемов будет следующая структура:

inline block без зазора

    Для древних версий Firefox добавляем строчку:

Метод «Table»

Табличный подход долгое время был стандартом верстки, что в первую очередь объяснялось простотой и интуитивной понятностью разметки. Скорее всего, именно это и послужило причиной появления табличного форматирования в CSS.

Свойства display: table (table-cell, inline-table), позволяют выполнять табличное форматирование элементов без применения HTML таблиц.

Для горизонтального размещения блоков нам понадобится родительский элемент, имеющий свойство display: table, и дочерние элементы (ячейки), имеющие свойство display: table-cell:

2 div в ряд: один резиновый, другой фиксированный

Необходимо на страничке сделать 2 блока, которые бы в сумме занимали всю возможную ширину. Правый блок узкий и не должен изменять своего размера при растяжении или сжатии страницы, а левый должен занимать всю оставшуюся ширину. Попробовал своими силами, но либо левый блок занимает не всё пространство, либо выдавливает правый на новую строку, а такого быть не должно.

Vadim Ovchinnikov's user avatar

Я знаю, что Flexbox так может. Его, правда, стоит применять с осторожностью, в IE он багованный:

MobiDevices's user avatar

art-solopov's user avatar

Посмотрите внимательно, у вас .div2 сейчас никак не фиксирован. Задайте ему width явно.

Для вашей задачи display: inline-block не нужно, уберите его. Уберите из .div1 параметр max-width .

Поставьте для .div1 свойство float: right, если блоки пшменяютмя местами, исправил их положение в html-коде.

MobiDevices's user avatar

Знать современные возможности flexbox и calc хорошо, но вот знать основы — куда важнее:

P.S. Порядок блоков в разметке важен.

MobiDevices's user avatar

Подобный вопрос уже обсуждался.

В вашем коде нужно применять либо float , либо inline-block . и вычислять размер резинового блока с помощью функции calc . Если использовать float , то не забывайте про clear , при использовании inline-block необходимо у элемента родителя убить размер шрифта, для того чтобы убить пробелы между блоками,которые возникнут так как блоки приобретут все свойства строчных элементов. vertical-align: top в данном случае задается для того,что-бы блоки не съезжали вниз при добавлении текста в них. Пробуйте эксперементируйте. Однако разметка на float уже устарела и все чаще используют именно inline-block . Более продвинутые технологии позволяют использовать Flex, но его поддерживают только современные браузеры. и если ваш проект не нацелен на кроссбраузерность, то лучше конечно использовать его.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *