我现在有点累了(喝咖啡),所以我无法弄清楚这一点。
当我设置p.style.width = auto
(蓝色)时,为什么width
处于 100%?没有任何元素的宽度设置为100%,所以我怀疑它是继承属性。
如何设置<p>
的宽度以匹配其内容宽度加上填充?
示例页面link
答案 0 :(得分:13)
由于width:auto
默认为 100%(即减去边框和填充,请参阅here),如果您不在浮动/定位< / strong>环境。实际上,没有
float:left
或
position: absolute
如果仅在CSS中将元素的宽度设置为最小值,那么你很幸运。例如,请参阅here,了解如何在Firefox中实现它(仅限)。
修改:您也可以使用
display: table;
width: auto;
但是,首先,所有浏览器也不支持此功能,然后表设计可能会给您带来各种其他问题。
编辑2 :根据DisgruntledGoat的建议,您也可以尝试display:inline-block
。 This 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
。