Выравнивание тегов Div по одной строке

Я пытаюсь выровнять эти три элемента div так, чтобы два поля столбца 1 находились слева, сложены друг над другом, а поле столбца 2 было справа встроено с двумя столбцами один.

Я пробовал всевозможные комбинации display:inline-block/inline и float:left; но я просто не могу заставить эти вещи выстроиться в линию

<div id = "wrapper" width = "auto">
  <div id = "left-container" style = "background-color:lightgray;width:10%;line- 
    height:95px;float:left;">
    column1
  </div>
  <div id = "left-container" style = "background-color:gray;width:10%;line-height:95px;">
    column1
  </div>
  <div id = "left-container" style = "background-color:lightblue;width:50%;line- 
    height:190px;">
    column2
  </div>
</div>

Любая помощь высоко ценится!

Не используйте встроенный css. Используйте отдельную таблицу стилей css

Lelio Faieta 02.04.2019 12:41

Есть ли у вас какие-либо ограничения на допустимые ответы, потому что это, казалось бы, идеальный случай для Макет сетки CSS.

David Thomas 02.04.2019 12:42

Также больше не используйте плавающие элементы для макета - с css3 есть гораздо лучшие способы делать что-то - например, flex или grid.

Pete 02.04.2019 12:42

Также не используйте повторяющиеся идентификаторы. Бааад практика.

Mihai T 02.04.2019 12:50

И width = "auto" как атрибут тоже ошибка. И в ваших line-height есть пробелы. Но можете ли вы вообще изменить HTML, или вы застряли в этой структуре?

Mr Lister 02.04.2019 13:06
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
2
5
98
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Используйте этот код

css

<style>
#wrapper > div{
display:inline-block;
}
</style>

Как это достигает цели OP, состоящей в том, чтобы два столбца «column1» располагались слева?

Mr Lister 02.04.2019 13:04

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

.left-container {
  float: left
}

.left-container>div {
  background-color: lightgray;
  line-height: 95px;
}

.right-container {
  background-color: lightblue;
  width: 50%;
  line-height: 190px;
  float: right;
}
<div id = "wrapper" width = "auto">
  <div class = "left-container">
    <div>
      column1
    </div>
    <div>
      column1
    </div>
  </div>
  <div class = "right-container">
    column2
  </div>
</div>

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

Ответ принят как подходящий

Что-то вроде этого?

Вы можете работать с flex.

#wrapper {
  display: flex;
}

.inner-wrapper {
  min-width: 10px;
}

.left-container:nth-of-type(1) {
  background-color: lightgray;
  width: 100%;
  line-height: 95px;
}

.left-container:nth-of-type(2) {
  background-color: gray;
  width: 100%;
  line-height: 95px;
}

.left-container:only-of-type {
  background-color: lightblue;
  width: 100%;
  line-height: 190px;
}
<div id = "wrapper" width = "auto">

  <div class = "inner-wrapper">
    <div class = "left-container" style = "">
      column1
    </div>
    <div class = "left-container" style = "">
      column1
    </div>
  </div>
  <div class = "inner-wrapper">
    <div class = "left-container" style = "">
      column2
    </div>
  </div>

</div>

Большое спасибо! бонусные баллы за то, что я взял дубликаты идентификаторов (упс) и заставил их работать с nth-of-type, я понятия не имел, что это возможно :O

Jimmy Boy 02.04.2019 13:15

@JimmyBoy Я обновил свой ответ и ознакомился с этим руководством для :n-го типа. Иногда может быть полезен.

Chris_00 02.04.2019 23:55

Я просто пишу базовый пример flexbox. Попробуйте это, я надеюсь, что это поможет вам. Спасибо

#wrapper {
  display: flex;
}

#left-container {
  display: flex;
  flex-direction: column;
  width: 100px;
}

#right-container {
  display: flex;
  width: 100px;
}

#left-container div,
#right-container div {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}
<div id = "wrapper" width = "auto">
  <div id = "left-container">
    <div style = "background-color: lightgray; height: 20px;">
      column1
    </div>
    <div style = "background-color: gray; height: 50px;">
      column1
    </div>
  </div>
  <div id = "right-container">
    <div style = "background-color: lightblue;">
      column2
    </div>
  </div>
</div>

Сетчатое решение. Использование сетка-шаблон-столбцы для указания количества и размеров столбцов для каждого столбца, а затем использование сетка-столбец и сетка-ряд для указания места размещения элементов. Элемент с классом third занимает две строки:

.wrapper {
  display: grid;
  grid-template-columns: 10% 50%;
}

.column-1 {
  background-color: gray;
}

.column-2 {
  background-color: lightblue;
}

.first {
  grid-column: 1 / 2;
  grid-row: 1 / 2;
}

.second {
  grid-column: 1 / 2;
  grid-row: 2 / 3;
}

.third {
  grid-column: 2 / 3;
  grid-row: 1 / 3;
}
<div class = "wrapper">
  <div class = "column-1 first">
    column1
  </div>
  <div class = "column-1 second">
    column1
  </div>
  <div class = "column-2 third">
    column2
  </div>
</div>

Другие вопросы по теме