如何使用混合混合模式和我选择的颜色在视频上叠加文本?
How do use mix-blend-mode with the color of my choice to overlay text on a video?
我需要我的文字对其背后的视频透明,而不是文字的背景。
<main>
<div class="container">
<video
src="./pexels-tima-miroshnichenko-5377684.mp4"
autoplay
muted
loop
></video>
<h2>Hello There!</h2>
</div>
</main>
main {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.container {
width: 60%;
height: fit-content;
overflow: hidden;
display: grid;
}
video,
h2 {
grid-column: 1;
grid-row: 1;
width: 100%;
display: inline;
}
.container h2 {
margin: 0;
height: 100%;
background: #ffdb99;
font-size: 13vw;
padding: 0;
color: #fff;
text-align: center;
text-transform: uppercase;
z-index: 2;
mix-blend-mode: screen;
font-family: 'Poppins', sans-serif;
}
这是结果:
image of text/video overlay
我需要背景保持不透明,但文本对后面的视频透明!
感谢您提前输入!!
希望我的问题很清楚!
此解决方案不适用于视频,但取决于您的视频是否可以使用 GIF?
如果这对您有用,那么您可以将 GIF 或图像设为 h2
的背景,并使用 -webkit
使文本透明。
main {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.container {
/* Put your solid colour background for your div */
background: #ffdb99;
width: 60%;
height: fit-content;
overflow: hidden;
display: grid;
}
.container h2 {
/* This makes the text transparent */
color: white; /* incase the transparency doesn't work */
background: url("https://media.giphy.com/media/115BJle6N2Av0A/giphy.gif") no-repeat;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-size: cover;
margin: 0;
font-size: 13vw;
padding: 0;
text-align: center;
text-transform: uppercase;
font-family: 'Poppins', sans-serif;
}
<main>
<div class="container">
<h2>Hello There!</h2>
</div>
</main>
我不知道如何使用 mix-blend-mode 执行此操作,因为您不能将视频作为正常 CSS 意义上的背景。
但您可以通过在后台 'cutting text holes' 并使用 SVG 蒙版将整个内容覆盖在视频上来实现效果。
这是一个示例,您可以选择颜色,因为它不受任何混合或遮罩的影响:
* {
margin: 0;
padding: 0;
}
video {
width: 100%;
height: auto;
z-index: -1;
position: relative;
top: 50%;
transform: translateY(-50%);
}
svg {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
text {
font-size: 10vmin;
text-anchor: middle;
font-family: sans-serif;
}
<video src="https://www.w3schools.com/html/mov_bbb.mp4" autoplay muted loop></video>
<svg width="33vw" height="33vh">
<mask id="mask" height="100%" width="100%">
<rect x="0" y="0" width="100%" height="100%" fill="#fff"></rect>
<text>
<tspan x="50%" dy="1.2em">HELLO</tspan>
<tspan x="47%" dy="1em">THERE!</tspan>
</text>
</mask>
<rect width="100%" height="100%" mask="url(#mask)" fill="#ffdb99"></rect>
</svg>
我需要我的文字对其背后的视频透明,而不是文字的背景。
<main>
<div class="container">
<video
src="./pexels-tima-miroshnichenko-5377684.mp4"
autoplay
muted
loop
></video>
<h2>Hello There!</h2>
</div>
</main>
main {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.container {
width: 60%;
height: fit-content;
overflow: hidden;
display: grid;
}
video,
h2 {
grid-column: 1;
grid-row: 1;
width: 100%;
display: inline;
}
.container h2 {
margin: 0;
height: 100%;
background: #ffdb99;
font-size: 13vw;
padding: 0;
color: #fff;
text-align: center;
text-transform: uppercase;
z-index: 2;
mix-blend-mode: screen;
font-family: 'Poppins', sans-serif;
}
这是结果: image of text/video overlay
我需要背景保持不透明,但文本对后面的视频透明!
感谢您提前输入!! 希望我的问题很清楚!
此解决方案不适用于视频,但取决于您的视频是否可以使用 GIF?
如果这对您有用,那么您可以将 GIF 或图像设为 h2
的背景,并使用 -webkit
使文本透明。
main {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.container {
/* Put your solid colour background for your div */
background: #ffdb99;
width: 60%;
height: fit-content;
overflow: hidden;
display: grid;
}
.container h2 {
/* This makes the text transparent */
color: white; /* incase the transparency doesn't work */
background: url("https://media.giphy.com/media/115BJle6N2Av0A/giphy.gif") no-repeat;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-size: cover;
margin: 0;
font-size: 13vw;
padding: 0;
text-align: center;
text-transform: uppercase;
font-family: 'Poppins', sans-serif;
}
<main>
<div class="container">
<h2>Hello There!</h2>
</div>
</main>
我不知道如何使用 mix-blend-mode 执行此操作,因为您不能将视频作为正常 CSS 意义上的背景。
但您可以通过在后台 'cutting text holes' 并使用 SVG 蒙版将整个内容覆盖在视频上来实现效果。
这是一个示例,您可以选择颜色,因为它不受任何混合或遮罩的影响:
* {
margin: 0;
padding: 0;
}
video {
width: 100%;
height: auto;
z-index: -1;
position: relative;
top: 50%;
transform: translateY(-50%);
}
svg {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
text {
font-size: 10vmin;
text-anchor: middle;
font-family: sans-serif;
}
<video src="https://www.w3schools.com/html/mov_bbb.mp4" autoplay muted loop></video>
<svg width="33vw" height="33vh">
<mask id="mask" height="100%" width="100%">
<rect x="0" y="0" width="100%" height="100%" fill="#fff"></rect>
<text>
<tspan x="50%" dy="1.2em">HELLO</tspan>
<tspan x="47%" dy="1em">THERE!</tspan>
</text>
</mask>
<rect width="100%" height="100%" mask="url(#mask)" fill="#ffdb99"></rect>
</svg>