Вопрос или проблема
Я хочу, чтобы кнопки были рядом справа, но форма, похоже, занимает слишком много места.
красный прямоугольник – это контейнер формы
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
<form method="post" action="{{ route('company.destroy', ['company' => $company]) }}">
@csrf
@method('delete')
<input type="submit" value="Подтвердить удаление" class="btn btn-danger m-3" role="button" aria-pressed="true">
</form>
</div>
Я попробовал использовать d-flex
<div class="modal-footer">
<div class="d-flex justify-content-end">
<button type="button" class="btn btn-secondary me-2 h-10" data-bs dismiss="modal">Закрыть</button>
<form method="post" action="{{ route('company.destroy', ['company' => $company]) }}">
@csrf
@method('delete')
<input type="submit" value="Подтвердить удаление" class="btn btn-danger" role="button" aria-pressed="true">
</form>
</div>
</div>
И это выглядит как
это
Я попытался контролировать размер формы
<form method="post" action="{{ route('company.destroy', ['company' => $company]) }}" class="w-25 h-10">
Но позиция кнопки остается там, вне контейнера формы и модального окна.
изображение
Кнопки должны выстраиваться рядом, так как нижние части модальных окон уже являются контейнерами flexbox с их содержимым, заданным для выравнивания вправо, так что ваш <div>
с d-flex justify-content-end
ненужен.
Я создал пример на jsfiddle, где я взял демонстрационное модальное окно из документации Bootstrap 5, добавил в него форму с кнопкой опасности, и оно отображается так, как вам нужно: https://jsfiddle.net/martinbean/Lu15xmeq/2/
Ответ или решение
Для того чтобы выровнять кнопки в нижней части модального окна Bootstrap бок о бок, необходимо правильно использовать классы Bootstrap и учесть некоторые нюансы, касающиеся размеров форм и отсутстий между элементами.
Проблема
У вас возникла проблема с тем, что кнопки не располагаются рядом друг с другом в нижней части модального окна. Вы уже пробовали использовать класс d-flex
, но это не дало желаемого результата, и кнопки остались в разных местах.
Решение
-
Структура разметки: Убедитесь, что кнопки находятся в одном родительском блоке, который поддерживает флексбокс. В вашем случае это модальная подвалка, которая по умолчанию использует флексбокс.
-
Избегание лишнего контейнера: Поскольку
.modal-footer
сам является флекс-контейнером, нет необходимости оборачивать кнопки в дополнительный<div>
с классомd-flex
. Это может добавить дополнительные проблемы с выравниванием. -
Управление размером форм и кнопок: Если форма занимает слишком много пространства, попробуйте задать ширину формы, не уменьшая размер кнопок. Вы можете использовать классы Bootstrap для управления отступами и размерами.
Пример реализации
Вот как может выглядеть ваша разметка:
<div class="modal-footer">
<button type="button" class="btn btn-secondary me-2" data-bs-dismiss="modal">Закрыть</button>
<form method="post" action="{{ route('company.destroy', ['company' => $company]) }}" class="d-inline">
@csrf
@method('delete')
<input type="submit" value="Подтвердить удаление" class="btn btn-danger" role="button" aria-pressed="true">
</form>
</div>
Объяснение изменений
- Убрали лишний
<div>
с классомd-flex
. Как упоминалось ранее,.modal-footer
уже является флекс-контейнером. - Добавили класс
me-2
(margin-end) для кнопки "Закрыть", чтобы создать небольшой отступ между кнопками. - Использовали класс
d-inline
для формы, чтобы она занимала только необходимое пространство в строке.
Дополнительные советы
- Отладка стилей: Если у вас есть дополнительные стили, которые могут влиять на размещение элементов, проверьте их, используя инструменты разработчика в вашем браузере.
- Responsive Design: Убедитесь, что ваше решение работает на разных разрешениях. Некоторые классы могут потребоваться для адаптации.
Заключение
С помощью корректной структуры разметки и ожидания, что .modal-footer
уже предоставляет необходимые стили, вы сможете расположить кнопки "Закрыть" и "Подтвердить удаление" рядом друг с другом. Следуйте приведенным выше рекомендациям, и ваше модальное окно будет выглядеть аккуратно и профессионально.