CSS中的宽度无法正常工作

时间:2014-05-05 21:01:33

标签: html css forms

所以我的提交按钮有一个非常奇怪的问题。我在提交按钮上使用width:100%,它处于“换行”状态。所以,基本上它应该是全宽,但最终我似乎无法让它工作。这是我正在谈论的屏幕截图

enter image description here

正如您所看到的,输入字段与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,以及为什么这不起作用的原因或解释,任何想法的人?

另外,find a fiddle here

4 个答案:

答案 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;替换它。