html — Выровнять блоки div по высоте

Вопрос задан

Изменён 2 года назад

Просмотрен 236 раз

имеется html:

<div>
    <div>
        привет андрей
        <div>внутри андр</div>
    </div>
    <div>
        привет паша
    </div>
</div>

так же есть css:

.green_fon{ /* div */
  display: inline-block;
  background: #7def72;
  font-size: 15px;
  border-top: 5px solid #001f3f;
  margin-left: 1;
  margin-right: 1;
  margin-top: 5px;
  margin-bottom: 5px;
  padding-left: 10px;
  padding-top: 5px;
  padding-right: 10px;
  padding-bottom: 5px;
}
.blue_fon{ /* div */
  display: inline-block;
  background: #48cae2;
  font-size: 15px;
  border-top: 5px solid #001f3f;
  margin-left: 1;
  margin-right: 1;
  margin-top: 4px;
  margin-bottom: 4px;
  padding-left: 10px;
  padding-top: 5px;
  padding-right: 10px;
  padding-bottom: 10px;
}
.
green_fon2{ /* div */ display: inline-block; background: #7def72; font-size: 15px; border-top: 5px solid #001f3f; padding-left: 10px; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; margin-left: 1; margin-right: 1; margin-top: 5px; margin-bottom: 5px; } .class{ box-sizing: border-box; border: 1px solid red; justify-content: space-between; }

Не могу сделать так, чтобы эти два ‘зеленых’ были одинаковый высоты и выровнены. желательно добиться так, чтобы они были одного класса, но это не принципиально. снаружи висит вспомогательный div, я пробовал растянуть divы внутри до его границ.

  • html
  • css

Воспользуйся flexbox’ом,

.class{
display: flex;
justify-content: space-between;
}

после этого элементы станут в одну линию. затем.. удалите margin везде, у вас будет что-то типа

[1]: https://i.stack.imgur.com/RLJpw.png

затем напишите в хтмл вместо => а второй класс станет таким => в css добавьте:

. first{
display: flex;
justify-content: start-end;
margin-right: 10px;
}

Например, так

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

html — Выровнять блоки по высоте

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

Вопрос задан

3 года 11 месяцев назад

Изменён 3 года 11 месяцев назад

Просмотрен 912 раз

Предварительно прошу прощения за примитивный вопрос, но я в тупике) Пытаюсь разобраться с Bootstrap 4 и сверстать примитивную карточку товаров, за пример взял сайт dodopizza. ru. У меня не получается выровнять элементы блоки по высоте. Как сделать так, чтоб блоки выравнивались по <div>, чтоб сетка выглядела так: . Данного эффекта я добился указывая height для классов good_info и good_name явно — это криво. Как добиться этого эффекта корректным способом, адаптивно, с помощью Bootstrap.

вот код: https://jsfiddle.net/Slav4ka/eLf7283q/3/

  • html
  • css
  • css3
  • bootstrap
  • bootstrap4

Пример упростил, но принцип тот же

.wrap {
  display: flex;
}

.item {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  flex-grow: 1;
  flex-basis: 0;
}

.item img {
  width: 100px;
}

.item .description {
  display: flex;
  flex-direction: column;
  align-items: center;
}
<div>
    <div>
        <div>
            <img src="https://dodopizza-a.
akamaihd.net/static/Img/Products/Pizza/ru-RU/c6a8700b-b93e-43fc-945d-23b9bbfd4a7d.jpg" alt="example"> <p>Lorem Ipsum</p> </div> <div> <a href="#">buy</a> </div> </div> <div> <div> <img src="https://dodopizza-a.akamaihd.net/static/Img/Products/Pizza/ru-RU/c6a8700b-b93e-43fc-945d-23b9bbfd4a7d.jpg" alt="example"> <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.</p> </div> <div> <a href="#">buy</a> </div> </div> <div> <div> <img src="https://dodopizza-a.
akamaihd.net/static/Img/Products/Pizza/ru-RU/c6a8700b-b93e-43fc-945d-23b9bbfd4a7d.jpg" alt="example"> <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's.</p> </div> <div> <a href="#">buy</a> </div> </div> </div>

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Вертикальное выравнивание тега заголовка с фиксированной высотой с помощью CSS

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

спросил

Изменено 10 лет, 3 месяца назад

Просмотрено 4к раз

У меня есть тег заголовка с фиксированной шириной, который в некоторых случаях будет содержать 2 строки текста, в некоторых случаях 1.

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

Я надеюсь сделать это без изменения разметки.

  

Это две строки текста

Это 1 строка

Это две строки текста

Это 1 строка

Это две строки текста

Это 1 строка

Это две строки текста

Это 1 строка

CSS:

 h2 {
плыть налево;
поле: 5px;
отступ: 5px;
ширина: 100 пикселей;
высота: 50 пикселей;
вертикальное выравнивание: посередине; /*obvi не работает, потому что это не встроенный элемент */
выравнивание текста: по центру;
фон:#336699;
цвет:#fff;
}
 

Может быть… как селектор CSS, который определяет 2 разных свойства заполнения на основе автоматической высоты? Например, если я установил высоту на авто, и если тег заголовка превышает 60 пикселей (что было бы для 2 строк), то сделайте отступ

этим , но если автоматическая высота меньше этого, то сделайте отступ это .

 h2[высота>60px] { padding:10px 0px; }
h2[высота <60px] { padding:20px 0px; }
 

Надеюсь, это имеет смысл. Я просто не уверен, как это написать... или есть лучший способ?

См. пример.

http://jsfiddle.net/KcD3v/

Большое спасибо SO

  • css
  • заголовок
  • вертикальное выравнивание

3

Вы можете попробовать сделать что-то вроде этого:

HTML

 

Это две строки текста

Это 1 строка

Это две строки текста

Это 1 строка

Это две строки текста

Это 1 строка

Это две строки текста

Это 1 строка

CSS

 .заголовок {
    отображение: встроенная таблица; /* IE8+, Chrome, FF3+, Opera7+ */
}
ч2 {
    отображение: таблица-ячейка;
    поле: 5px;
    отступ: 5px;
    ширина: 100 пикселей;
    высота: 50 пикселей;
    вертикальное выравнивание: посередине;
    выравнивание текста: по центру;
    фон:#336699;
    цвет:#fff;
}
 

Таким образом, вы можете использовать таблицы без нарушения семантики веб-сайта. См. MDN для получения дополнительной информации о отображении и стилях таблиц.

Однако обычно только один элемент

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

Если вам не нужна кросс-браузерная совместимость (например, если вы разрабатываете расширение/веб-приложение для Chrome/Firefox), интересной альтернативой может стать даже новый flexbox.


Другим способом может быть изменение vertical-align в вашем коде на line-height , установленное на высоту вашего

элемент, но в этом случае вы ограничитесь одной строкой текста.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

css - Вертикальное выравнивание по центру div с неизвестной высотой

спросил

Изменено 6 лет, 5 месяцев назад

Просмотрено 3к раз

Я пытаюсь решить проблему вертикального выравнивания , связанную с плавающими элементами div. Все высоты неизвестны - потому что они неявно формируются только внутренними строками текста.

Вот код: https://jsfiddle.net/zjzyryae/

 # тест {
  фон: желтый;
  отображение: встроенный блок;
}
#блок1 {
  плыть налево;
  отображение: встроенный блок;
  цвет фона: серый;
}
#блок2 {
  цвет фона: зеленый;
  плыть налево;
} 
 <дел>
  <дел>
    
тест
тест
тест
тест
тест
тест
тест
тест
тест
тест
<дел> образец