CSS3中的clip-path使用攻略

根據(jù)她的以往經(jīng)驗,這個網(wǎng)站的HTML和CSS是完全在她的能力范圍以內(nèi),于是我?guī)椭瓿闪诉@個效果。顯示nav被裁減的效果是一個不簡單的任務,我看到圖片的第一反應是創(chuàng)建一個相匹配的背景被部分裁剪的圖像,然后把它設置為一個after元素。問題是,至少要解決響應式問題,并且響應式并不完全可控的。
了解CSS屬性:clip-path
clip-path 是工作草案的一部分,它是一個通過屏蔽和裁減來隱藏元素的一部分的工具。盡管clip-path沒有被主流的瀏覽器支持(包括IE和Firefox),但在webkit瀏覽器中,它仍然是一個實現(xiàn)時尚效果的小工具。
注意,在現(xiàn)代瀏覽器中需要使用-webkit-前綴。
clip-path 簡單的工作原理是提供一系列的X和Y值來創(chuàng)建路徑。當使用這些值創(chuàng)建一條完整路徑時,就會把圖像按照路徑內(nèi)部的尺寸進行裁剪。
利用clip-path,我們可以創(chuàng)建圓形、橢圓和多邊形等不同的形狀,創(chuàng)造力是唯一的限制。
一個簡單的三角形裁減
View the code on codepen
對元素簡單地運用clip-path就能實現(xiàn)上面的效果:
- .clipClass {
- -webkit-clip-path: polygon(0 100%, 50% 0, 100% 100%);
- }
逐步分析
很像定位屬性,我們需要考慮X值和Y值。X:0和Y:0表示從元素的左上角開始,并從左上角開始移動。X:100%指的是元素右邊,Y:100%指的是元素底部。
對于上面創(chuàng)建的路徑,實際是創(chuàng)建了如下的點:
- x: 0, y:100%
- x: 50%, y: 0
- x: 100%, y: 100%
這個簡單路徑開始于左下角,水平移動50%,并到達頂部位置,然后又水平移動到100%的位置,垂直向下回到底部,到達第三個坐標點。三角形就出來了。
形狀
在上面的示例中,我們使用polygon來創(chuàng)建一個圖形,并通過多對用逗號(,)分開的X值和Y值定義了一個路徑。然后,我們可以通過取不同的值來創(chuàng)建不同的圖形。
圓
View the code on codepen
為了創(chuàng)建圓形,需要給circle傳入三個值:圓心的坐標(X值和Y值)以及半徑。當定義圓的半徑時,我們可以用at關鍵字來定義圓心坐標。
- .clipClass {
- -webkit-clip-path: circle(50% at 50% 50%);
- }
橢圓
View this code on codepen
很多時候,你不需要一個簡單的圓,而是一個橢圓。
為了實現(xiàn)橢圓,需要給ellipse提供4個值:橢圓的x軸半徑、y軸半徑、定位橢圓位置的x坐標和y坐標,后面兩個值用at關鍵字和前面兩個值分開。
- .clipClass {
- -webkit-clip-path: ellipse(30% 20% at 50% 50%);
- }
插圖
(在老版本的chrome中有錯誤)
View the code on codepen
因為多邊形邊緣銳利,所以它可能不是你想要的東西,你想創(chuàng)建的是圓角矩形,所以我們來看看Inset的值。Inset使用四個值(對應“上 右 下 左”的順序)來設置圓角半徑。
- .clipClass {
- -webkit-clip-path: inset(25% 0 25% 0 round 0 25% 0 25%);
- }
上面的各個值分別對應為:
- inset(<top> <rightright> <bottombottom> <left> round <top-radius> <rightright-radius> <bottombottom-radius> <left-radius>)
其簡寫形式:
- .clipClass {
- -webkit-clip-path: inset(25% 0 round 0 25%);
- }
快速參考
- Circle: circle(radius at x-axis y-axis)
- Ellipse: ellipse(x-rad y-rad at x-axis y-axis)
- Polygon: polygon(x-axis y-axis, x-axis y-axis, … )
- Inset: inset(top rightright bottombottom left round top-radius rightright-radius bottombottom-radius left-radius)
創(chuàng)建形狀
正如你看到的,原型和圓角圖形被少數(shù)幾個值限制了,因而Polygons是創(chuàng)建復雜圖形的最好選擇。Polygons能定義多組點,允許我們用各種方式去裁圖形。
Comic Textbox
- .clipClass {
- -webkit-clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 75% 75%, 75% 100%, 50% 75%, 0% 75%);
- }
Star
- .clipClass {
- -webkit-clip-path: polygon(50% 0%, 63% 38%, 100% 38%, 69% 59%, 82% 100%, 50% 75%, 18% 100%, 31% 59%, 0 38%, 37% 38%);
- }
動畫
現(xiàn)在我們已經(jīng)了解了各種圖形和怎么創(chuàng)建它們,那怎么利用這些圖形創(chuàng)建我們想要的效果呢?
給形狀應用一個hover,并用過渡屬性來創(chuàng)建平滑的效果。但是需要記住,我們創(chuàng)建的初始默認狀態(tài),必須同所有的hover狀態(tài)都使用相同的坐標系。
View the code on codepen
- .animateClass {
- -webkit-clip-path: polygon(20% 0%, 0% 0%, 0% 50%, 0% 80%, 0% 100%, 50% 100%, 80% 100%, 100% 100%, 100% 50%, 100% 0, 80% 0, 50% 0);
- }
- .animateClass:hover {
- -webkit-clip-path: polygon(50% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
- }
相關文章
- 這篇文章主要介紹了CSS3 clip-path 用法介紹詳解的相關資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-01