设置宽度:自动导致宽度:100%

时间:2010-01-11 15:12:20

标签: html css

我现在有点累了(喝咖啡),所以我无法弄清楚这一点。

当我设置p.style.width = auto(蓝色)时,为什么width处于 100%?没有任何元素的宽度设置为100%,所以我怀疑它是继承属性。

如何设置<p>的宽度以匹配其内容宽度加上填充?

示例页面link

3 个答案:

答案 0 :(得分:13)

由于width:auto默认为 100%(即减去边框和填充,请参阅here),如果您不在浮动/定位< / strong>环境。实际上,没有

float:left

position: absolute

如果仅在CSS中将元素的宽度设置为最小值,那么你很幸运。例如,请参阅here,了解如何在Firefox中实现它(仅限)。

修改:您也可以使用

display: table;
width: auto;

但是,首先,所有浏览器也不支持此功能,然后表设计可能会给您带来各种其他问题。

编辑2 :根据DisgruntledGoat的建议,您也可以尝试display:inline-blockThis page提供了针对IE6 +,FF2 +,Safari 3+和Opera的跨浏览器实现。

答案 1 :(得分:5)

这一切都在规范中解释

http://www.w3.org/TR/CSS2/visudet.html#blockwidth

O.O

实质上,auto意味着考虑所有其他指定的填充,边框和边距,填充剩余空间(假设只有宽度设置为auto)。因此,有效地100%减去边界,填充和边距。

要修复,只需将其设置为与其他元素匹配,或将它们全部粘贴在具有设定宽度的包含元素中。

答案 2 :(得分:4)

其他正确,width: auto设置宽度以填充所有可用空间。

一种解决方案是使用display: inline-block,它应该做你想要的。为了与IE6兼容,最好将其应用于内联元素,如<span>。并为Firefox 2及更早版本添加display: -moz-inline-box