css文字渐变色实现
CSS 实现文字渐变,有两种方法:
1. background 属性
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
.text-gradient {
background-image: linear-gradient(to right, orange, purple);
-webkit-background-clip: text;
color: transparent;
font-size: 30px; /* 下面还可以写文本阴影 */
}
</style>
</head>
<body>
<span class="text-gradient">文字渐变</span>
</body>
</html>
效果如下:
实现原理:
background-image
属性为该文字区域设置了一个渐变的背景色color:transparent
把这个区域里的文字颜色设置成了透明色background-clip:text
将背景裁剪成了文字的前景色
注意:
background-clip:text
目前支持大多浏览器,但是 IE 不可以
2. mask 属性
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
.text-gradient {
position: relative;
color: blue;
font-size: 30px; /* 下面还可以写文本阴影 */
}
.text-gradient:before {
content: attr(text); /* 这个是div的text属性的内容,如果div里面有值并且有颜色的话,则渐变色会跟这个颜色叠加 */
position: absolute;
z-index: 10;
color: orange;
-webkit-mask: linear-gradient(to right, transparent, orange);
}
</style>
</head>
<body>
<div text="文字渐变hahahah" class="text-gradient">文字渐变hahahah</div>
</body>
</html>
效果如下:
实现原理:
.text-gradient:before
用来生成一个新元素,content:attr(text)
让新元素的内容与原文本的内容相同,color:orange
将新元素文本设置为橙色-webkit-mask: linear-gradient(to right, transparent, orange)
为新元素添加了一个从左到右,从透明到橙色的渐变遮罩,before
元素中与mask的transparent
的重叠部分也变成了透明before
新元素与原div
蓝色文本叠加,形成了从左至右从蓝色到橙色的渐变效果
注意:
mask
目前支持大多浏览器,但是 IE 不可以