Ширина input, зависящая от ширины модального окна
Есть модальное окно
.modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, .4);
display: block;
z-index: 15;
/*
padding-top: 20%;
padding-bottom: 10%;
padding-left: 25%;
padding-right: 25%;
*/
/*text-align: center;*/
vertical-align: middle;
}
.modal-content {
z-index: 20;
border: 1px solid #fff;
padding: 15px;
position: absolute;
left: 25%;
right: 25%;
top: 20%;
bottom: 10%;
width: 50%;
height: 70%;
border-radius: 5px;
/*
margin-top: 20%;
margin-bottom: 10%;
margin-left: 25%;
margin-right: 25%;*/
margin: auto;
/*margin-top: 20%;*/
background-color: #fff;
}
.modal-header {
border-bottom: 1px solid silver;
position: relative;
}
.closeregwindow {
cursor: pointer;
position: absolute;
right: 0;
top: -25px;
font-size: 30px;
}
.loginsignuptext {
vertical-align: middle;
margin-top: auto;
margin-bottom: auto;
margin-left: 5px;
}
.contentreg {
/*font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;*/
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
width: 100%;
}
.username {
padding-top: 10px;
padding-bottom: 10px;
}
.inputusername {
/*
margin-left: 15px;
margin-right: 15px;
*/
width: 100%;
}
.eleminput {
width: 100%;
}
.modal-body {
width: 100%;
}
<div class="modal">
<div class="modal-content">
<div class="modal-header">
<span class="closeregwindow">×</span>
<h2>Вход или регистрация</h2>
</div>
<div class="modal-body">
<div class="contentreg">
<p class="username"><b>Имя</b></p>
<div class="eleminput">
<input type="text" placeholder="Введите имя пользователя" name="uname" class="inputusername">
</div>
</div>
<p>Какой-то текст в теле модального окна</p>
<p>Ещё другой текст...</p>
</div>
<div class="modal-footer">
<h3>Футер модального окна</h3>
</div>
</div>
</div>
Почему
inputне занимает всю ширину окна? Почему атрибутwidthнеправильно работает?У input-а есть ширина, равная
$('.modal-content').width - 2*marginside. Как задать ширинуinputвcss?
Ответы (2 шт):
Оберните input в div
<div class="input">
<input type="text" placeholder="Введите имя пользователя" name="uname" class="inputusername" size="100%">
</div>
И в css
input {
width: 100%;
}
И настройте margin/padding Чтобы слева и справа были одинаковые расстояния
Если хотите, чтобы инпут просто не вылазил за рамки экрана, задайте ему ширину 100%. Также, чтобы все бордеры и отступы элемента входили в этот размер, то ему (или всем элементам, как часто делают) необходимо добавить box-sizing: border-box. И могу предположить, что в элементе eleminput нет особой необходимости.
* {
box-sizing: border-box;
}
.inputusername {
width: 100%;
}
Если же вы хотите указать конкретный размер инпута, задайте просто, к примеру:
.inputusername {
width: 100px;
}
Если же хотите чтобы он был по центру, можно добавить (хотя вариантов масса):
.inputusername {
width: 100px;
margin: auto;
display: block;
}
Ну и если же хотите, чтобы и инпут и предыдущий элемент <p> тоже был по центру, можно задать родительскому блоку, к примеру:
.contentreg {
text-align: center;
}
Так же могу посоветовать не использовать размер строго 50% от ширины экрана для модального окна. На маленьких и больших экранах будет не очень весело за этим наблюдать. Для большей отзывчивости можно задать например ширину в 90%, но ограничить max-width, допустим 400px. А для того, чтобы центрировать по центру экрана можно использовать transform: translate().
.modal-content {
z-index: 20;
border: 1px solid #fff;
padding: 15px;
position: absolute;
width: 90%;
border-radius: 5px;
background-color: #fff;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
max-width: 400px;
}
