带有伪元素的标题上的背景颜色

时间:2014-10-10 09:10:51

标签: html css background-color pseudo-element css-content

我正在尝试用尾随条形成标题。我使用了伪元素::after

我的问题是标题的背景颜色应该"阻挡"位于""下的::after元素的一部分标题本身 - 但它没有。

HTML:

<div>
    <h3>TEST</h3>
    <p>blah blah blah blah blah blah blah blah blah blah blah</p>
    <h3>TEST 2</h3>
    <p>blah blah blah blah blah blah blah blah blah blah blah</p>
</div>

CSS:

body{
    font-size: 0.9em;
    font-family: Arial;
}
div{
    width: 300px;
    margin: 0 auto;
}
h3{
    font-size: 200%;
    background-color: hsl(0, 0%, 100%);
    margin: 0px;
    display: inline-block;
    padding-right: 20px;
}
h3::after{
    content: '';
    display: block;
    width: 300px;
    height: 1.3rem;
    background: hsl(200, 30%, 20%);
    margin-top: -1.7rem;
}

jsFiddle

2 个答案:

答案 0 :(得分:2)

您只需将文本包装在span元素中,就会更加简单(并支持更广泛的浏览器):

<h3><span>TEST</span></h3>

然后为您的h3元素显示所需背景颜色的block元素,然后为您的span元素显示带有覆盖颜色的inline-block元素:

h3{
    font-size: 200%;
    background: hsl(200, 30%, 20%);
    margin: 0px;
    display: block;
    padding-right: 20px;
}

h3 span {
    background: hsl(0, 0%, 100%);
    display: inline-block;
}

JSFiddle demo

然后,您可以通过为span元素提供所需的padding来补偿这一点。

答案 1 :(得分:1)

绝对定位伪元素......它也更清洁css。

JSfiddle Demo

<强> CSS

body{
    font-size: 0.9em;
    font-family: Arial;
}

div{
    width: 300px;
    margin: 0 auto;
}
h3{
    font-size: 200%;
    background-color: hsl(0, 0%, 100%);
    margin: 0px;
    position: relative;
    overflow: hidden;
}
h3::after{
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    margin-left: 20px;
    background: hsl(200, 30%, 20%);

}