在td中,宽度为100%的文本输入框会扩展/延伸到td之外。
在td中,宽度为100%的文本输入框会扩展/延伸到td之外。
这是一个实时演示。
我试图在td中放置一个带有填充的文本输入框,并希望它占据100%的宽度,但它超出了td的范围。
我不明白为什么会这样,有人知道吗?
CSS
table { border: solid 1px gray; width: 90%; } input { width: 100%; padding: 10px; }
HTML
Hello |
问题原因:该问题的原因是因为`td`元素中的文本输入框的宽度超出了`td`元素的宽度。这是因为文本输入框的宽度默认会包括其内部的填充(padding)。
解决方法:可以使用`box-sizing`属性来解决这个问题,因为`box-sizing: border-box;`会将填充(padding)和边框(border)的宽度包含在元素的总宽度中,从而防止元素的宽度超出其容器的宽度。
在CSS中添加以下样式代码:
input { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 10px; }
这样可以确保文本输入框的宽度不会超出其容器的宽度,并且填充(padding)会被包含在元素的总宽度中。
需要注意的是,这种解决方法在IE7浏览器中不起作用。所以如果需要兼容IE7,可以考虑使用其他方法来解决这个问题。
问题原因:输入框的宽度设置为100%时,实际宽度会超出100%的大小,因为输入框默认有边框,并且可能有内边距和外边距,这符合W3C盒模型规范。
解决方法:给包含输入框的td添加内边距,手动调整输入框的宽度,直到达到所需位置。需要注意的是,如果给输入框添加了内边距,则需要在td中添加相同的内边距来抵消扩展。
另一种解决方法:使用CSS3版本的box-sizing属性,可以在两种盒模型之间切换,并使其表现如您所期望的那样。
以下是可能与此问题相同的一些重复问题:
- can i stop 100% width text boxes from extending beyond their containers
- Problem with input type='text' and textarea width
- 100% Width div's and form elements + padding?
文章来源:[Stack Overflow](https://stackoverflow.com/questions/67235464)
解决方法示例代码:
input { width: 100%; padding: 10px; margin: 0px; } table .last, td:last-child { padding: 2px 24px 2px 0px; }
替代解决方法示例代码:
input { width: 100%; padding: 10px; margin: 0px; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; }