5

HTML

<div class="wrap">
    <input class="field" type="text">
    <textarea class="field" row="10"></textarea>
</div>

CSS

.wrap{width:300px;overflow:hidden;padding:10px;}
.field{display:block;width:100%;margin:10px 0;padding:10px;}

我希望文本输入的宽度和 textarea 应该完全等于父 div。但他们不是。谁能解释为什么?

实时代码

4

4 回答 4

16

总宽度计算为padding+ width+的总和borderWidth。这是盒子模型的默认行为。您可以使用box-sizing属性来更改它。在你的情况下:

.field {
    ...
    box-sizing: border-box;
}

http://jsfiddle.net/aLz6b/3/

进一步阅读:http ://css-tricks.com/box-sizing/

于 2013-03-23T05:20:11.573 回答
3

这是因为您已经padding应用了.field删除填充并看到它会起作用。

.field{display:block;width:100%;margin:10px 0;}

或者

你有100%宽度设置所以只需设置宽度如下。

.field {
    display: block;
    margin: 10px 0;
    padding: 10px;
    width: 280px;
}
于 2013-03-23T05:20:31.853 回答
0

width: 100%属性适用于内容框,而不是边框​​框。如果您使用的是 CSS3,您可以设置box-sizing: border-box以获得预期的大小。

http://www.w3.org/TR/css3-ui/#box-sizing0

于 2013-03-23T05:17:02.423 回答
0

试试这个:

.wrap{width:300px;overflow:hidden;padding:10px 0px;}
于 2013-03-23T05:21:22.247 回答