用mix-blend-mod属性让你的字体”动起来“

355 阅读1分钟

最近看Steve Sewell的推时学到的一招css trick,举个例子:

效果

chrome-capture-2022-5-9.gif

实现

<div class="container">
    <img src="https://thumbs.gfycat.com/AgonizingDecisiveBullmastiff-size_restricted.gif"/>
    <div class="text">mix-blend-mod</div>
</div>
<style>

.container {

    height: 7em;

    overflow: hidden;

    position: relative;

}

.container img {

    width: 100%;

    object-fit: cover;

}

.container .text {

    position: absolute;

    background-color: white;

    mix-blend-mode: lighten;

    inset: 0;

    font-size: 5em;

    font-weight: 900;

}

</style>

关键在于使用mix-blend-mod这个属性,它定义了两个不同的层(layer)如何blend在一起,在上面的例子中我们有一张海洋的gif图作为底层背景层,另外,在背景层之上,还有一个白色背景的深色字体层,然后我们使用mix-blend-mod: lighten;, lighten定义了浏览器将渲染两层之中更亮的像素,最终效果就是,在第一层字体层中白色的像素会被保留,而深色字体的像素将会被第二层背景层的像素所替代。

另外背景层除了gif之外也可以是video,你还可以使用javascript setInterval之类的方法实现字体的count up之类效果来使整体效果更加酷炫。

实际体验下吧:

Edit on CodeSandbox