转载请标明出处:蒋宇捷(hfahe) http://blog.csdn.net/hfahe
考虑一下,如何在网页中达到类似以下文字渐变的效果?
![](https://box.kancloud.cn/2016-08-02_57a05bd6610ee.gif)
传统的实现中,是用一副透明渐变的图片覆盖在文字上。具体实现方式可参考[http://www.qianduan.net/css-gradient-text-effect.html](http://www.qianduan.net/css-gradient-text-effect.html)。这种方式优点是图片可控,所以可实现很复杂的渐变效果,但是缺点是图片渐变色必须与背景色一致,同时损失了鼠标点击、文字选择等事件。
改进的方法可以使用CSS3的背景渐变-webkit-gradient,用一个背景渐变的DIV代替图片。下面是实现效果示例,相比以上方案优点是不使用图片,减小请求量和流量,但是对于以上缺点,仍然无法解决。
![](https://box.kancloud.cn/2016-08-02_57a05bd675177.gif)
有没有完美的解决方案呢?
以下介绍使用-webkit-mask遮罩的方案来实现文字渐变,完全避免了以上方案的不足。下面是实现的完美效果图:
![](https://box.kancloud.cn/2016-08-02_57a05bd689891.gif)
现在让我们开始CSS3 TextGradient之旅。
1、 构建HTML内容和基本样式:
我们使用一个H1标签包裹一个A标签:
<h1><a href="#" mce_href="#">Jiangyujie</a></h1>
样式定义如下,我们使用text-shadow为文字添加阴影:
~~~
h1 { font-family: Segoe UI, Verdana, sans-serif; font-size: 100px; line-height: 100px; text-shadow: -3px 0 4px #006;}h1 a:link,h1 a:visited,h1 a:hover,h1 a:active { color: #d12; text-decoration: none;}
~~~
基本效果如下:
![](https://box.kancloud.cn/2016-08-02_57a05bd6a674c.gif)
2、 添加渐变效果:
我们通过CSS3的mask属性为文字添加线性渐变。和background的渐变相比,可以理解为background是在文字后面,而mask是叠加在文字上面的。Mask可以设置为普通颜色、线性渐变、径向渐变或者图片。
代码如下:
~~~
h1 a:link,h1 a:visited,h1 a:hover,h1 a:active { color: #d12; text-decoration: none; -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));}
~~~
效果如下所示:
![](https://box.kancloud.cn/2016-08-02_57a05bd6bbc36.gif)
3、 渐变为另外一种颜色:
因为-webkit-gradient实际上是按照图片的方式进行处理的,所以我们不能通过设置文字颜色为渐变来实现文字颜色渐变为另外一种颜色的效果(不信的话你可以试试)。
所以我们要构造一个伪元素,内容和我们的文本一样,使用伪元素的原因是避免再添加一个同样内容的标签造成代码冗余:
~~~
h1:after { content: "Jiangyujie"; color: #000; text-shadow: 3px 3px 1px #600;}
~~~
然后我们通过position属性将两个文本重叠在一起:
~~~
h1 { position: relative; font-family: Segoe, Verdana, sans-serif; font-size: 100px; line-height: 100px; text-shadow: -3px 0 4px #006; }h1 a:link,h1 a:visited,h1 a:hover,h1 a:active { position: absolute; text-decoration: none; top: 0; z-index: 2; color: #d12; -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));}
~~~
效果如下图所示:
![](https://box.kancloud.cn/2016-08-02_57a05bd6d15ec.gif)
4、 添加背景:
这种实现方式的优势是我们可以自定义背景,完全不受渐变颜色的影响。例如我们可以为文字添加一副背景,效果如下:
![](https://box.kancloud.cn/2016-08-02_57a05bd6e9e17.gif)
很棒的效果,不是吗:)
5、 其他:
CSS3 mask的详细信息可以参考Webkit.org的[文章](http://www.webkit.org/blog/181/css-masks/)。
- 前言
- AutoPager的简单实现
- 利用CSS3特性巧妙实现漂亮的DIV箭头
- IE9在Win7下任务栏新特性简介
- 浏览器九宫格的简单实现
- Raphael js库简介
- 使用CSS3构建Ajax加载动画
- 用CSS3创建动画价格表
- 用CSS3实现浏览器的缩放功能
- 用纯CSS3实现QQ LOGO
- 用CSS3创建旋转载入器
- 使用Javascript开发移动应用程序
- 用HTML5创建超酷图像灰度渐变效果
- 使用CSS3创建文字颜色渐变(CSS3 Text Gradient)
- 仅用CSS创建立体旋转幻灯片
- 如何创建跨浏览器的HTML5表单
- 用CSS3实现动画进度条
- HTML5 Guitar Tab Player
- 奇妙的HTML5 Canvas动画实例
- 谈HTML5和CSS3的国际化支持
- 实现跨浏览器的HTML5占位符
- 前端开发必备工具:WhatFont Bookmarklet-方便的查询网页上的字体
- 使用HTML5和CSS3来创建幻灯片
- HTML5之美
- 如何使用HTML5创建在线精美简历
- 以小见大、由浅入深-谈如何面试Javascript工程师
- 快速入门:HTML5强大的Details元素
- 用CSS3实现图像风格
- HTML5视频字幕与WebVTT
- 用纯CSS3实现Path华丽动画
- 用3个步骤实现响应式网页设计
- 遇见CSS3滤镜
- 关于CSS3滤镜的碎念
- 用纯CSS3绘制萌系漫画人物动态头像
- CSS3新的鼠标样式介绍
- 用HTML5献上爱的3D玫瑰
- 对HTML5 Device API相关规范的解惑
- 如何使用HTML5实现拍照上传应用
- 2012第一季度国外HTML5移动开发趋势
- HTML5新特性:范围样式
- 百度开发者大会-《用HTML5新特性开发移动App》PPT分享
- Chrome 19对于HTML5最新支持的动态:电池状态API,全屏API,震动API,语音API
- 遇见Javascript类型数组(Typed Array)
- 用HTML5 Audio API开发游戏音乐
- 用HTML5实现人脸识别
- 用Javascript实现人脸美容
- Chrome 20对于HTML5最新支持的动态:颜色输入,网络信息API,CSS着色器
- 用HTML5实现手机摇一摇的功能
- 用HTML5实现iPad应用无限平滑滚动
- 用非响应式设计构建跨端Web App
- 了解SVG
- HTML5图像适配介绍
- HTML5安全:内容安全策略(CSP)简介
- HTML5安全:CORS(跨域资源共享)简介
- 用CSS3 Region和3D变换实现书籍翻页效果
- 谈谈移动App的思维误区
- Chrome新特性:文件夹拖拽支持
- 《关注HTML5安全》
- HTML5安全风险详析之一:CORS攻击
- HTML5安全风险详析之二:Web Storage攻击
- HTML5图像适配最新进展:响应式图片规范草案
- HTML5移动Web App相关标准状态及路线图
- HTML5安全风险详析之三:WebSQL攻击
- Chrome引入WebRTC支持视频聊天App
- HTML5安全风险详析之四:Web Worker攻击
- HTML5安全风险详析之五:劫持攻击
- HTML5安全风险详析之六:API攻击
- HTML5安全攻防详析之七:新标签攻击
- 在iOS Safari中播放离线音频
- 使用WebRTC实现远程屏幕共享
- Firefox、Android、iOS遇见WebRTC
- HTML5光线传感器简介
- HTML5安全攻防详析之八:Web Socket攻击
- HTML5安全攻防详析之完结篇:HTML5对安全的改进
- 激动人心!在网页上通过语音输入文字 - HTML5 Web Speech API介绍
- Web滚动性能优化实战
- 用CSS3设计响应式导航菜单
- 用HTML5构建高性能视差网站
- 漫谈@supports与CSS3条件规则
- HTML5下载属性简介
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(一)
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(二)
- 趋势:Chrome为打包应用提供强大新特性
- 从HTML5移动应用现状谈发展趋势
- 基于HTML5的Web跨设备超声波通信方案