<Span> в правом нижнем углу <div> без "position:absolute"

Я хочу, чтобы div выглядел так:

+--------------------------------+
|                                |
|     "This is a quote..."       |
|                                |
|                         Author |   
+--------------------------------+

Не могу поместить имя автора в правом нижнем углу. Я хочу знать, как это сделать без использования position:absolute, и мой div не имеет фиксированного размера.

.quote {
  margin: 20px;
  background-color: blue;
  padding: 20px;
  border-radius: 15px;
  text-align: justify;
  color: white;
}

.author {
  color: red;
  float: right bottom; /* does not work ... it works if I remove 'bottom' but I don't like it because I want a vertical space between the quote and the author*/
}
<div class = "quote">
  Lorem ipsum dolor sit amet
  <span class = "author">loremipsum.io</span>
</div>

Вашему div не нужен фиксированный размер для использования position:absolute в диапазоне. Кроме того, у него нет плавающего дна, и он не принимает два значения.

j08691 10.04.2019 20:26

если я использую position:absolute на промежутке, он располагается в правом нижнем углу экрана

Mike Delta 10.04.2019 20:30

Ага. Это потому, что абсолютное позиционирование чего-то относится к его ближайшему позиционированному предку. Другими словами, просто поместите относительное положение в div и вуаля, оно работает (вообще без поплавка, а вместо этого устанавливает нижнее и правое свойства для диапазона).

j08691 10.04.2019 20:37
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
3
1 831
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я бы рекомендовал использовать абсолютное позиционирование в этом случае. Неважно, имеет ли родительский div .quote фиксированный размер, единственное требование — установить position: relative на родительском элементе.

Одно предостережение с абсолютным позиционированием заключается в том, что оно может перекрывать другой контент, поэтому рекомендуется добавить значение отступа к родительскому div, достаточно большое, чтобы «освободить место» для абсолютно позиционированного текста.

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

Есть несколько вещей, которые вы могли бы сделать здесь. Вы можете использовать flexbox и установить для span значение align-self: flex-end вот так:

.quote{
  border:1px solid #000;
  padding:5px;
  display:flex;
  flex-direction:column;
}

.quote span{
  align-self: flex-end;
}
<div class = "quote">
  Lorem ipsum dolor sit amet
  <span class = "author">loremipsum.io</span>
</div>

или вы можете просто выровнять текст по правому краю вашего диапазона и установить для него значение display:block вот так:

.quote{
  border:1px solid #000;
  padding:5px;
}

.quote span{
  display:block;
  text-align:right;
}
<div class = "quote">
  Lorem ipsum dolor sit amet
  <span class = "author">loremipsum.io</span>
</div>

Как уже упоминалось, использование абсолютного позиционирования является файлом, если вы используете position: relative в классе quote.

Другой подход может быть достигнут с помощью CSS Grid следующим образом:

<div class = "quote">
  <span>Lorem ipsum dolor sit amet</span>
  <span class = "author">loremipsum.io</span>
</div>
.quote {
  display: grid;
  margin: 20px;
  background-color: blue;
  padding: 20px;
  border-radius: 15px;
  color: white;
}

.quote .author {
  justify-self: right;
}

Мой работает независимо от высоты контейнера.

.quote {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  height: 500px;
  border: 1px solid #000;
  padding: 20px;
}

.quote p {
  max-width: 80%;
}

.quote span {
  align-self: flex-end;
}
<div class = "quote">
  <p>Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet</p>
  <span class = "author">loremipsum.io</span>
</div>

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