我需要使用CSS 实现透明strikethrought文本,因此我不必用<h1>
标记替换<img>
标记。我已经设法使用CSS在文本上实现了直通,但我无法使其透明。
期望的效果:
我有什么:
body{
background: url(http://lorempixel.com/output/people-q-c-640-480-1.jpg);
background-size:cover;
}
h1{
font-family:arial;
position:relative;
display:inline-block;
}
h1:after{
content:'';
position:absolute;
width:100%;
height:2px;
left:0; top:17px;
background:#fff;
}
&#13;
<h1>EXAMPLE</h1>
&#13;
如何实施透明的strikethrought,它可以挤出我的文字并允许背景出现在这一行中。
答案 0 :(得分:21)
使用line-height
和overflow:hidden;
属性,您只能使用CSS实现透明文本。
演示: CSS transparent strike through
输出:
说明:
<h1>
使用em单位隐藏height:0.52em; overflow:hidden;
文字的底部,以便高度适应您用于的字体大小<h1>
标记为fiddle line-height:0;
相关代码:
body{
background: url(http://lorempixel.com/output/people-q-c-640-480-1.jpg);
background-size:cover;
}
h1{
font-family:arial;
position:relative;
}
h1 span, h1:after{
display:inline-block;
height:0.52em;
overflow:hidden;
font-size:5em;
}
h1:after{
content: attr(data-content);
line-height:0;
position:absolute;
top:100%; left:0;
}
<h1 data-content="EXAMPLE" ><span>EXAMPLE</span></h1>
此效果的另一种方法是使用带有mask element的SVG。 demo显示了该方法,此处是相关代码:
*{margin:0;padding:0;}
html,body{height:100%;}
body{background: url(https://farm8.staticflickr.com/7140/13689149895_0cce1e2292_o.jpg) center bottom; background-size:cover;text-align:center;}
svg{
text-transform:uppercase;
color:darkorange;
background: rgba(0,0,0,0.5);
margin-top:5vh;
width:85%;
padding:0;
}
<svg viewbox="0 0 100 13">
<defs>
<mask id="strike">
<rect x="0" y="0" width="100" height="13" fill="#fff" />
<rect x="0" y="5" width="100" height="1" />
</mask>
</defs>
<text id="text1" x="50" y="8.5" font-size="7" text-anchor="middle" fill="darkorange" mask="url(#strike)">SVG strike through</text>
</svg>
答案 1 :(得分:4)
您可以使用屏蔽
在webkit浏览器中实现此目的CSS
h1 {
-webkit-mask-image: linear-gradient(0deg, white 20px, transparent 20px, transparent 24px, white 24px);
}