所以我的提交按钮有一个非常奇怪的问题。我在提交按钮上使用width:100%
,它处于“换行”状态。所以,基本上它应该是全宽,但最终我似乎无法让它工作。这是我正在谈论的屏幕截图
正如您所看到的,输入字段与width:100%
一起正常工作,但提交无效。这是相应问题的代码。
HTML部分。
<div class="wrap">
<form>
<div>
<input type="text" placeholder="Name">
</div>
<div>
<input type="text" placeholder="Email">
</div>
<div>
<input type="password" placeholder="Password">
</div>
<div>
<input type="submit">
</div>
</form>
</div>
和它的CSS。
input[type=submit] {
font-family: "Avenir", "Helvetica Neue", Helvetica, Arial, sans-serif;
display: block;
height: 52px;
width: 100%;
margin: 0 auto;
background: #27A6D1;
text-align: center;
color: #fff;
line-height: 52px;
font-size: 20px;
font-weight: 500;
cursor: pointer;
padding: 0;
border: none;
}
.wrap {
width: 320px;
margin: 0 auto;
padding: 40px 0;
}
input {
width: 100%;
height: 52px;
margin: 0 0 10px;
font-size: 18px;
font-family: "Avenir", "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #333;
background: #fff;
padding: 0 14px;
outline: none;
border: 1px solid #ccc;
}
我可以使用类似width: 109%
的内容,但我更喜欢使用100
,以及为什么这不起作用的原因或解释,任何想法的人?
答案 0 :(得分:4)
快速修复将在表单中的所有输入元素上使用box-sizing: border-box
,然后声明统一宽度:这将确保宽度计算为最终边框宽度(包括边框宽度和填充)。
input {
box-sizing: border-box;
width: 100%;
}
然后,您可以安全地为每个输入元素自定义填充(如果需要),而不必担心它们如何影响元素的最终宽度。
这是基于您提供的标记构建的概念验证小提琴;)http://jsfiddle.net/teddyrised/kx39z/
答案 1 :(得分:3)
您需要将box-sizing: border-box
添加到输入类。输入框中的右/左填充使它们比定义的宽度宽。
答案 2 :(得分:1)
input { padding: 0 14px; }
输入100%+ 28px宽
答案 3 :(得分:0)
正在打破布局的padding: 0 14px;
(JimmyRare's answer)。
接受的解决方案使用box-sizing
属性,但某些较旧的浏览器可能不支持它,并且可能会导致其他副作用。
我建议用text-indent: 14px;
替换它。