代码之家  ›  专栏  ›  技术社区  ›  Petr Peller

设置宽度:自动导程到宽度:100%

  •  11
  • Petr Peller  · 技术社区  · 15 年前

    我现在有点累(没咖啡了),所以我想不出来。

    当我准备好的时候 p.style.width = auto (蓝色的那个),为什么 width 100% ?没有一个元素的宽度设置为100%,所以我怀疑它是继承的属性。

    我怎么设置 <p> 的宽度是否匹配其内容宽度加上填充?

    样本页 link

    3 回复  |  直到 8 年前
        1
  •  13
  •   Hari Harker    8 年前

    因为 width:auto 默认为 100% (也就是说,减去边界和填充,见 here ,如果您不在 浮动/定位 环境。实际上,没有

    float:left
    

    position: absolute
    

    只在css中将元素的宽度设置为最小值是非常不走运的。参见,例如 here 关于如何在Firefox中实现它(仅限)。

    编辑: 你也可以用

    display: table;
    width: auto;
    

    但是,首先,这在所有浏览器中也不受支持,然后表设计可能会给您带来各种各样的麻烦。

    编辑2: 你也可以,按照不穿衣服的人的建议,试试看。 display:inline-block . This page 提供针对IE6+、FF2+、Safari 3+和Opera的跨浏览器实现。

        2
  •  5
  •   Mike Tunnicliffe    11 年前

    规范中都有说明

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

    O.O

    本质上,自动意味着考虑到所有其他指定的填充、边框和边距,填充剩余的空间(假设只有宽度设置为自动)。所以实际上100%减去边框、填充和边距。

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

        3
  •  4
  •   DisgruntledGoat    15 年前

    其他人是对的, width: auto 设置填充所有可用空间的宽度。

    一种解决方案是 display: inline-block ,应该做你想做的。为了与IE6兼容,最好将其应用于类似 <span> .并添加 display: -moz-inline-box 适用于Firefox 2及更早版本。