clip-path 在實際中的運用

背景

上半年鴿了好多篇文章,心口一陣絞痛, 實在是忙, 最近也在搞績效相關的事情,等這個月過完, 差很少就能定了,到時候再和你們好好交代交代。css

最近也沒作什麼系統性的總結, 爲了保持手感,今天就先寫個作業務的時候,用到的一個css屬性: clip-path.web

正文

需求

設計小姐姐畫了一個標籤:segmentfault

image.png

從本來的鏤空的設計(就是隻有邊框的那種), 改爲了實心的。函數

本來鏤空的實現方式是: 一個矩形, 而後用before, after 作兩條線當頭部, 一個標籤就能搞定。學習

如今要作成實心兒的, 要用最小的修改, 實現這個效果,該怎麼作呢?spa

瞬間,腦子裏閃過了數種實現方式, 好比:設計

  • 矩形旁邊再加個三角形
  • 用兩個白色的三角形去蓋一下
  • 背景裁剪

前兩種方式是最早想到的, 但是腦補了一下, 以爲好麻煩啊, 最好能一行代碼搞定, clip-path 能知足這個想法。code

也去簡單實現了一下:blog

image.png

代碼:ip

clip-path: polygon(0 0, 70% 0, 100% 50%, 70% 100%, 0 100%);

每個點表明一個座標, 只要設定好切割的座標點, 就能獲得咱們想要形狀。 好比:

各類形狀

幾個屬性

它的屬性值包括四個:

  1. clip-source: 能夠是內、外部的SVG的clipPath元素的URL引用;
  2. basic-shape: 使用一些基本的形狀函數建立的一個形狀。主要包括:

    • circle()
    • ellipse()
    • inset()
    • polygon()
  3. geometry-box: 是可選參數。
    此參數和basic-shape函數一塊兒使用時,能夠爲basic-shape的裁剪工做提供參考盒子。
    若是geometry-box由自身指定,那麼它會使用指定盒子形狀做爲裁剪的路徑,包括任何(由border-radius提供的)的角的形狀。

更詳細的介紹能夠參考MDN:
https://developer.mozilla.org...

最終效果

image.png

兼容性

img

IE 和 Edge 不支持這個屬性,Firefox 僅部分支持 clip-path。
Chrome、Safari 和 Opera 須要使用 -webkit- 前綴支持此屬性。

結語

最終,用一行代碼實現了設計的效果, 省時省力。

最後的最後, 再跟你們簡單說一下學習, 是我在學院聽的一個分享。

image.png

平時要持續學習, 並內化到本身的知識體系中, 一個十分有效的作法就是: 實際運用起來,而不是僅僅停留在知道的層次, Get Yours Hands Dirty.

若是最初我不知道clip-path 這個屬性, 大概就直接畫三角形來實現了吧。

內容大概就這麼多, 但願對你們有所啓發。

相關文章
相關標籤/搜索