当宽度设置为 100% 时,div 的内容比 div 本身长吗? [复制]

Posted

技术标签:

【中文标题】当宽度设置为 100% 时,div 的内容比 div 本身长吗? [复制]【英文标题】:Content of div is longer then div itself when width is set to 100%? [duplicate] 【发布时间】:2011-07-10 07:04:21 【问题描述】:

我有固定宽度的div 仅包含input 文本框,并且width 其中input 设置为100%。我希望它能填满div,但它会稍长一些。

演示代码:

html

<div class="container">
    <input class="content" id="Text1" type="text" />
</div>

CSS:

.container

    width: 300px;
    height: 30px;
    border: thin solid red;

.content

    width: 100%;

结果(火狐):

在 IE 8、Chrome、Safari 中也会发生这种情况...溢出宽度似乎在不同的浏览器中有所不同。 如何使内容完全填满div 的宽度?

【问题讨论】:

【参考方案1】:

还为您的页面添加 CSS 重置。输入可能添加了一些填充!

【讨论】:

overflow: auto 无济于事。事实上,它只会添加丑陋的滚动条。【参考方案2】:

您需要重置内边距、边距和边框。如果你想在全站范围内应用它,你可以使用像 Eric Meyer's 这样的重置 css:http://meyerweb.com/eric/tools/css/reset/

或者你可以自己写。只需将其默认为您自己的值

【讨论】:

【参考方案3】:

box-sizing: border-box 是一种快速、简单的修复方法:

这个will work in all modern browsers,和IE8+。

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

.content 
    width: 100%;
    box-sizing: border-box;

See here 用于 icky IE7 兼容方法。

【讨论】:

那么这种奇怪行为的原因是什么? @drasto:您将width: 100% 应用于具有边框和填充的元素这一事实。 border-box 通过在 width: 100% 计算中包含此边框和填充 inside 来解决此问题。 所以我可以将 div 上的填充设置为 0 并删除边框(这只是为了显示问题 - 在生产 html 中不需要)来修复它? @drasto:不。这是input 元素上的边框/填充。要明白我的意思,看看这个夸张的演示:jsfiddle.net/QkmSk/4 这一定是有史以来最伟大的 CSS 属性。【参考方案4】:

当我使用您的代码时,它在 Firefox 上显示良好。我怀疑你对特异性有疑问:http://htmldog.com/guides/cssadvanced/specificity/

或者,周围的html有问题。 IE。未封闭的标签。

尝试将 CSS 和 HTML 放入一个普通文件中,看看它是否正确显示。如果是这样,我建议查看父元素的 CSS 属性。

如果您还没有,请下载 Firefox 的 Web Developer Toolbar,然后使用 CTRL + SHIFT + F 启用可点击元素属性显示。这将帮助您调试正在发生的事情。

希望这会有所帮助。

【讨论】:

这与特异性或无效 HTML 无关。请参阅我的答案的未修复版本:jsfiddle.net/QkmSk/1 - 不可否认,Firefox 中的效果不是很明显,但红色边框被 input 覆盖。 使用 Firefox 3.6.14 的情况并非如此。 OP 提供的代码在这里完美运行,无需任何调整。输入框在红色边框内。 我在 4 个主要浏览器中观察到问题,如问题所述,演示代码是用空白页 html 编写的,html 标签没有属性,所以我无法想象那里有任何问题。尝试按ctrl+'+' 提高浏览器的分辨率 hmm.. 看来我的浏览器已进入怪癖模式。 翻白眼 :)

以上是关于当宽度设置为 100% 时,div 的内容比 div 本身长吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将 min-width 设置为内容的宽度

如何css宽度设置为包含内容,高度设置为100%?

将 div 的高度设置为宽度的一半

外面的div设置了width为100%且有背景颜色,但当浏览器改变大小后,背景就没法出现100%的效果了!

CSS:外部DIV中有内部DIV,外部DIV的宽度300px,内部DIV宽度为100%,是按啥为基准的呢?

使图像宽度为父 div 的 100%,但不大于其自身宽度