国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

利用 Clip-path 實現動態區域裁剪

開發 前端
clip-path是CSS屬性之一,只不過很多同學都擔心瀏覽器對他的兼容性,因此不怎么使用該屬性。其實clip-path已經得到很好的支持,可以說現在主流瀏覽器對他的支持已經很好了。

[[436815]]

背景

今天逛 CodePen,看到了這樣一個非常有意思的效果:

圖片

CodePen Demo -- Material Design Menu By Bennett Feely[1]

這個效果還是有一些值得探討學習的點,下面我們一起來看看。

如何實現這樣一個類似的效果?

首先,想一想,如果讓你去實現上面的效果,你會怎么做呢?

這里我簡單羅列一些可能的辦法:

  1. 陰影 box-shadow
  2. 漸變 radial-gradient
  3. 縮放 transform: scale()

快速的一個一個過一下。

使用 box-shadow 實現

如果使用 box-shadow,代碼大致如下:

  1. <div class="g-container"
  2.     <div class="g-item"></div> 
  3. </div> 
  1. .g-container { 
  2.     position: relative
  3.     width: 400px; 
  4.     height: 300px; 
  5.     overflow: hidden; 
  6.  
  7. .g-item { 
  8.     position: absolute
  9.     width: 48px; 
  10.     height: 48px; 
  11.     border-radius: 50%; 
  12.     background: #fff; 
  13.     top: 20px; 
  14.     left: 20px; 
  15.     box-shadow: 0 0 0 0 #fff; 
  16.     transition: box-shadow .3s linear; 
  17.      
  18.     &:hover { 
  19.         box-shadow: 0 0 0 420px #fff; 
  20.     } 

核心就在于:

  1. 外層一個設置了 overflow: hideen 的遮罩
  2. 內層元素 hover 的時候,實現一個 box-shadow: 0 0 0 0 #fff 到 box-shadow: 0 0 0 420px #fff 的變化

效果如下:

圖片

整體的動畫是模擬出來了,但是它最致命的問題有兩個:

  1. 當我們的鼠標離開圓形的時候,整個動畫就開始反向進行了,白色區域開始消失,如果我們要進行按鈕操作,是無法完成的
  2. 隱藏在動畫展開后的矩形內的元素,不容易放置

所以,box-shadow 看著雖好,但是只能放棄。上述 Demo 的代碼 -- CodePen Demo -- box-shadow zoom in animation[2]

使用漸變 radial-gradient 實現

下面我們使用徑向漸變 radial-gradient 加上 CSS @property,也可以還原上述效果:

  1. <div class="g-container"></div> 

  1. @property --size { 
  2.   syntax: '<length>'
  3.   inherits: false
  4.   initial-value: 24px; 
  5.  
  6. .g-container { 
  7.     position: relative
  8.     width: 400px; 
  9.     height: 300px; 
  10.     overflow: hidden; 
  11.     background: radial-gradient(circle at 44px 44px, #fff 0, #fff var(--size), transparent var(--size), transparent 0); 
  12.     transition: --size .3s linear; 
  13.      
  14.     &:hover { 
  15.         --size: 450px; 
  16.     } 

我們通過控制徑向漸變的動畫效果,在 hover 的時候,讓原本只是一個小圓背景,變成一個大圓背景,效果如下:

圖片

emmm,效果確實是還原了,問題也很致命:

  1. 由于是背景的變化,所以鼠標不需要 hover 到小圓上,只需要進入 div 的范圍,動畫就會開始,這顯然是不對的
  2. 和第一種 box-shadow 的方法類似,隱藏在白色之下的導航元素的 DOM 不好放置

上述 Demo 的代碼 -- CodePen Demo -- radial-gradient zoom in animation[3]

emmm,還有一種方法,通過縮放 transform: scale(),也會存一定問題,這里不繼續展開。

所以到這里,想實現上述的效果,核心在于:

  1. 鼠標要 hover 到圓上,才能開始動畫,并且,鼠標可以在展開后的范圍內自由移動,且不會收回動畫效果
  2. 動畫展開后,里面的 DOM 的放置,不能太麻煩,能不借助 Javascript 去控制里面內容的顯示隱藏最好

利用 clip-path 實現動態區域裁剪

所以,這里,我們其實是需要一個動態的區域裁剪。

在我的這篇文章中 -- 如何不使用 overflow: hidden 實現 overflow: hidden?[4],介紹了 CSS 中幾種裁剪元素的方式,而其中,最適合利用在這個效果的,就是 -- clip-path。

利用 clip-path,可以非常好的實現,動態裁剪的功能,并且,代碼也非常簡單:

  1. <div class="g-container"></div> 
  1. .g-container { 
  2.     position: relative
  3.     width: 400px; 
  4.     height: 300px; 
  5.     overflow: hidden; 
  6.     transition: clip-path .3s linear; 
  7.     clip-path: circle(20px at 44px 44px); 
  8.     background: #fff; 
  9.      
  10.     &:hover { 
  11.         clip-path: circle(460px at 44px 44px); 
  12.     } 

我們只需要利用 clip-path,在最開始的時候,將一個矩形 div,利用 clip-path: circle(20px at 44px 44px) 裁剪成一個圓,當 hover 的時候,擴大裁剪圓的半徑到整個矩形范圍即可。

效果如下:

這樣,我們就能完美的實現題圖的效果,并且,內置的 DOM 元素,直接寫進這個 div 內部即可。

  1. <div class="g-container"
  2.     <ul> 
  3.         <li>11111</li> 
  4.         <li>22222</li> 
  5.         <li>33333</li> 
  6.         <li>44444</li> 
  7.     </ul> 
  8. </div> 

效果如下:

圖片

CodePen Demo -- clip-path zoom in animation[5]

很有意思的一個技巧,利用 clip-path 實現動態區域裁剪,希望大家能夠掌握。

最后

好了,本文到此結束,希望本文對你有所幫助 :)

參考資料

[1]CodePen Demo -- Material Design Menu By Bennett Feely:

https://codepen.io/bennettfeely/pen/fHdFb

[2]CodePen Demo -- box-shadow zoom in animation:

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

[3]CodePen Demo -- radial-gradient zoom in animation:

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

[4]如何不使用 overflow: hidden 實現 overflow: hidden?:

https://github.com/chokcoco/iCSS/issues/90

[5]CodePen Demo -- clip-path zoom in animation:

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

 

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

2025-09-05 01:25:00

CSSHTML元素clip

2017-05-11 21:30:01

Android動態代理ServiceHook

2023-12-13 13:04:55

CLIPRGB模型

2022-03-31 07:46:17

CSS動畫技巧

2023-09-12 09:43:33

JavaMySQL

2025-02-18 12:00:00

ROIPython計算機視覺

2009-12-09 13:02:18

靜態路由動態路由

2021-01-08 05:22:47

Spark動態優化

2023-09-12 13:59:41

OpenAI數據集

2025-04-07 05:30:00

2023-03-08 07:43:07

DUCC配置平臺

2024-08-13 09:16:30

2021-07-13 06:10:02

CSS 技巧background-

2025-04-08 03:00:00

2022-12-30 08:29:07

Nacos動態化線程池

2010-09-01 13:37:58

CSSclip屬性

2010-09-14 16:04:40

CSSclip屬性

2010-08-31 10:57:44

clipCSS

2010-08-05 13:59:56

路由器

2022-09-02 15:08:02

Python郵件發送
點贊
收藏

51CTO技術棧公眾號

亚洲美女性视频| 亚洲天堂第一区| 视频一区日韩| 亚洲精品乱码久久久久久金桔影视| 蜜桃视频在线观看视频| 亚洲激情在线播放| 国产人妻777人伦精品hd| 久久99热这里只有精品| 欧美日韩在线观看一区| 欧美欧美全黄| 亚洲精品欧美日韩| 99精品在线| 国产精品女主播| 在线日韩网站| 91成人精品网站| 林ゆな中文字幕一区二区| 欧美国产一区二区三区| 色999韩欧美国产综合俺来也| 亚洲九九九在线观看| 免费成人在线电影| 日韩av网站在线| 亚洲精品中文字幕| 国产亚洲欧美日韩美女| 高清电影一区| 另类色图亚洲色图| 少妇高潮一区二区三区99| xxxxx成人.com| 视频亚洲一区二区| 欧洲日韩成人av| 希岛爱理一区二区三区| 国产成人精品免费视频大全最热| 好吊日精品视频| 欧美xxxx黑人又粗又长密月| 毛片av中文字幕一区二区| 麻豆一区二区三区在线观看| 成人福利视频网站| 别急慢慢来1978如如2| 国产精品女同互慰在线看| 男女午夜网站| 午夜精品久久久久久久久久久| 外国精品视频在线观看| 欧美人妇做爰xxxⅹ性高电影| 欧美精品videossex少妇| 在线看欧美日韩| 日韩激情啪啪| 99久久国产免费免费| 蜜臀精品一区二区三区在线观看| 欧美高清中文字幕| 亚洲女女做受ⅹxx高潮| 日本中文字幕视频在线| 国产一区二区激情| 女人丝袜激情亚洲| 精品高清视频| 国产a久久麻豆| 中文字幕av专区| 色94色欧美sute亚洲线路二| 免费成人在线电影| 秋霞av国产精品一区| 国产女优一区| 日本黄网站免费| 欧洲一区二区三区在线| 日本久久免费| 国产精品第七十二页| 首页亚洲欧美制服丝腿| 免费无码av片在线观看| 日韩欧中文字幕| 白浆在线视频| 国产成人精品久久二区二区| 久久性天堂网| 91美女在线免费观看| 日韩三级中文字幕| 全国精品免费看| 亚洲黄色成人久久久| 亚洲欧美经典视频| 亚洲美女尤物影院| 国产一区二区丝袜| 成人一级黄色片| 影音先锋电影在线观看| 亚洲香蕉成视频在线观看| 欧美国产美女| 精品99在线视频| 日韩一区二区三区四区| 中文字幕精品影院| 欧美 国产 精品| 欧美三级电影在线观看| 久久影视三级福利片| 国产精品h视频| 欧美日韩国产在线播放| 91p九色成人| 欧美日韩精品免费在线观看视频| 日韩毛片一二三区| 欧美人体一区二区三区| 波多野结衣一区二区三区在线观看 | 日本三级视频在线播放| 欧美激情亚洲一区| 韩国精品免费视频| 国产视频精选在线| 91sa在线看| 成人黄色av网站在线| 免费在线观看av片| 国产精品白丝jk喷水视频一区| 不卡欧美aaaaa| 98色花堂精品视频在线观看| 亚洲a级在线观看| 精品制服美女丁香| 久久香蕉视频网站| 韩国欧美一区二区| 欧美成人性生活视频| 国产精品久久久亚洲| 久久久久久久久久久黄色| 特黄毛片在线观看| 日韩欧美99| 欧美中文字幕一区| 久久久久中文| 亚洲精品一区二区毛豆| 欧美日韩在线免费观看| 老司机aⅴ在线精品导航| 欧美激情视频网| 看国产成人h片视频| 77导航福利在线| 成人精品一区二区三区| 亚洲视频在线一区| 亚洲高清极品| 69国产精品| 2020久久国产精品| 国产精品伦一区| 国产精品白浆| 日本激情综合网| 久久99久久亚洲国产| 久久久久久久久一| 国产一区二区三区| 亚洲成人av免费看| 国语自产精品视频在免费| 91小视频免费观看| 97一区二区国产好的精华液| 亚洲欧美久久久久| 欧美在线激情网| 一区二区三区四区中文字幕| 日韩一区二区在线免费| 午夜成人影视| 精品国产综合久久| 欧美成人乱码一区二区三区| 日韩黄色免费网站| 欧美三区四区| 亚洲色图38p| 国产精品视频在线播放| 日本电影亚洲天堂一区| 久久激情综合| 午夜精品久久久久久久久久蜜桃| 成人在线免费高清视频| 久久久国产精彩视频美女艺术照福利| 国产欧美一区二区精品秋霞影院| 少妇一区二区视频| 天天影视久久综合| 在线成人性视频| 久久成人免费视频| 亚洲国产精品久久久久秋霞影院| 亚洲视频电影在线| 污污网站在线观看| 欧美日韩一道本| 国产精品jizz在线观看麻豆| 欧美午夜精品一区二区三区| 精品一区二区三区欧美| 成人av资源网址| 亚洲aⅴ优女av综合久久久| 蜜桃av久久久亚洲精品| 亚洲天堂第二页| 亚洲最大成人网4388xx| 亚洲精品裸体| 欧美美女被草| 在线观看国产福利视频| 日本一区二区不卡高清更新| 久久亚洲国产成人| 色婷婷综合五月| 国产v日产∨综合v精品视频| 国产精品探花在线观看| 日本一本在线免费福利| 亚洲高清在线免费观看| 黄色91av| 欧美激情国产高清| 欧美日韩二区三区| 久久久久久一二三区| 亚洲国产高清一区二区三区| jizz久久久久久| 可以在线观看的av| 97视频在线免费| 91精品视频一区| 色青青草原桃花久久综合 | 亚洲人成精品久久久| 菠萝蜜视频国产在线播放| 91福利国产成人精品播放| 欧美精品亚洲精品| 日韩美女视频免费看| 亚洲精品小视频| 在线中文字幕一区| 国产精品你懂的在线欣赏| 奇米888四色在线精品| 日韩精品网站| 不卡一区视频| 91av久久|