如何使用 CSS 通过此 HTML 布局创建挖空(透明)文本?
How can I use CSS to create knockout (transparent) text with this HTML layout?
我正在尝试创建一个布局,其中一些字母是透明的,后面有白色背景,但透明度一直显示到 HTML 层次结构上几个级别的渐变背景。基本上,我正在尝试实现以下目标:
这是我当前的 HTML 和 CSS:
.header {
background-image: linear-gradient(135deg, #2121CC, #1E0674);
}
.header>div {
align-items: center;
display: flex;
justify-content: space-between;
margin: auto;
max-width: 100rem;
padding: 1rem 2rem;
}
.header>div>h1 {
display: flex;
}
.header>div>h1>span {
background: #FFF;
color: transparent;
display: block;
margin-right: 1rem;
-webkit-text-fill-color: transparent;
}
<div class="header">
<div>
<h1>
<span>A</span>
<span>B</span>
</h1>
</div>
</div>
我参考了以下 CSS 有关如何执行此操作的技巧文章:
https://css-tricks.com/how-to-do-knockout-text/
但我的问题似乎是我希望文本透明并通过白色背景一直显示到 HTML 层次结构上三层的 .header
元素。
仅 CSS 就可以做到这一点吗?如果可以,怎么做?我已经尝试了我能想到的一切都无济于事。谢谢。
编辑:值得一提的是 CSS 技巧文章使用了 -webkit-background-clip: text;
属性,但是当我将其添加到我的 CSS,它不会改变任何东西,当您在浏览器中检查相应的元素时,它会被划掉。换句话说,我认为它不再受支持并且实际上不再做任何事情(我可能是错的)。
你可以看看mix-blend-mode
:
.header {
background-image: linear-gradient(135deg, red,#2121CC, #1E0674, yellow);
}
.header>div {
align-items: center;
display: flex;
justify-content: space-between;
margin: auto;
max-width: 100rem;
padding: 1rem 2rem;
}
.header>div>h1 {
display: flex;
}
.header>div>h1>span {
background: #FFF;
display: block;
margin-right: 1rem;
mix-blend-mode:screen
}
<div class="header">
<div>
<h1>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
</h1>
</div>
</div>
我正在尝试创建一个布局,其中一些字母是透明的,后面有白色背景,但透明度一直显示到 HTML 层次结构上几个级别的渐变背景。基本上,我正在尝试实现以下目标:
这是我当前的 HTML 和 CSS:
.header {
background-image: linear-gradient(135deg, #2121CC, #1E0674);
}
.header>div {
align-items: center;
display: flex;
justify-content: space-between;
margin: auto;
max-width: 100rem;
padding: 1rem 2rem;
}
.header>div>h1 {
display: flex;
}
.header>div>h1>span {
background: #FFF;
color: transparent;
display: block;
margin-right: 1rem;
-webkit-text-fill-color: transparent;
}
<div class="header">
<div>
<h1>
<span>A</span>
<span>B</span>
</h1>
</div>
</div>
我参考了以下 CSS 有关如何执行此操作的技巧文章:
https://css-tricks.com/how-to-do-knockout-text/
但我的问题似乎是我希望文本透明并通过白色背景一直显示到 HTML 层次结构上三层的 .header
元素。
仅 CSS 就可以做到这一点吗?如果可以,怎么做?我已经尝试了我能想到的一切都无济于事。谢谢。
编辑:值得一提的是 CSS 技巧文章使用了 -webkit-background-clip: text;
属性,但是当我将其添加到我的 CSS,它不会改变任何东西,当您在浏览器中检查相应的元素时,它会被划掉。换句话说,我认为它不再受支持并且实际上不再做任何事情(我可能是错的)。
你可以看看mix-blend-mode
:
.header {
background-image: linear-gradient(135deg, red,#2121CC, #1E0674, yellow);
}
.header>div {
align-items: center;
display: flex;
justify-content: space-between;
margin: auto;
max-width: 100rem;
padding: 1rem 2rem;
}
.header>div>h1 {
display: flex;
}
.header>div>h1>span {
background: #FFF;
display: block;
margin-right: 1rem;
mix-blend-mode:screen
}
<div class="header">
<div>
<h1>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
<span>A</span>
<span>B</span>
</h1>
</div>
</div>