Изменение отступа / поля ввода текста в фокусе вызывает вытекание parentdiv? - PullRequest
0 голосов
/ 11 мая 2018

Если я щелкну в полях ввода, отступы должны перейти в ноль, чтобы граница находилась рядом с текстом.Проблема в том, что он сохраняет ширину и таким образом вытекает из родительского элемента div; [

<!DOCTYPE html>
<html>
<head>
<style> 
div {
    width: 400px;
    background-color: lightblue;
    border-radius: 5px;
    padding: 10px;
}
input[type=text] {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0 8px 0;
    box-sizing: border-box;
    border: 2px solid grey;
    outline: none;
    display: block;
}
input[type=text]:focus {
    border: 2px dotted grey;
    padding: 0;
    margin: 21px;
}
</style>
</head>
<body>
<div>
<form>
  <label for="fname">First Name</label>
  <input type="text" id="fname" name="fname" value="John">
  <label for="lname">Last Name</label>
  <input type="text" id="lname" name="lname" value="Doe">
</form>
</div>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Переопределите ширину и удалите поле, добавленное с помощью calc:

div {
  width: 400px;
  background-color: lightblue;
  border-radius: 5px;
  padding: 10px;
}

input[type=text] {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0 8px 0;
  box-sizing: border-box;
  border: 2px solid grey;
  outline: none;
  display: block;
}

input[type=text]:focus {
  border: 2px dotted grey;
  padding: 0;
  margin: 21px;
  width: calc(100% - 42px);
}
<div>
  <form>
    <label for="fname">First Name</label>
    <input type="text" id="fname" name="fname" value="John">
    <label for="lname">Last Name</label>
    <input type="text" id="lname" name="lname" value="Doe">
  </form>
</div>
0 голосов
/ 11 мая 2018

Если вы хотите настроить измененный отступ, просто переопределите ширину и в блоке: focus, например,

width: calc(100% - 42px);

Итак, ваш: блок фокусировки должен выглядеть примерно так:

input[type=text]:focus {
    width: calc(100% - 42px);
    border: 2px dotted grey;
    padding: 0;
    margin: 21px;
}

«42px» - это потому, что вы определили размер поля как 21px по горизонтали, поэтому вам нужно учитывать, что есть 21px как слева, так и справа.

...