1. 运用 background-clip 完成文字突变
1.1 完成计划
如上图所示,background-clip
设置元素的布景(布景图片或色彩)是否延伸到边框、内边距盒子、内容盒子下面。
运用background-clip: text;
能够完成布景(布景图片或色彩)被裁减为文字的前景色,可是如果文字设置色彩,则无法收效,如左 1 所示,依然显现文字色彩。
这时,能够将文字设置为通明,但考虑到兼容性问题,在部分浏览器如果background-clip
无法收效且文字设置为通明,则会导致文字丢失。这时能够考虑用-webkit-text-fill-color
,此属性的优先级大于color
,能够指定文本的填充色彩,如左 2 所示。
最终一步就是将布景图片设置为线性突变,能够运用 linear-gradient
,如右 1 所示。
完整的 css 代码如下:
background-image: linear-gradient(to bottom, #ec428c, #32d1d3); // 布景线性突变
color: #ffffff; // 兜底色彩,避免文字裁剪不收效
background-clip: text;
-webkit-background-clip: text; // 布景被裁减为文字的前景色
-webkit-text-fill-color: transparent; // 文字填充为通明,优先级比color高。
1.2 踩坑 1: 线性突变字体消失
在低端 ios 机型上,呈现过线性突变字体消失的问题,排查发现是因为background-clip
无法 display: flex
布局下收效。所以开发过程中务必做好兜底,避免这两种样式呈现在同一个 dom 上。
1.3 踩坑 2: 线性突变字体在部分 ios 机型上呈现竖线
运用这种办法完成线性突变,在部分 ios 机型上会呈现古怪的竖线,能够将布景设置为no-repeat
,并恰当缩小。
background-repeat: no-repeat;
background-size: 98% 98%;
background-position: 50% 50%;
2. 运用 -webkit-mask 完成文字突变
-webkit-mask
借鉴了蒙版的概念,在图片上完成了一定的遮罩作用。有图片蒙版和突变蒙版两种写法,如上图所示,运用-webkit-mask: linear-gradient(to bottom, #000000,transparent);
创立从上到下从黑色到通明的蒙版遮罩图片,黑色部分会彻底显现,通明部分会遮罩。
基于这个原理,能够完成文字突变作用,如上图所示,使用:after
的原理,在文字上方叠加一层相同的文字,然后使用-webkit-mask: linear-gradient(to bottom, #000000,transparent);
线性突变遮罩一半的文字,就完成了两种色彩突变。
具体的代码参考如下:
.title {
position: relative;
color: #ec428c;
&::after {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
z-index: 10;
color: #32d1d3;
-webkit-mask: linear-gradient(to bottom, transparent, #000);
white-space: nowrap;
}
}
<div class="title" data-text="文字突变">文字突变</div>
该办法的缺陷是只能完成两种色彩突变。