Вопрос или проблема
Я пытаюсь сделать это. Я не могу использовать абсолютное позиционирование, потому что текст не обтекает, и я не могу использовать flex, чтобы поставить все внизу, потому что это портит текст. Есть ли другой способ?
Я нашел объяснения здесь и в других местах, которые говорят использовать абсолютное позиционирование или flex, но ничего не работает так, как я хочу.
Вот код, который у меня есть на данный момент. Он не содержит всего, что я когда-либо пробовал и удалял, но это что-то, на что можно опираться.
#m3{
grid-row: 3;
grid-column: 3;
border-style: solid;
position:relative;
padding: 10px;
}
#m4{
grid-row: 3;
grid-column: 4;
border-style: solid;
position:relative;
padding: 10px;
}
.bl{
float: left;
width: 25%;
height: 25%;
padding: 5px;
}
.br{
float: right;
width: 25%;
height: 25%;
padding: 5px;
}
Ответ или решение
Я понимаю, что вы хотите расположить изображения внизу слева и справа внутри div, не прибегая к использованию абсолютного позиционирования и без искажения обертывающего текста. Рассмотрим несколько методов, которые могут быть полезными в данной ситуации.
1. Использование Flexbox
Хотя вы упомянули, что не хотите использовать Flexbox из-за проблем с обертыванием текста, возможно, стоит рассмотреть правильную настройку Flexbox, чтобы он работал надлежащим образом.
<div class="container">
<div class="content">
<p>Ваш текст здесь...</p>
</div>
<div class="bl">
<img src="image-left.jpg" alt="Left Image">
</div>
<div class="br">
<img src="image-right.jpg" alt="Right Image">
</div>
</div>
.container {
display: flex;
flex-direction: column; /* Расположение дочерних элементов по вертикали */
padding: 10px;
border: 1px solid #000;
}
.content {
flex: 1; /* Позволяет этому блоку занимать всё доступное пространство */
}
.bl {
align-self: flex-start; /* Сдвигаем слева */
}
.br {
align-self: flex-end; /* Сдвигаем справа */
}
img {
max-width: 100%; /* Адаптивность изображений */
height: auto;
}
2. Использование CSS Grid
Если вам необходимо более сложное расположение элементов, CSS Grid может быть хорошим выбором.
<div class="grid-container">
<div class="content">
<p>Ваш текст здесь...</p>
</div>
<div class="bl">
<img src="image-left.jpg" alt="Left Image">
</div>
<div class="br">
<img src="image-right.jpg" alt="Right Image">
</div>
</div>
.grid-container {
display: grid;
grid-template-rows: 1fr auto; /* Изменяем строки: текст занимает всё пространство, а изображения меньше */
padding: 10px;
border: 1px solid #000;
}
.content {
grid-row: 1; /* Текст занимает первую строку */
}
.bl {
grid-row: 2; /* Изображение слева на второй строке */
justify-self: start; /* Выровнять по началу (влево) */
}
.br {
grid-row: 2; /* Изображение справа на второй строке */
justify-self: end; /* Выровнять по концу (вправо) */
}
img {
max-width: 100%;
height: auto;
}
3. Использование Float с Clearfix
Если вы предпочитаете использовать float
, вы можете применять clearfix, чтобы избежать проблем с обертыванием текста:
<div class="clearfix">
<div class="content">
<p>Ваш текст здесь...</p>
</div>
<div class="bl">
<img src="image-left.jpg" alt="Left Image">
</div>
<div class="br">
<img src="image-right.jpg" alt="Right Image">
</div>
</div>
.clearfix::after {
content: "";
clear: both;
display: table;
}
.content {
overflow: hidden; /* Позволяет тексту помещаться вокруг плавающих элементов */
}
.bl {
float: left;
width: 25%;
}
.br {
float: right;
width: 25%;
}
img {
max-width: 100%;
height: auto;
}
Заключение
Каждый из предложенных методов имеет свои преимущества и подходит для разных сценариев. Выбор подхода зависит от специфики вашего проекта и требований к дизайну. Если вам нужно больше контроля над расположением элементов, CSS Grid — отличный выбор. Если вы предпочитаете более традиционные методы, использование Floats с clearfix может хорошо подойти. Надеюсь, это поможет вам успешно реализовать нужный вам дизайн!