Выравнивание css по низу: Как прижать элемент к низу или верху родительского элемента — Site on!

html — CSS прижать блок к низу родителя

Вопрос задан

Изменён 7 лет 4 месяца назад

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

есть конструкция:

<div>
   <div>
      <div>
       вывод информации
      </div>
      <ul>
       часть навигации
      </ul>
   </div>
   <div>
      <div>
      еще информация
      </div>
      <ul>
      еще часть навигации
      </ul>
   </div>
</div>

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

как сделать так, чтоб блоки main_info и sub_info были одинаковыми по высоте(выравнивались по макс высоте), и элементы навигации были прибиты к низу родительских блоков?(были в одну линию)

предвижу вопросы «зачем такое размещение?» по условиям заказчика, в sub_info в зависимости от прав пользователя будут разные свистоперделки, от такой конструкции до картинки/формы/тупого текста.

..

  • html
  • css

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

#main_info, #sub_info {
  position: relative;
}
#main_info ul, #sub_info ul {
  position: absolute;
  left: 0;
  bottom: 0;
}

вот только списки при этом выпадут из потока, Вам придется под них создавать отступы внутри родителей (padding-bottom = высота ul).

На счет равенства по высоте в голову приходит только эмуляция таблицы: display table-row и table-cell (должно прокатить, см. в спецификации CSS).

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

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

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

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

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

Почта

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

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

Почта

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

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

Вертикальное выравнивание строчных элементов.

| CSS-Tricks по-русски

В CSS есть такое свойство, называется vertical align

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


img {
	vertical-align	: middle;
}

Обратите внимание, что в этом случае использования, свойство применяется к элементу img. Поскольку изображения являются строчными элементами, то располагаются они в строке, как если бы они были простым текстом. Но что именно значит «располагаются в строке»? Вот именно здесь появляется понятие «вертикальное выравнивание».

Атрибут может принимать следующие значения: baseline, sub, super, top, text-top, middle, bottom, text-bottom, length, или значение в процентах..

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

Как поступать в таком случае я расскажу в отдельной статье.

Baseline

Значением по умолчанию для vertical-align является baseline. Изображения будут находиться на одной линии с текстом. Обратите внимание, что выступающие элементы символов, выступают за базовую линию. Картинки не выравниваются по этим выступам, поскольку это не базовая линия.

Middle

Возможно, наиболее используемое значение для vertical-align — это «middle» для изображений-иконок. Результат получается довольно кросс-браузерным.

Браузер центрирует высоту текста в пикселях с высотой картинки, опять же, в пикселях:

Необходимо запомнить, если изображение больше чем текущий размер шрифта и высота строки, то оно будет «вытолкнуто» вниз, если это необхоимо.

Text-bottom

Отличается от baseline тем, что изображение выравнивается по нижней линии текста (не базовая линия, а по линии выступающих частей текста). Картинки могут быть выравнены по этой линии таким образом:

Text-top

Противоположностью значения text-bottom является text-top. Самая высокая точка строки текста при текущем размере шрифта. Таким образом вы можете выровнять изображение по этой линии. Обратите внимание, что в примере используется шрифт Georgia, у которого, возможно, есть элементы выше, чем на рисунке. Поэтому вы видите небольшой отступ.

Top и Bottom

Top и Bottom работаю подобно свойствам text-top и text-bottom, но при выравнивании расчёт происходит не по высоте текущего текста, а по высоте максимального элемента в строке (например другой картинки). И при расопложении учитывается именно его верх (или низ).

Sub и Super

Эти значения используются для верхних (superscript) и нижних (subscript) индексов. При использовании этих значений, элементы выстраиваются таким образом:

Vertical Align on Table Cells

В отличии от картинок, у таблиц по умолчанию используется выравнивание по центру (middle).

Если вы хотите выровнять текст по верху или низу ячейки, используйте значения

top

и

bottom

для

vertical-alignment

:

Для вертикального выравнивания в ячейках таблицы, лучше всего использовать только эти значения (top, middle, bottom). Использование других значений может привести к непредсказуемым результатам в разных броузерах. Например, text-bottom прижимает текст к низу в IE 6, а в Safari 4 — к верху. Установка значения sub выравнивает по центру в IE 6, а в Safari 4, опять же, по верхней линии.

Vertical Align и элементы Inline-Block

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

Inline-block-элементы, при вертикальном выравнивании, ведут себя точно так же, как картинки. Однако, стоит помнить, что не все броузеры обрабатывают inline-block-элементы одинаково, и поэтому vertical-align может не оправдать ваших ожиданий. Хотя это уже другая история…

Атрибут «valign»

Иногда вы можете встретить атрибут «valign» для вертикального выравнивания в ячейках таблицы (например, <td valign=top>. Стоит отметить, что этот атрибут является устаревшим и не должен использоваться. Да и зачем, если вы можете добиться желаемого, используя CSS.

css — Выровнять текст по нижнему краю div

спросил

Изменено 2 года, 11 месяцев назад

Просмотрено 396 тысяч раз

Я пытался выровнять свой текст по нижней части div из других сообщений и ответов в Stack Overflow. Я научился справляться с этим с помощью различных свойств CSS. Но я не могу это сделать. В основном мой HTML-код выглядит так:

 <дел>
  Текст

Эффект в том, что в FF я просто получаю вертикальную линию (div в свернутом виде), а текст пишется рядом с ней. Как я могу предотвратить схлопывание div , но при этом ширина соответствует тексту?

  • css
  • html
  • текст
  • вертикальное выравнивание

Flex Solution

Совершенно нормально, если вы хотите работать с дисплеем : table-cell решение. Но вместо того, чтобы ломать его, у нас есть лучший способ сделать то же самое, используя display: flex; . flex — это то, что имеет достойную поддержку.

 .обернуть {
  высота: 200 пикселей;
  ширина: 200 пикселей;
  граница: 1px сплошная #aaa;
  поле: 10 пикселей;
  дисплей: гибкий;
}

.wrap диапазон {
  выравнивание: flex-end;
} 
 <дел>
  Выровнять меня по нижнему краю

В приведенном выше примере мы сначала устанавливаем родительский элемент равным дисплей: гибкий; и выше, мы используем align-self to flex-end . Это поможет вам поместить элемент в конец родительского элемента flex .


Старое решение (Действительно, если вы не хотите использовать

flex )

Если вы хотите выровнять текст по нижнему краю, вам не нужно писать для этого так много свойств, используя

display: table- клетка; с по вертикали: снизу; достаточно

 div {
  отображение: таблица-ячейка;
  вертикальное выравнивание: снизу;
  граница: 1px сплошная #f00;
  высота: 100 пикселей;
  ширина: 100 пикселей;
} 
 
Привет

(Или JSFiddle)

4

Теперь вы можете сделать это с помощью Flexbox justify-content: flex-end now:

 div {
  дисплей: гибкий;
  выравнивание содержимого: flex-end;
  элементы выравнивания: flex-end;
  ширина: 150 пикселей;
  высота: 150 пикселей;
  граница: сплошная 1px красная;
}
   
 <дел>
  Что-то, чтобы выровнять

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

5

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

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

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

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

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

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

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

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

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

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

CSS вертикальное выравнивание: text-bottom; — Переполнение стека

спросил

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

Изменено 3 года, 8 месяцев назад

Просмотрено 166 тысяч раз

Привет! Я пытаюсь расположить текст в нижней части

. Ни vertical-align:text-bottom; или вертикальное выравнивание: по низу;

Проблема в том, что это мои кнопки навигации, и если я нажимаю их, они смещаются.

Можно ли обойти это с помощью моего CSS?

 a:ссылка {цвет:#452809}
a: hover {украшение текста: подчеркивание; цвет: # f00}
а: посетил {цвет: # 3886e0}
.fleft {с плавающей запятой: слева}
.испуг {поплавок:право}
.очистить {очистить:оба}
* {граница:0;маржа:0}
**тело {шрифт: 12px Tahoma, Arial, Helvetica, без засечек, цвет: # 666, фон: # 3cb40d}
#main {margin:0 auto;width:780px;background:#fff url(images/vitalbodyhealth.gif) без повторов по центру вверху}
#header {ширина: 780 пикселей; поля: 10 пикселей; высота: 210 пикселей}
#logo {padding-right:10px;text-align:right;padding-bottom:9px; высота: 150 пикселей; выравнивание по вертикали: текст по низу}
#logo a {text-decoration:none;text-transform:lowercase;стиль шрифта:italic;размер шрифта:16px;цвет:#fff;начертание шрифта:жирный}
# логотип h3 {размер шрифта: 10px}
#buttons {padding-top:0px;высота:40px;ширина:780px}
#кнопки li {display:inline}
#кнопки {display:block;float:left;width:80px;height:26px;text-align:center;text-decoration:none;color:#fff;font-weight:bold;font-size:14px;padding.
-сверху:0px;поле-слева:12px} #buttons a: hover {ширина: 80 пикселей; высота: 36 пикселей; оформление текста: подчеркивание} #content {width:720px;margin:0 auto;padding:20px}** .inner_copy {граница:0;цвет:#f00;поплавок:справа;ширина:50%!важно;маржа:-100% 0 0 0;переполнение:скрыто;высота строки:0;заполнение:0;размер шрифта: 11 пикселей} #left {ширина: 450 пикселей; отступы: 10 пикселей; фон:#EFEFEF} #слева h2, #слева h3 {цвет:#3cb40d;поле:0} #left h2 {размер шрифта: 24px; отступ: 0} #left h3 {размер шрифта: 18 пикселей; верхняя часть отступа: 10 пикселей} # оставил {color:#3886e0} #left a: hover {text-decoration: none; color: # f00} #left a:посетил {color:#3886e0} #право {поплавок:право;ширина:240px; фон:#EFEFEF} #боковая панель {ширина:240px;фон:#EFEFEF} #sidebar ul {margin:0;padding:0;list-style:none} #боковая панель li {margin-bottom:15px} #sidebar li ul {padding:10px;border-top:none} #sidebar li li {margin:0;padding:3px 0} #sidebar li h3 {высота: 36 пикселей; поля: 0; отступы: 10 пикселей 0 0 20 пикселей; фон: # 47872B; размер шрифта: 18 пикселей; цвет: # fff} #sidebar a:link, #sidebar a:visited {text-decoration:none} #sidebar a:hover {text-decoration:underline} #sidebar li a {padding-left:10px;background:url(images/img09.
gif) без повтора 1px 5px} #footer {фон: # 452809; высота: 47 пикселей; ширина: 780 пикселей; поле: 0 авто; размер шрифта: 10 пикселей; цвет: # fff; верхняя часть отступа: 23 пикселей; выравнивание текста: по центру;} #нижний колонтитул div {padding:10px 38px} #нижний колонтитул a {цвет:#fff;размер шрифта:10px;украшение текста:нет} .padding {заполнение: 10px; цвет: # f00; вес шрифта: полужирный}

Любая помощь будет принята с благодарностью.

🙂

2

Современное решение

Flexbox создан именно для таких задач:

 #контейнер {
    высота: 150 пикселей;/*Только для демо.*/
    background-color:green;/*Только для демо.*/
    дисплей: гибкий;
    выравнивание содержимого: по центру;
    элементы выравнивания: flex-end;
} 
 <дел>
    Текст выравнивается по центру внизу.

Решение старой школы

Если вы не хотите возиться с отображением таблиц, вы можете создать

внутри относительно расположенного родительского контейнера, поместить его внизу с абсолютным позиционированием, затем сделайте его шириной 100%, чтобы вы могли text-align по центру:

 #container {
    высота: 150 пикселей;/*Только для демо. */
    background-color:green;/*Только для демо.*/
    положение: родственник;
}

#текст {
    положение: абсолютное;
    внизу: 0;
    ширина: 100%;
    выравнивание текста: по центру;
} 
 <дел>
    Текст выравнивается по центру внизу.

1

Чтобы правильно использовать вертикальное выравнивание , вы должны сделать это на теге таблицы . Но есть способ заставить другие теги html вести себя как таблица, назначив им css display:table для вашего родителя и display:table-cell для вашего ребенка. Тогда vertical-align:bottom будет работать с этим дочерним элементом.

HTML:

 ​​​​
<дел> Этот текст выровнен по вертикали по нижнему краю.