談談一些有趣的CSS題目(十六)-- 奇妙的 background-clip: text,cssbackground-clip

來源:互聯網
上載者:User

談談一些有趣的CSS題目(十六)-- 奇妙的 background-clip: text,cssbackground-clip

開本系列,談談一些有趣的 CSS 題目,題目類型天馬行空,想到什麼說什麼,不僅為了拓寬一下解決問題的思路,更涉及一些容易忽視的 CSS 細節。

解題不考慮相容性,題目天馬行空,想到什麼說什麼,如果解題中有你感覺到生僻的 CSS 屬性,趕緊去補習一下吧。

不斷更新,不斷更新,不斷更新,重要的事情說三遍。

談談一些有趣的CSS題目(一)-- 左邊豎條的實現方法

談談一些有趣的CSS題目(二)-- 從條紋邊框的實現談盒子模型

談談一些有趣的CSS題目(三)-- 層疊順序與堆棧上下文知多少

談談一些有趣的CSS題目(四)-- 從倒影說起,談談 CSS 繼承 inherit

談談一些有趣的CSS題目(五)-- 單行置中,兩行居左,超過兩行省略

談談一些有趣的CSS題目(六)-- 全相容的多列均勻布局問題

談談一些有趣的CSS題目(七)-- 消失的邊界線問題

談談一些有趣的CSS題目(八)-- 純CSS的導覽列Tab切換方案

談談一些有趣的CSS題目(九)-- 巧妙的實現 CSS 斜線

談談一些有趣的CSS題目(十)-- 結構性偽類別選取器

談談一些有趣的CSS題目(十一)-- reset.css知多少

談談一些有趣的CSS題目(十二)-- 深入探討 CSS 特性檢測 @supports 與 Modernizr

談談一些有趣的CSS題目(十三)-- 巧妙地製作背景色漸層動畫!

談談一些有趣的CSS題目(十四)-- 純 CSS 方式實現 CSS 動畫的暫停與播放!

談談一些有趣的CSS題目(十五)-- 奇妙的 background-clip: text

所有題目匯總在我的 Github 。

本文從這裡開始。說起 background-clip ,可能很多人都很陌生。Clip 的意思為修剪,那麼從字面意思上理解,background-clip 的意思即是背景裁剪。

我曾經在 從條紋邊框的實現談盒子模型 一文中談到了這個屬性,感興趣的可以回頭看看。

簡單而言,background-clip 的作用就是設定元素的背景(背景圖片或顏色)的填充規則。

與 box-sizing 的取值非常類似,通常而言,它有 3 個取值:

{    background-clip: border-box;  // 背景延伸到邊框外沿(但是在邊框之下)    background-clip: padding-box; // 邊框下面沒有背景,即背景延伸到內邊距外沿。    background-clip: content-box; // 背景裁剪到內容區 (content-box) 外沿。}

不過這些都不是本文的主角。本文的主角是 background-clip: text; ,當然現在只有 chrome 支援,所以通常想使用它,需要 -webkit-background-clip:text;。

 

何為 -webkit-background-clip:text

使用了這個屬性的意思是,以區塊內的文字作為裁剪地區向外裁剪,文字的背景即為區塊的背景,文字之外的地區都將被裁剪掉。

看個最簡單的 Demo ,沒有使用 -webkit-background-clip:text :

<div>Clip</div><style>div {  font-size: 180px;  font-weight: bold;  color: deeppink;  background: url($img) no-repeat center center;  background-size: cover;}</style>

效果如下:

CodePen Demo

 使用 -webkit-background-clip:text

我們稍微改造下上面的代碼,添加 -webkit-background-clip:text:

div {  font-size: 180px;  font-weight: bold;  color: deeppink;  background: url($img) no-repeat center center;  background-size: cover;  -webkit-background-clip: text;}

效果如下:

CodePen Demo

看到這裡,可能有人就納悶了,啥玩意呢,這不就是文字設定 color 屬性嘛。

 將文字設為透明 color: transparent

別急!當然還有更有意思的,上面由於文字設定了顏色,擋住了 div 塊的背景,如果將文字設定為透明呢?文字是可以設定為透明的 color: transparent 。

div {  color: transparent;  -webkit-background-clip: text;}

效果如下(請在 Chrome 核心瀏覽器下觀看):

CodePen Demo

通過將文字設定為透明,原本 div 的背景就顯現出來了,而文字以為的地區全部被裁剪了,這就是 -webkit-background-clip:text 的作用。

 各類效果製作

瞭解了最基本的用法,接下來可以想想如何去運用這個元素製作一些效果。

 

實現文字漸層效果

利用這個屬性,我們可以十分便捷的實現文字的漸層色效果。

效果如下(請在 Chrome 核心瀏覽器下觀看):

CodePen Demo

 

背景漸層動畫 && 文字裁剪

因為有用到 background 屬性,回憶一下,我在上一篇 巧妙地製作背景色漸層動畫! 利用了漸層 + animation 巧妙的實現了一些背景的漸層動畫。可以很好的和本文的知識結合起來。

結合漸層動畫,當然不一定需要過渡動畫,這裡我使用的是逐幀動畫。配合 -webkit-background-clip:text,實現了一種,嗯,很紅燈區的感覺。

效果如下(請在 Chrome 核心瀏覽器下觀看): 

CodePen Demo

 圖片窺探效果

再示範其中一個用法,利用兩個 div 層一起使用,設定相同的背景圖片,父 div 層設定圖片模糊,其中子 div 設定 -webkit-background-clip:text,然後利用 animation 移動子 div ,去窺探圖片。

效果如下(請在 Chrome 核心瀏覽器下觀看):

CodePen Demo

 

其實還有很多有趣的用法,只要敢想並動手實踐,會發現 CSS 真的樂趣挺多的。

當然很多人會吐槽這個屬性的相容性,確實,我個人覺得前端現在的生態有一點面向未來編程的感覺(調戲)。不過提前掌握總體而言利大於弊,多多拓寬自己的視野。

到此本文結束,如果還有什麼疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.