轉載請標明出處:蔣宇捷(hfahe) http://blog.csdn.net/hfahe
? ? ??考慮一下,如何在網頁中達到類似以下文字漸變的效果?

? ? ??傳統的實現中,是用一副透明漸變的圖片覆蓋在文字上。具體實現方式可參考[http://www.qianduan.net/css-gradient-text-effect.html](http://www.qianduan.net/css-gradient-text-effect.html)。這種方式優點是圖片可控,所以可實現很復雜的漸變效果,但是缺點是圖片漸變色必須與背景色一致,同時損失了鼠標點擊、文字選擇等事件。
? ? ??改進的方法可以使用CSS3的背景漸變-webkit-gradient,用一個背景漸變的DIV代替圖片。下面是實現效果示例,相比以上方案優點是不使用圖片,減小請求量和流量,但是對于以上缺點,仍然無法解決。

? ? ??有沒有完美的解決方案呢?
? ? ??以下介紹使用-webkit-mask遮罩的方案來實現文字漸變,完全避免了以上方案的不足。下面是實現的完美效果圖:

? ? ??現在讓我們開始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;}?
~~~
? ? ??基本效果如下:

? ? ??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)));}?
~~~
? ? ??效果如下所示:

? ? ??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)));}?
~~~
? ? ??效果如下圖所示:

? ? ??4、? 添加背景:
? ? ? 這種實現方式的優勢是我們可以自定義背景,完全不受漸變顏色的影響。例如我們可以為文字添加一副背景,效果如下:

? ? ??很棒的效果,不是嗎:)
? ? ??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跨設備超聲波通信方案