我需要你的帮助。
似乎我的孩子divs(textarea和text)扩展到了边界之外:
这是理想的结果:
这是HTML / CSS:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
#one {
width: 800px;
border: 1px solid red;
}
#two {
text-align: right;
}
#three {
}
#field {
width: 100%;
}
</style>
</head>
<body>
<div id="one">
<div id="two">text to the right</div>
<div id="three"><textarea id="field"></textarea>
</div>
</body>
</html>
答案 0 :(得分:1)
边框和填充会添加到宽度上。因为宽度为100%,所以将填充和边框添加到字段上。
因此,如果宽度为'1'的120px,则为边框添加2px,为填充添加几个像素。
如果从“三”中减去一些空格,就可以实现这一目标。
#three {
width:794px;
}
以下内容也适用于大多数浏览器。
#field {
width: 100%;
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box;
}
否则,您可以从textarea中删除边框和填充。说实话,有很多方法可以做到这一点。
答案 1 :(得分:1)
textarea
上的边框和填充是您的问题。这两个选项都与textarea的CSS有关。正如您从下面的代码中可以看到的,我还为#one
添加了相对定位,只是为了确保它在页面的上下文中工作,因此textarea的宽度实际上将由此容器调整大小。
设置正确的box-sizing
,因此将包含边框和填充(JSFiddle):
#one {
width: 800px;
border: 1px solid red;
position: relative;
}
#two {
text-align: right;
}
#three {
}
#field {
width: 100%;
box-sizing: border-box;
/* let's also add these for cross-browser safety */
border-width: 1px;
padding: 2px;
}
将width
设置为低于100%(JSFiddle)
#one {
width: 800px;
border: 1px solid red;
}
#two {
text-align: right;
}
#three {
}
#field {
/* (1px border + 2px padding) × 2 for left and right side */
width: calc(100% - 6px);
}
答案 2 :(得分:0)
它超越边界的原因是它正在采用border:2px;
答案 3 :(得分:0)
您为width: 100%
textarea设置了#field
。默认情况下,textarea还具有border
和padding
的非零值。因此,毕竟你的textarea 800px 宽(继承自.three
)+ 4px 边框+ 2px border = 806px < / strong>所有在一起(但可能略有不同,具体取决于您使用的浏览器)
将#field
的CSS修改为此
#field {
width: 100%;
margin: 0;
padding: 0;
border: 0;
}
我还设置margin: 0
只是为了确保某些浏览器不会将其设置为非零值。
答案 4 :(得分:0)
经典的盒子模型加上宽度,边距,填充和边框。
在这种情况下,设置textarea另一种计算宽度的方法,即将框大小调整为边框(宽度适当宽度,没有边距,填充和边框)
#field {
width: 100%;
-webkit-box-sizing:border-box;
}
(您可以添加所需的perfix,-moz,-ms,-o ...)