【问题标题】:How do I prevent the border of an element consuming its padding in Chrome?如何防止元素的边框在 Chrome 中消耗其填充?
【发布时间】:2022-01-24 23:20:32
【问题描述】:

我想要的是一个带有背景颜色的文本,在一些空间下方(例如,通过示例中的边框填充),然后是彩色下划线(通过示例中的边框底部)。

下面的 sn-p 正是我在 Firefox 中想要的。 然而,在 Chrome 中,边框似乎“消耗”了填充,使得文本背景颜色和下划线之间没有空间。

#test {
    background-color: red;
    border-bottom: 5px solid blue;
    padding-bottom: 5px;
    margin: 0px;
    background-clip: content-box;
    -webkit-background-clip: content-box;
}
<div>
  <span id="test">Test div</span>
</div>

这种行为是否记录在某处,更重要的是,有没有办法在 Chrome 中防止这种情况发生?

【问题讨论】:

    标签: html css google-chrome chromium


    【解决方案1】:

    span一个display:inline-block;,它会像在Firefox中一样工作。

    #test {
        background-color: red;
        border-bottom: 5px solid blue;
        padding-bottom: 5px;
        margin: 0px;
        background-clip: content-box;
        -webkit-background-clip: content-box;
        display:inline-block;
    }
    <div>
      <span id="test">Test div</span>
    </div>

    解释:inline 元素往往不尊重 padding-top(或底部)导致一些不一致的跨浏览器体验。你可以阅读更多关于这个几乎相同的问题:Padding for Inline Elements

    【讨论】:

    • 这行得通,谢谢!但是,在我最初的问题中,我在父 div 中将 line-height 属性设置为 200%。如果我使用display: inline-block,那么该元素会填充我不想要的整个行高。您知道在这种情况下该怎么做吗?
    • 我不确定为什么需要 200% 的行高?如果我能看到全貌,也许我会有一些想法。
    • 我有一个长文本,它跨越多行,并在原始问题中描述的文本注释中。现在我不希望不同行上的注释重叠或相邻。请参阅此处的示例:jsfiddle.net/8t5k3drv/5。 Firefox 中的第一个版本正是我想要的,但在 Chrome 中不起作用,而在带有 inline-block 的第二个版本中,注释在 y 轴上拉伸太多了。
    • 我希望你可以使用这样的伪选择器:jsfiddle.net/phucbm/e6df4L3a/7。我想将红色背景和蓝色下划线分开,以便我们可以更精确地调整它们之间的间距。
    • 不幸的是,在我更大的示例中,使用伪元素会破坏文本流。我最终如何解决它是使用嵌套元素,一个用于背景,一个用于下划线:jsfiddle.net/kyhvcr3t
    猜你喜欢
    • 2016-01-26
    • 2012-06-13
    • 2011-07-07
    • 2016-12-29
    • 2021-12-01
    • 2023-01-10
    • 2017-03-02
    • 2011-03-01
    相关资源
    最近更新 更多