袖白雪 发表于 2021-5-23 10:27:39

通过CSS实现 文字渐变色 的两种方式

通过CSS实现 文字渐变色 的两种方式

这次的重点就在于两个属性,
background 属性
mask 属性
这两个属性分别是两种实现方式的关键。

方式一



<html>

<head>
    <meta charset="utf-8">
    <style>

    span {
      background: linear-gradient(to right, red, blue);
      -webkit-background-clip: text;
      color: transparent;
    }
    </style>
</head>

<body>
      <span>前端简单说</span>
</body>
</html>

其实是给background-image 设置为渐变色,不是 background-color ,是背景图 取值为渐变色
CSS3 渐变(Gradients)

background-clip 属性 规定背景的绘制区域

background-clip: border-box|padding-box|content-box;



上面没有说取值 text 的情况,看到前面的前缀,大家应该也能想到,它的兼容性问题了,目前还不是能所有浏览器都支持。

取值为text的意思,就是以区块内的文字作为裁剪区域向外裁剪,文字的背景即为区块的背景,文字之外的区域都将被裁剪掉。

所以,我们最后写color: transparent; 让文字为透明色,就是让后面背景色显示出来。



方式二


<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />

<style type="text/css">
    h1{
      position: relative;
      color: yellow;
    }
    h1:before{
      content: attr(text);
      position: absolute;
      z-index: 10;
      color:pink;
      -webkit-mask:linear-gradient(to left, red, transparent );
    }
</style>
</style>
</head>

<body>
    <h1 text="前端简单说">前端简单说</h1>
</body>

</html>

代码也不多,我们简单说一下,

:before 选择器向选定的元素 前 插入内容。
使用content 属性来指定要插入的内容。

content取值 attr 就是用来获取属性值的,content:attr(属性名);

content: attr(text); 能获取到元素的 text 属性,这里的这个text属性是自己自定义的一个属性,你也可以在元素中加一个 tt 属性,像这样
<h1 tt="前端简单说">前端简单说</h1>
然后content属性 这样写,content: attr(tt); 同样是可以起作用的。

好的我们继续说第二种方式的重点,mask属性,因为之前已经写过一篇介绍mask属性的文章了,

mask属性简单说,就是能让元素的某一部分显示或隐藏。
我们看张图就能明白,第二种方式实现的原理了


页: [1]
查看完整版本: 通过CSS实现 文字渐变色 的两种方式