CSS 奇技淫巧 | 妙用混合模式实现文字镂空波浪效果

简介: CSS 奇技淫巧 | 妙用混合模式实现文字镂空波浪效果

本文将介绍一个小技巧,通过混合模式 mix-blend-mode 巧妙的实现文字的镂空波浪效果。


起因


一日,一群友私聊问我。如何使用 CSS 实现下述效果,一个文字的波浪效果:


a29525b9d1f945caa4c8ec97dab925de_tplv-k3u1fbpfcp-zoom-1.gif


我当时想都没想,就回答道,这个很简单啊。


3ae7f951f4374d5e96a89375a8ebff1a_tplv-k3u1fbpfcp-zoom-1.png


熟练的打开 CodePen,一顿操作,卧槽,好像事情没有那么简单。想要用纯 CSS 实现起来非常的棘手。


纯 CSS 实现波浪效果



在进入正题前,我们先复习下,使用 CSS 实现波浪,如果不是在镂空的文字内,而是在一个 div 容器内,可以使用滚动大圆的方式,类似于这样:

28265844-61b7a690-6b24-11e7-91c7-c5b8501487ab.gif


容器应用 overflow: hidden,就能得到这样的效果:

cda55b099ae543f9870cef5844108a5d_tplv-k3u1fbpfcp-zoom-1.gif

对这个技巧还不理解,可以猛击这篇文章:纯 CSS 实现波浪效果!


如何在文字中应用此效果



OK,回归正题,那么如何在文字中应用此效果呢?


问题出在哪里呢?


我们首先尝试下,白底黑字,加上该效果:


<div class="g-container">
    <p>TEXT WAVE</p>
</div>

核心的 CSS 伪代码如下:


p {
    background: #fff;
    color: #000;
    &::before,
    &::after {
        content: "";
        position: absolute;
        border-radius: 45% 48% 43% 47%;
        background: rgba(3, 169, 244, .85);
        animation: rotate 10s infinite linear;
    }
    &::after {
        border-radius: 43% 47% 44% 48%;
        animation: rotate 10s infinite .5s linear;
    }
}
@keyframes rotate {
    0% {
        transform: translate(-50%, -50%) rotate(0);
    }
    100% {
        transform: translate(-50%, -50%) rotate(360deg);
    }
}


效果大概是这样:

134373770-a169a541-eaa0-4cdf-9252-9d263afa34ef.gif

当然,我们也可以把它放置到文字层下面,更直观点:


p {
    ...
    &::before,
    &::after {
        ...
      + z-index: -1;  
    }
}


50239430b5294aa88773b7a5792e3720_tplv-k3u1fbpfcp-zoom-1.gif

Oh,太糟糕了,仅仅这样是没法实现 -- 只是文字被镂空,文字内部才有波浪效果。


尝试使用让文字透明


我们要尝试让文字透明


  1. 可以使用 color: transparent 使文字透明
  2. 尝试使用 background-clip 实现


emmm,逐一尝试下。如果字体设置为透明,由于 <p> 设置了白色底色,字体颜色也就会变成白色。整体就是一幅白,失败。


那如果背景设置为黑色,并且设置 background-clip: text 呢?字体依然是黑色,波浪依旧无法进到镂空的字体中~


p {
  + background-clip: text;
}


也就是这样:

134382780-0825a93e-e8fb-4792-b73b-4996e7a284cd.gif

强大的混合模式


看来此路不通,只能另辟蹊径。


在 CSS 中,其他能对颜色进行处理的,一是滤镜 filter,另外一个就是混合模式 mix-blend-mode,在这里,脑袋里快速闪过各个滤镜,应该都不行。但是混合模式,倒是能够尝试一下。


在 CSS 中也有混合模式(mix-blend-mode、background-blend-mode),混合模式最常见于 photoshop 中,是 PS 中十分强大的功能之一,目前在 CSS 中得到了非常好的支持。


我们尝试给两个大圆,添加混合模式,在当前的配色下,也就是白底黑字的情况下,滤掉白底下的蓝色。


134511286-08e0a768-4dd0-43bd-8f3d-28aafcb58420.gif

Wow,当给两个波浪圆形加上 mix-blend-mode: lighten 时,成功的在白底上过滤掉了蓝色,只在黑色字体上能够看到蓝色波浪的效果。

当然,另外一个混合模式 mix-blend-mode: screen 也能达到类似的效果:


134511628-5b657477-680f-4a82-a50f-8bb82aebc800.gif


至此,通过混合模式,我们巧妙的实现了这样一个文字镂空的波浪效果。通过混合模式的特性,过滤掉了效果中一些我们不希望看见的颜色,只让正确的颜色在正确的地方出现。


完整的代码你可以猛击:CSS 灵感 - 使用混合模式叠加实现文字波浪效果

目录
相关文章
|
1月前
|
前端开发
css显示模式
块级元素 独占一行 宽度默认是父级的100% 添加宽高属性生效 行内元素 尺寸由内容决定 添加宽高属性不生效 行内块元素 尺寸由内容决定 添加宽高属性生效
|
1月前
CSS3制作的聚光灯下倒影文字选装动画特效源码
CSS3聚光灯下倒影文字特效是一段基于CSS3实现的聚光灯下带倒影的文字旋转动画效果代码,具有真实的视觉感,同时文字还会在旋转过程中显示出灯光的反射效果,很有意思,欢迎对此段代码感兴趣的朋友前来下载使用。
30 6
|
1月前
纯css3发光霓虹灯文字闪烁特效代码
纯css3发光霓虹灯文字闪烁特效代码是一款彩色的店铺名称文字动画特效。
36 6
|
1月前
jQuery+CSS3模拟过山车动态的文字动画特效源码
jQuery+CSS3模拟过山车动态的文字动画特效源码实现在全黑的背景下,画面中的文本呈现过山车的轨迹动画上下滚动转圈,且伴随文本颜色渐变效果,非常有意思,欢迎对此特效感兴趣的朋友前来下载参考。
23 1
|
3月前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
64 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
4月前
|
前端开发
简单几行代码CSS实现网页自动打文字效果
简单几行代码CSS实现网页自动打文字效果
60 1
简单几行代码CSS实现网页自动打文字效果
|
2月前
|
Web App开发 前端开发 iOS开发
|
4月前
|
前端开发
CSS流光文字效果:打造网页上的霓虹灯效果!
CSS流光文字效果:打造网页上的霓虹灯效果!
|
25天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
51 7