我正在尝试用尾随条形成标题。我使用了伪元素::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;
}
答案 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;
}
然后,您可以通过为span
元素提供所需的padding
来补偿这一点。
答案 1 :(得分:1)
绝对定位伪元素......它也更清洁css。
<强> 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%);
}