css实现文字颜色渐变的三种方法

技术标签: css  css3  html

在web前端开发过程中,UI设计师经常会设计一些带渐变文字的设计图,在以前我们只能用png的图片来代替文字,今天可以实现使用纯CSS实现渐变文字了。下面就介绍3中实现方式供大家参考!

基础样式:

1

.gradient-text{text-align: left;text-indent:30px;line-height: 50px;font-size:40px;font-weight:bolder; position: relative; }

第一种方法,使用 background-cli、 text-fill-color:

1

2

3

4

5

.gradient-text-one{ 

    background-image:-webkit-linear-gradient(bottom,red,#fd8403,yellow);

    -webkit-background-clip:text;

    -webkit-text-fill-color:transparent;

}

说明 :

background: -webkit-linear-gradient(…) 为文本元素提供渐变背景。

webkit-text-fill-color: transparent 使用透明颜色填充文本。

webkit-background-clip: text 用文本剪辑背景,用渐变背景作为颜色填充文本。

第二种方法,使用 mask-image:

1

2

3

4

5

6

7

8

9

10

11

12

13

.gradient-text-two{

   color:red;

}

.gradient-text-two[data-content]::after{

    content:attr(data-content);

    display: block;

    position:absolute;

    color:yellow;

    left:0;

    top:0;

    z-index:2;

    -webkit-mask-image:-webkit-gradient(linear, 0 0, 0 bottom, from(yellow), to(rgba(0, 0, 255, 0)));

}

说明:

mask-image 和 background-image 一样,不仅可以取值是 图片路径,也可以是渐变色。

第三种方法,使用 linearGradient、fill:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

.gradient-text-three{

    fill:url(#SVGID_1_);

    font-size:40px;

    font-weight:bolder;

}

 

<svg viewBoxs="0 0 500 300" class="svgBox">

    <defs>

        <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="0" y1="10" x2="0" y2="50">

            <stop  offset="0" style="stop-color:yellow"/>

            <stop  offset="0.5" style="stop-color:#fd8403"/>

            <stop  offset="1" style="stop-color:red"/>

        </linearGradient>

    </defs>

    <text text-anchor="middle" class="gradient-text-three" x="110px" y="30%">花信年华</text>

</svg>

说明:

在SVG中,有两种主要的渐变类型

 

线性渐变(linearGradient)

放射性渐变(radialGradient)

SVG中的渐变不仅可以用于填充图形元素,还可以填充文本元素

dom示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

    <title>CSS3渐变字体</title>

    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">

    <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>

    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

    <style type="text/css">

        *{margin:0;padding:0;}

        body,html{width:100%;height:100%;}

        .wrapper{width:80%;margin:0 auto;margin-top:30px;}

        .gradient-text{text-align: left;text-indent:30px;line-height: 50px;font-size:40px;font-weight:bolder; position: relative; }

        .gradient-text-one{ 

            background-image:-webkit-linear-gradient(bottom,red,#fd8403,yellow);

            -webkit-background-clip:text;

            -webkit-text-fill-color:transparent;

        }

        .gradient-text-two{

            color:red;

        }

        .gradient-text-two[data-content]::after{

            content:attr(data-content);

            display: block;

            position:absolute;

            color:yellow;

            left:0;

            top:0;

            z-index:2;

            -webkit-mask-image:-webkit-gradient(linear, 0 0, 0 bottom, from(yellow), to(rgba(0, 0, 255, 0)));

        }

        .gradient-text-three{

            fill:url(#SVGID_1_);

            font-size:40px;

            font-weight:bolder;

        }

    </style>

</head>

<body>

    <section class="wrapper">

        <div class="panel panel-info">

            <div class="panel-heading">

                <h3 class="panel-title">方法1. background-clip + text-fill-color</h3>

            </div>

            <div class="panel-body">

                <h3 class="gradient-text gradient-text-one">花样年华</h3>

            </div>

        </div>

        <div class="panel panel-warning">

            <div class="panel-heading">

                <h3 class="panel-title">方法2. mask-image</h3>

            </div>

            <div class="panel-body">

                <h3 class="gradient-text gradient-text-two" data-content="豆蔻年华">豆蔻年华</h3>

            </div>

        </div>

        <div class="panel panel-danger">

             

            <div class="panel-heading">

                <h3 class="panel-title">方法3. svg linearGradient</h3>

            </div>

  

            <div class="panel-body">

                <svg viewBoxs="0 0 500 300" class="svgBox">

                    <defs>

                        <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="0" y1="10" x2="0" y2="50">

                            <stop  offset="0" style="stop-color:yellow"/>

                            <stop  offset="0.5" style="stop-color:#fd8403"/>

                            <stop  offset="1" style="stop-color:red"/>

                        </linearGradient>

                    </defs>

                    <text text-anchor="middle" class="gradient-text-three" x="110px" y="30%">花信年华</text>

                </svg>

            </div>

  

        </div>

    </section>

</body>

</html>

效果:
 

来源:https://www.jb51.net/css/647191.html


智能推荐

C# 如何添加第三方控件

首先要将.dll 添加到项目的引用中去,并且using 这个 .dll,之后打开UI界面打开工具箱,将.dll粘贴进工具箱中,之后会在常规中看到第三方控件了,直接将控件添加到UI界面中就OK啦! 注意引用的Dll的.NET框架(目标版本)必须低于项目的版本。如果高于项目版本会编译失败...

树莓派与STM32通讯

树莓派与STM32用USB转TTL作数据传输 1.查询本机IP并记下这个IP 重新打开PUTTY,选择SSH登录方式 STM32 TX RX与USB转TTL模块反接 共地 先烧录简单的代码,每秒打印1个数字。 将USB转TTL接入树莓派,安装serial,用于串口通信及USB通信: sudo apt-get install python-serial 配置minicom:sudo minicom ...

基于windows10下安装docker,并配置IDEA

一、首先去docker官网下载https://www.docker.com/。这里需要翻墙后注册登录后才能下载。这里下载的是 docker for windows 千万别下错了。 二、在安装之前需要打开电脑的 Hyper-v 必须先打开这个,不然会安装失败。 同时也要打开电脑的虚拟化,这个怎么打开就自行百度了。 三、重启电脑后直接运行docker for windows安装包就可以。所有的都是默认...

java基础 ~ 方法(方法声明、调用、方法重载、可变参数列表)

  一、方法声明 二、调用            类对象名 . 方法名(参数列表-实参); 【注意】: 1、主方法中,调用自定义方法时,只能通过类对象去调用; 2、同类中自定义方法调用另外自定义方法时,可以直接通过方法名调用;   方法传值问题: 1、基本数据类型传值:     ...

拼多多社招面经:Redis是重点,https是怎么做到安全的?

1、简单做一下自我介绍把,为什么这么快就想换工作。简单说下你简历中的项目。 2、看你在项目中用了redis,我们先聊聊redis吧,常用的数据结构有哪几种,在你的项目中用过哪几种,以及在业务中使用的场景,redis的hash怎么实现的,rehash过程讲一下和JavaHashMap的rehash有什么区别? redis cluster有没有了解过,怎么做到高可用的? 3redis集群和哨兵机制有什...

猜你喜欢

【预告】为创客而生,RT-Thread 发布全新 DIY 开源硬件

01 背景 作为一名嵌入式软件工程师,除了完成日常的工作以外,总是会迸发出一些新奇的 DIY 小想法,为了实现他们,就需要有一些扩展接口丰富的开源硬件,但是市面上很难找到一款 MCU 强劲,资源丰富,扩展便捷,开发方便的 DIY 开源硬件。很多时候这些想法只能遗憾的抛在脑后,为此 RT-Thread 团队经过半年的精心准备推出了ART-Pi 极具扩展性的 DIY 开源硬件。 02 图片展示 03 ...

为什么要像经济学家那样思考

为什么要像经济学家那样思考 1.1 为什么要像经济学家那样思考(一):经济学中的帕累托效率 对某些人没有坏处,但对其他人有好处,就是说这件事有帕累托改进的余地,我感觉就是,在不产生坏影像的前提下,还有提升空间,其仍有帕累托改进 先效率后公平 先富带后富 为效率而公平 为城市建设者提供子女本地教育 为公平而公平 帮扶弱势群体 一种状态,没有帕累托改进的余地,我们称这种状态为帕累托有效 习题 为什么要...

(六)、Jmeter分布式部署

在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能。   (一)       Jmeter分布式执行原理:   1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做...

内网渗透--windows

windows基础命令 添加管理员用户,设置密码为123456 net user cly 123456 /add net localgroup administrators cly /add 如果远程桌面连接不上,那么可以添加远程桌面组 net localgroup "Remote Desktop Users" cly /add...

手机UI设计详解

一 尺寸理论知识   a.分辨率 分辨率又称显示分辨率、屏幕分辨率。 确定手机屏幕上显示多少信息的设置,以水平和垂直像素来衡量。 b.屏幕尺寸 屏幕大小的物理尺寸,以屏幕对角线长度来衡量 单位:英寸    1英寸=2.54厘米 c.像素密度(PPI) PPI(Pixels Per Inch)表示的是每英寸所拥有的 像素(Pixel)数目PPI值越高,画面的细节就越丰富...

问答精选

Removing XML format text from QnA Maker after publishing the knowledgebase every time

Removing XML format text from QnA Maker after publishing the knowledgebase every time Create knowledgebase in QnA Maker Added a question which has XML format text answer. For Example: Q: What is Statu...

convert hus and pes file to any types of images

I am trying to convert a massive number of hus and pes files (embroidery files). I was able to do it using ImageMagick in centos but I encountered memory allocation errors and also it only works for p...

PHP If URL Issue

Ok I have an issue with an if php command. Now the questions is how do you make it so with the $listingloadpage = "/listing/HERE" the HERE part I need to make it so that anything that is aft...

Rails4 reject_if and validation not working: unable to save without nested objects

I have these two models When I send parameters like this to create a transaction: I expect :reject_if to discard all of the order parameters, because none of them has 'menu_id' and actually :menu_id_v...

Redirect loop with CAS and Spring Security

I've set up a CAS 3.5.2 server on GlassFish 3.1.2.2 and now I am trying to protect a Jersey REST web service with CAS using Spring Security 3.2.0 by following the official documentation. My configurat...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答