当宽度设置为100%时,div的内容比div本身更长?

Ras*_*sto 25 html css firefox

我有div固定宽度只包含input文本框width,input并设置为100%.我希望它能填补div但反而稍微长一些.

演示代码:

HTML:

<div class="container">
    <input class="content" id="Text1" type="text" />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.container
{
    width: 300px;
    height: 30px;
    border: thin solid red;
}
.content
{
    width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

结果(Firefox):

在此输入图像描述

这也发生在IE 8,Chrome,Safari ......溢出宽度似乎在不同的浏览器中有所不同.如何使内容准确填充div

thi*_*dot 88

box-sizing: border-box 是一种快速,简便的方法来解决它:

适用于所有现代浏览器和IE8 +.

这是一个演示:http://jsfiddle.net/thirtydot/QkmSk/301/

.content {
    width: 100%;
    box-sizing: border-box;
}
Run Code Online (Sandbox Code Playgroud)

请参阅此处了解与IE7兼容的方法.

  • @drasto:不.它是`input`元素的边框/填充.看看我的意思,看看这个夸张的演示:http://jsfiddle.net/QkmSk/4/ (3认同)
  • 这必须是有史以来最伟大的CSS属性. (3认同)
  • @drasto:事实上你将`width:100%`应用于具有边框和填充的元素.`border-box`通过在`width:100%`计算中包含这个边框和填充*来解决这个问题. (2认同)