Я использую элементы формы начальной загрузки и хочу центрировать все элементы формы посередине. Я пробовал добавить margin: 0 auto! Важно для класса управления формой, но все еще есть проблемы с заполнением / полями. Поля ввода по-прежнему имеют неровные левые и правые отступы / поля. К тому же текстовая область и кнопка застряли слева. Помня об адаптивном дизайне, как лучше всего решить эту проблему?
HTML:
<form class = "form">
<h4 class = "form-contactme">Contact Me</h4>
<div class = "form-row">
<div class = "form-group col-sm-6">
<label for = "firstName" class = "form-inputlabel">First Name</label>
<input type = "text" class = "form-control" id = "firstName" placeholder = "First Name">
</div>
<div class = "form-group col-sm-6">
<label for = "lastName" class = "form-inputlabel">Last Name</label>
<input type = "text" class = "form-control" id = "lastName" placeholder = "Last Name">
</div>
</div>
<div class = "form-row">
<div class = "form-group col-sm-6">
<label for = "email" class = "form-inputlabel">Email</label>
<input type = "email" class = "form-control" id = "email" placeholder = "[email protected]">
</div>
<div class = "form-group col-sm-6">
<label for = "phone" class = "form-inputlabel">Phone</label>
<input type = "number" class = "form-control" id = "phone" placeholder = "xxx-xxx-xxxx">
</div>
<div class = "form-row">
<div class = "form-group">
<label for = "messageBox">Send me a message <i class = "far fa-smile-beam"></i></label>
<textarea type = "text" class = "form-control" id = "messageBox"></textarea>
</div>
</div>
<div class = "form-row">
<button type = "submit" class = "btn btn-primary">Submit</button>
</div>
</form>
Scss:
.form{
padding:3% !important;
background-color:#9fd199;
margin-bottom:5%;
&-contactme{
font-size:1.8rem;
font-weight:900;
text-align:center;
margin-bottom:15%;
}
&-row{
width:100%;
}
&-inputlabel{
display:none;
}
&-control{
margin-left:0 auto !important;
}
}






Это из-за заполнения и поля по умолчанию классов формы.
Вам необходимо удалить отступы и поля по умолчанию, чтобы центрировать элементы и выровнять их по одной линии.
Добавьте следующие строки в свой css
.form-group, .form-row > .col, .form-row > [class* = "col-"] {
padding-left:0;
padding-right:0;
}
.form-row{
margin:0;
}
Ссылка на рабочий код: https://codepen.io/Ev1tw1n/pen/xmdjeL
Рад помочь вам в любое время :)
Как это ответить на ваш вопрос? Он не центрирует текстовое поле и кнопку отправки ...
Вы пропустили закрывающий div. Теперь проверьте
<form class = "form">
<h4 class = "form-contactme">Contact Me</h4>
<div class = "form-row">
<div class = "form-group col-sm-6">
<label for = "firstName" class = "form-inputlabel">First Name</label>
<input type = "text" class = "form-control" id = "firstName" placeholder = "First Name">
</div>
<div class = "form-group col-sm-6">
<label for = "lastName" class = "form-inputlabel">Last Name</label>
<input type = "text" class = "form-control" id = "lastName" placeholder = "Last Name">
</div>
</div>
<div class = "form-row">
<div class = "form-group col-sm-6">
<label for = "email" class = "form-inputlabel">Email</label>
<input type = "email" class = "form-control" id = "email" placeholder = "[email protected]">
</div>
<div class = "form-group col-sm-6">
<label for = "phone" class = "form-inputlabel">Phone</label>
<input type = "number" class = "form-control" id = "phone" placeholder = "xxx-xxx-xxxx">
</div>
</div>
<div class = "form-row">
<div class = "form-group">
<label for = "messageBox">Send me a message <i class = "far fa-smile-beam"></i></label>
<textarea type = "text" class = "form-control" id = "messageBox"></textarea>
</div>
</div>
<div class = "form-row">
<button type = "submit" class = "btn btn-primary">Submit</button>
</div>
</form>
Добавьте в контейнер дисплейную гибкость, после чего вы сможете выровнять все элементы по центру с помощью align-items: center.
.form-group, .form-row {
display: flex;
flex-direction: column;
align-items: center;
}
.form {
padding: 3% !important;
background-color: #9fd199;
margin-bottom: 5%;
}
.form-group,
.form-row {
display: flex;
flex-direction: column;
align-items: center;
}
.form-contactme {
font-size: 1.8rem;
font-weight: 900;
text-align: center;
margin-bottom: 15%;
}
.form-row {
width: 100%;
}
.form-inputlabel {
display: none;
}
.form-control {
margin-left: 0 auto !important;
}<link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin = "anonymous">
<form class = "form">
<h4 class = "form-contactme">Contact Me</h4>
<div class = "form-row">
<div class = "form-group col-sm-6">
<label for = "firstName" class = "form-inputlabel">First Name</label>
<input type = "text" class = "form-control" id = "firstName" placeholder = "First Name">
</div>
<div class = "form-group col-sm-6">
<label for = "lastName" class = "form-inputlabel">Last Name</label>
<input type = "text" class = "form-control" id = "lastName" placeholder = "Last Name">
</div>
</div>
<div class = "form-row">
<div class = "form-group col-sm-6">
<label for = "email" class = "form-inputlabel">Email</label>
<input type = "email" class = "form-control" id = "email" placeholder = "[email protected]">
</div>
<div class = "form-group col-sm-6">
<label for = "phone" class = "form-inputlabel">Phone</label>
<input type = "number" class = "form-control" id = "phone" placeholder = "xxx-xxx-xxxx">
</div>
<div class = "form-row">
<div class = "form-group">
<label for = "messageBox">Send me a message <i class = "far fa-smile-beam"></i></label>
<textarea type = "text" class = "form-control" id = "messageBox"></textarea>
</div>
</div>
<div class = "form-row">
<button type = "submit" class = "btn btn-primary">Submit</button>
</div>
</div>
</form>
Спасибо! Я забыл, что классы начальной загрузки .row и .col имеют предустановленные отступы и поля.