成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CSS 奇思妙想 background-clip

開發 前端
說起 background-clip ,可能很多人都很陌生。Clip 的意思為修剪,那么從字面意思上理解,background-clip 的意思即是背景裁剪。

[[410846]]

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

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

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

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

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

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

何為 -webkit-background-clip:text

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

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

  1. <div>Clip</div> 
  2.  
  3. <style> 
  4. div { 
  5.   font-size: 180px; 
  6.   font-weight: bold; 
  7.   color: deeppink; 
  8.   background: url($img) no-repeat center center; 
  9.   background-size: cover; 
  10. </style> 

效果如下:

[[410847]]

CodePen Demo - Clip[2]

使用 -webkit-background-clip:text

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

  1. div { 
  2.   font-size: 180px; 
  3.   font-weight: bold; 
  4.   color: deeppink; 
  5.   background: url($img) no-repeat center center; 
  6.   background-size: cover; 
  7.   -webkit-background-clip: text; 

效果如下:

圖片

CodePen Demo - clip[3]

看到這里,可能有人就納悶了,

圖片

,啥玩意呢,這不就是文字設置 color 屬性嘛。

將文字設為透明 color: transparent

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

  1. div { 
  2.   color: transparent; 
  3.   -webkit-background-clip: text; 

效果如下:

圖片

CodePen Demo - clip[4]

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

嗨起來

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

大大增強了文字的顏色填充選擇

文字顏色的動畫效果

配合其他元素,實現一些其他巧妙的用法

實現文字漸變效果

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

  1. <div> background-clip: text</div> 
  1. div { 
  2.     font-size: 54px; 
  3.     color: transparent; 
  4.     background: linear-gradient(45deg, #ffeb3b, #009688, yellowgreen, pink, #03a9f4, #9c27b0, #8bc34a); 
  5.     background-clip: text; 
  6.     animation: huerotate 3s infinite; 
  7.  
  8. @keyframes huerotate { 
  9.     100% { 
  10.         filter: hue-rotate(360deg); 
  11.     } 
圖片

CodePen Demo -- background-clip: text 文字漸變色[5];

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

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

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

  1. <div class="text">保健沐足按摩</div> 
  1. .text { 
  2.     font-size: 80px; 
  3.     background: linear-gradient(90deg, red 0, orange 15%, yellow 30%, green 45%, teal 60%, blue 75%, purple 90% ,purple 100%); 
  4.     background-clip: text; 
  5.     color: transparent; 
  6.     animation: changeColor .5s linear infinite alternate; 
  7.  
  8. @keyframes changeColor { 
  9.     0% { 
  10.         background-image: linear-gradient(90deg, red 0, orange 15%, yellow 30%, green 45%, teal 60%, blue 75%, purple 90% ,purple 100%); 
  11.     } 
  12.     50% { 
  13.         background-image: linear-gradient(90deg, deeppink 0, yellowgreen 15%, fuchsia 30%, lime 45%, olive 60%, aqua 75%, coral 90% ,brown 100%); 
  14.     } 
  15.     100% { 
  16.         background-image: linear-gradient(-90deg, red 0, orange 15%, yellow 30%, green 45%, teal 60%, blue 75%, purple 90% ,purple 100%); 
  17.     } 
圖片

CodePen Demo -- 背景漸變動畫 && 文字裁剪[7]

給文字增加高光動畫

利用 background-clip, 我們還可以輕松的給文字增加高光動畫。

譬如這樣:

圖片

其本質也是利用了 background-clip,偽代碼如下:

  1. <p data-text="Lorem ipsum dolor"> Lorem ipsum dolor </p> 
  1. p { 
  2.     position: relative
  3.     color: transparent; 
  4.     background-color: #E8A95B; 
  5.     background-clip: text; 
  6. p::after { 
  7.     content: attr(data-text); 
  8.     position: absolute
  9.     left: 0; 
  10.     top: 0; 
  11.     width: 100%; 
  12.     height: 100%; 
  13.     background-image: linear-gradient(120deg, transparent 0%, transparent 6rem, white 11rem, transparent 11.15rem, transparent 15rem, rgba(255, 255, 255, 0.3) 20rem, transparent 25rem, transparent 27rem, rgba(255, 255, 255, 0.6) 32rem, white 33rem, rgba(255, 255, 255, 0.3) 33.15rem, transparent 38rem, transparent 40rem, rgba(255, 255, 255, 0.3) 45rem, transparent 50rem, transparent 100%); 
  14.     background-clip: text; 
  15.     background-size: 150% 100%; 
  16.     background-repeat: no-repeat; 
  17.     animation: shine 5s infinite linear; 
  18. @keyframes shine { 
  19.  0% { 
  20.   background-position: 50% 0; 
  21.  } 
  22.  100% { 
  23.   background-position: -190% 0; 
  24.  } 

去掉偽元素的 background-clip: text,就能看懂原理:

圖片

CodePen Demo -- shine Text && background-clip[8]

按鈕填充效果

運用這個屬性,我們可以給按鈕實現這樣一種遮罩填充動畫(主要是用于防止文字閃爍):

  1. <div class="btn">Btn</div> 
  1. .btn { 
  2.     position: relative
  3.     color: deeppink; 
  4.     background-color: transparent; 
  5.     border: 3px solid deeppink; 
  6.      
  7.     &::after { 
  8.         content: ''
  9.         position: absolute
  10.         z-index: -1; 
  11.         top: 0; 
  12.         left: 50%; 
  13.         height: 100%; 
  14.         width: 0; 
  15.         background-color: deeppink; 
  16.         transition: width .5s, left .5s; 
  17.     } 
  18.     &:hover { 
  19.         color: white; 
  20.     } 
  21.     &:hover::after { 
  22.         top: 0; 
  23.         left: 0; 
  24.         width: 100%; 
  25.         transition: width .5s, left .5s; 
  26.     } 
  27.  
  28. .btn { 
  29.     background-color: deeppink; 
  30.     background-image: linear-gradient(white, white); 
  31.     background-repeat: no-repeat; 
  32.     background-size: 0% 100%; 
  33.     background-position: center; 
  34.     -webkit-background-clip: text; 
  35.     -webkit-text-fill-color: transparent; 
  36.     transition: background-size .5s; 
  37.  
  38.     &:hover { 
  39.         background-size: 100% 100%; 
  40.     } 

效果如下:

圖片

CodePen Demo -- background-clip:text && 按鈕填充效果[9]

圖片窺探效果

再演示其中一個用法,利用兩個 div 層一起使用,設置相同的背景圖片,父 div 層設置圖片模糊,其中子 div 設置 -webkit-background-clip:text,然后利用 animation 移動子 div ,去窺探圖片。簡單的效果示意圖:

[[410855]]

CodePen Demo -- background-clip: text 遮罩圖片[10]

總結一下

其實還有很多有趣的用法,只有敢想并動手實踐。當然很多人會吐槽這個屬性的兼容性,到如今(2021-07-12),兼容性已經非常好了,主要是在使用的時候記得加上 -webkit- 前綴:

圖片

更多精彩 CSS 技術文章匯總在我的 Github -- iCSS[11] ,持續更新,歡迎點個 star 訂閱收藏。

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

參考資料

[1]從條紋邊框的實現談盒子模型:

http://www.cnblogs.com/coco1s/p/5895764.html

[2]CodePen Demo - Clip:

https://codepen.io/Chokcoco/pen/WjOBzB

[3]CodePen Demo - clip:

https://codepen.io/Chokcoco/pen/eWRaVJ

[4]CodePen Demo - clip:

https://codepen.io/Chokcoco/pen/oWwRmE

[5]CodePen Demo -- background-clip: text 文字漸變色:

https://codepen.io/Chokcoco/pen/PmjMwz

[6]巧妙地制作背景色漸變動畫!:

http://www.cnblogs.com/coco1s/p/6603403.html

[7]CodePen Demo -- 背景漸變動畫 && 文字裁剪:

https://codepen.io/Chokcoco/pen/xdroGp

[8]CodePen Demo -- shine Text && background-clip:

https://codepen.io/Chokcoco/pen/OJbEOmb

[9]CodePen Demo -- background-clip:text && 按鈕填充效果:

https://codepen.io/Chokcoco/pen/MmoNoq

[10]CodePen Demo -- background-clip: text 遮罩圖片:

https://codepen.io/Chokcoco/pen/LyNmQv

[11]Github -- iCSS:

https://github.com/chokcoco/iCSS

 

責任編輯:姜華 來源: iCSS前端趣聞
相關推薦

2022-02-22 07:50:10

CSS前端CSS-doodle

2023-01-31 10:23:00

CSS倒影效果

2022-03-31 07:46:17

CSS動畫技巧

2021-07-06 06:07:14

CSS 技巧背景

2019-04-08 08:08:15

JS口令web安全

2022-07-14 07:01:56

Eureka讀鎖線程

2021-07-16 05:59:27

CSS 技巧帶圓角的三角形

2014-09-25 01:31:22

辦公設備智能硬件

2019-04-18 10:09:00

網絡安全網絡安全技術周刊

2010-09-01 13:37:58

CSSclip屬性

2010-09-03 14:00:29

CSSbackground

2010-08-31 10:57:44

clipCSS

2010-09-14 16:04:40

CSSclip屬性

2012-03-31 10:12:55

CSSWEB

2010-08-25 15:15:52

CSSclip

2011-10-21 09:10:12

JavaScript

2021-08-13 09:01:31

Python小游戲Python基礎

2014-01-03 17:18:45

Windows 9開始屏幕
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久亚洲综合 | 国产高清在线 | 超碰在线国产 | 久久三区 | 精品免费国产一区二区三区四区介绍 | 婷婷综合激情 | 国产一级久久久久 | 国产一区视频在线 | 精品1区| 久久9视频| 美女在线视频一区二区三区 | 紧缚调教一区二区三区视频 | 欧美福利 | 亚洲一区| 国产激情一区二区三区 | 国产91丝袜在线播放 | 99re在线视频 | 欧美激情亚洲激情 | 欧美成人免费在线视频 | 日韩电影中文字幕 | 97久久精品午夜一区二区 | 精品一区二区三区视频在线观看 | 国产精品无码专区在线观看 | 中文字幕在线观看成人 | 日韩一区二区在线视频 | 国产精品黄色 | 亚洲精品1 | 男女免费在线观看视频 | 在线视频一区二区 | 国产精品一区二区久久 | 亚洲一区二区三区免费视频 | 国产在线精品一区二区 | 日本中文在线 | 久久精品视频网站 | 国产成人精品在线 | 国产成人精品a视频一区www | 国产视频1 | 久久一级免费视频 | 国产精品久久久久久久久久东京 | 91视频在线 | 精品一区二区视频 |