摘要:裁剪路徑可以將如或自由變化的應用于任何元素。元素中不在形狀邊界內的任何內容都將被裁剪刪除掉。例如,我們可以從內容隱藏完全裁剪開始,并增大裁剪路徑以顯示其中的內容。
隨著瀏覽器對shape-outside和clip-path等屬性的支持增加,CSS Shapes越來越受到關注。有幾種方法可以使用CSS Shapes,特別是clip-path屬性,乍一看我們并不知道這個屬性如何使用,下面就來詳細的介紹它。
裁剪路徑clip path的基礎知識在深入研究之前,我們應該先看看基本的形狀和clip-path。裁剪路徑可以將CSS Shapes如circle()、ellipse(), inset()或自由變化的polygon()應用于任何元素。元素中不在形狀邊界內的任何內容都將被裁剪刪除掉。
使用多邊形函數,我們可以創建三角形、星形或其他形狀,雖然在可以使用px等固定單位,但百分比將提供更大的靈活性并自適應于元素的尺寸。
所以對于一個八邊形,我們可以設置八組x,y點坐標來定義。在這種情況下,對于第一個x,我們從盒子寬度的30%開始,對于y,我們從盒子的頂部開始,然后順時針設置各個點??梢妳^域就是通過將這些點用直線連接而形成的形狀。
clip-path: polygon( 30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30% );看不見的頂點
上面實現一個八邊形,我們設置了八個點的坐標。但是,我們可以跳出元素框的限制去思考,也就是說要跳出0% - 100%的這個范圍。
元素的盒邊框是裁剪后內容的顯示邊界,但我們仍然可以為元素定義超出盒邊框的點。
通過定義超過0%-100%范圍的點,我們可以把一個有三個點的多邊形變成四邊形、五邊形或六邊形。在這個例子中,都是定義clip-path: polygon()函數的三個點,但是由于超出了元素框的邊界,我們可以看到一個三角形和兩個五邊形。
于是,上面的八邊形只用四個點就可以實現。
一條裁剪路徑,多個形狀我們可以利用超出元素邊界的這種能力用一個polygon()創建多個裁剪形狀。
CSS源碼
根據元素的位置,我們可以直接制作出每個形狀,但是因為我們知道裁剪坐標點可以在元素框之外的空間中移動,所以可以繪制額外的線來幫助我們找到下一個點的位置。
它還可以幫助我們分割元素。結合CSS自定義屬性,我們可以處理重疊的元素,并將每個元素裁剪成交替的條帶。下面的例子是兩個重疊的圓角矩形,每個被分成不規則的矩形動畫。
CSS源碼
polygon()函數不僅僅是一組坐標點的集合,它還有另外的一個參數 — 填充規則 ,我們一直使用的默認值是nonzero,它還有另外一個值是evenodd,這兩個值它們確定形狀的內部和外部的規則是不同的。
CSS源碼
當使用evenodd規則時,我們可以通過從任意的點繪制光線來確定點是在邊界內還是在邊界外。如果光線穿過裁剪路徑線的和為偶數,則該點被視為外部,如果光線穿過裁剪路徑線的和為奇數,則該點位于內部。
順序要注意的是,有許多CSS屬性例如CSS Filters, Blend Modes等都會影響元素的外觀。而這些效果會按下面的順序應用到元素上:
CSS Filters (例如 filter: blur(2px))
Clipping (本文所講的)
Masking (類似與裁剪)
Blend Modes (例如 mix-blend-mode: multiply)
Opacity
如果我們需要一個模糊的星星形狀,模糊效果會發生在裁剪之前。由于模糊效果會參照元素的邊框,但是我們將元素邊框裁剪掉了,于是前一個星星的模糊效果會丟失。
CSS源碼
如果我們想模糊星星,可以選擇將剪裁后的元素包裹在模糊的父元素中。內部元素將首先呈現其星星的形狀,然后父元素將正常模糊其內容。
通過動畫來顯示內容CSS Shapes是可以添加動畫效果的,它允許我們在不影響元素內容的情況下改變元素的可視區域。例如,我們可以從內容隱藏(完全裁剪)開始,并增大裁剪路徑以顯示其中的內容。要注意的是,clip-path: polygon()動畫形的一個重要條件是每個關鍵幀的坐標點數以及填充規則都必須相同。否則,瀏覽器將沒有足夠的信息來插入中間值。
CSS源碼
Clip paths給我們提供了一些新的有趣的可能,同時clip-path屬性并不會改變元素本身的尺寸和布局,這也是它強大的地方,我們可以大量的使用這個屬性來改變元素的外觀。
獲取以上效果的全部源碼可以:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/114823.html
摘要:裁剪路徑可以將如或自由變化的應用于任何元素。元素中不在形狀邊界內的任何內容都將被裁剪刪除掉。例如,我們可以從內容隱藏完全裁剪開始,并增大裁剪路徑以顯示其中的內容。 隨著瀏覽器對shape-outside和clip-path等屬性的支持增加,CSS Shapes越來越受到關注。有幾種方法可以使用CSS Shapes,特別是clip-path屬性,乍一看我們并不知道這個屬性如何使用,下面就...
摘要:裁剪路徑可以將如或自由變化的應用于任何元素。元素中不在形狀邊界內的任何內容都將被裁剪刪除掉。例如,我們可以從內容隱藏完全裁剪開始,并增大裁剪路徑以顯示其中的內容。 隨著瀏覽器對shape-outside和clip-path等屬性的支持增加,CSS Shapes越來越受到關注。有幾種方法可以使用CSS Shapes,特別是clip-path屬性,乍一看我們并不知道這個屬性如何使用,下面就...
摘要:一般地,一個塊盒的內容都被限制在該盒的邊內。這種盒并不一定會根據其祖先的屬性裁剪。默認情況下,元素不會被裁剪。在閉合路徑內的內容會顯示,而路徑外邊的都會被剪掉著作權歸作者所有。 Overflow and clipping 一般地,一個塊盒的內容都被限制在該盒的content邊內。某些情況下,一個盒可能會溢出,意味著它的部分內容或者全部內容位于該盒外部,例如: 一行無法拆分,導致行盒比...
摘要:之前的工作中有用到過這個屬性。作用是這么說的屬性剪裁絕對定位元素。唯一合法的形狀值是默認值。規定應該從父元素繼承屬性的值。所以顯示的部分應該就是左下角四分之一區域。使用屬性實現音頻播放圓環進度條 ??之前的工作中有用到過clip這個屬性。最近工作又再次用到這個屬性時,發現自己忘了怎么設置這個屬性值的了。看來上次沒有真的弄懂這個屬性,又去查了查文檔學習了一下。這里簡單分享,同時加深一下映...
摘要:之前筆試題有一道選擇題是關于屬性的,后來查閱資料才發現有各種子屬性,特寫此文章整理一下。新增指定背景的顯示區域。默認情況下,總是以元素左上角為坐標原點進行背景圖像定位。此關鍵字表示背景相對于元素的內容固定。 之前筆試題有一道選擇題是關于background屬性的,后來查閱資料才發現background有各種子屬性,特寫此文章整理一下。 瀏覽器兼容性支持 PC端:showImg(http...
閱讀 1526·2023-04-26 00:20
閱讀 1121·2023-04-25 21:49
閱讀 803·2021-09-22 15:52
閱讀 577·2021-09-07 10:16
閱讀 972·2021-08-18 10:22
閱讀 2664·2019-08-30 14:07
閱讀 2237·2019-08-30 14:00
閱讀 2651·2019-08-30 13:00