改变focus上textinput的padding/margin导致parentdiv流出?
Changing the padding/margin of textinput on focus causes flow-out of parentdiv?
如果我在输入字段中单击,填充应该变为零,以便边框紧挨着文本。
问题是它保持宽度,因此流出 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>
如果您想针对更改后的内边距进行调整,只需重新定义 :focus 块中的宽度,例如
width: calc(100% - 42px);
所以你的 :focus 块应该看起来像:
input[type=text]:focus {
width: calc(100% - 42px);
border: 2px dotted grey;
padding: 0;
margin: 21px;
}
“42px”是因为你定义的边距是水平21px,所以你需要考虑左右都有21px。
如果我在输入字段中单击,填充应该变为零,以便边框紧挨着文本。 问题是它保持宽度,因此流出 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>
如果您想针对更改后的内边距进行调整,只需重新定义 :focus 块中的宽度,例如
width: calc(100% - 42px);
所以你的 :focus 块应该看起来像:
input[type=text]:focus {
width: calc(100% - 42px);
border: 2px dotted grey;
padding: 0;
margin: 21px;
}
“42px”是因为你定义的边距是水平21px,所以你需要考虑左右都有21px。