CSS выровнять блоки до одной границы

Есть форма, в которой размещены поля для ввода информации. Из-за того, что заголовки полей разной длины, а у полей одинаковая ширина, все идет вразнобой. Подскажите пожалуйста, возможно ли как-то подстроить все поля под одну линию (на скриншоте обозначено красной линией), чтобы они все встали в один ряд?

Пробовал ограничить width для каждого поля, к сожалению он их только уменьшает, но под одну линию не обрезает. введите сюда описание изображения

Код страницы HTML:

<div class="main">
    <div class="container">
            <div class="user_info">
            <form method="post" enctype="multipart/form-data" class="form">
            {% csrf_token %}

            <div class="user_fullname_header">
                <h3 class="header">Полное имя</h3>
            </div>

            <div class="rows">
                <p>Фамилия<span class="asterix">*</span> : {{ user_form.last_name }}</p>
                <p>Имя<span class="asterix">*</span> : {{ user_form.first_name }}</p>
                <p>Отчество<span class="asterix">*</span> : {{ profile_form.patron }}</p>
            </div>
            </form>
    </div>
</div>

Код CSS

.main {
  margin: 2% 25%;
  padding: 2%;
  background-color: #f5f5f5;
  box-shadow: 5px 5px 5px #edebeb;
}

.container {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  font-family: 'Inter', sans-serif;
}

.user_info{
  width: 70%;
}

.rows {
  display: flex;
  flex-direction: column;
}

.user_fullname_header {
  background-color: #64a2bd;
  border-radius: 20px;
}
.header {
  padding: 1% 0% 1% 3%;
  font-size: 17px;
  color: white;
}

p {
  margin-left: 5%;
  margin-top: 1%;
  margin-bottom: 1%;
}

.form-input {
  margin-left: 1%;
  padding: 1% 1% 1% 2%;
  width: 55%;
  border: 1px solid #64a2bd;
  border-radius: 15px;
}

Ответы (1 шт):

Автор решения: humster_spb

Если я правильно понял Вашу задачу, то надо тегам p задать display: flex; align-items: center; width: 75% (или сколько Вам нужно), а инпутам - width: 100%. Тогда они будут занимать всё доступное пространство внутри p, независимо от того, насколько длинные или короткие заголовки у полей:

.main {
  margin: 2% 25%;
  padding: 2%;
  background-color: #f5f5f5;
  box-shadow: 5px 5px 5px #edebeb;
}

.container {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  font-family: 'Inter', sans-serif;
}

.user_info{
  width: 70%;
}

.rows {
  /*display: flex;
  flex-direction: column;*/
}

.user_fullname_header {
  background-color: #64a2bd;
  border-radius: 20px;
}
.header {
  padding: 1% 0% 1% 3%;
  font-size: 17px;
  color: white;
}

p {
  margin-left: 5%;
  margin-top: 1%;
  margin-bottom: 1%;
  display: flex;
  align: items: center;
  width: 75%;
}

.form-input {
  width: 100%;
  margin-left: 1%;
  padding: 1% 1% 1% 2%;
  border: 1px solid #64a2bd;
  border-radius: 15px;
}
<div class="main">
    <div class="container">
            <div class="user_info">
            <form method="post" enctype="multipart/form-data" class="form">

            <div class="user_fullname_header">
                <h3 class="header">Полное имя</h3>
            </div>

            <div class="rows">
                <p>Фамилия<span class="asterix">*</span> : <input type="text" class="form-input"></p>
                <p>Имя<span class="asterix">*</span> : <input type="text" class="form-input"></p>
                <p>Отчество<span class="asterix">*</span> : <input type="text" class="form-input"></p>
            </div>
            </form>
    </div>
</div>

→ Ссылка