精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

奇技淫巧!不規則邊框的生成方案

開發 前端
本文將介紹一種配合 SVG 濾鏡實現各種不規則圖形添加邊框的小技巧,使用純 CSS,搭配一些技巧,是可以制作出上面的圖形的,當然這只是需求的第一步。嘗試使用 drop-shadow 添加邊框。

[[390371]]

本文將介紹一種配合 SVG 濾鏡實現各種不規則圖形添加邊框的小技巧。

本文完整的 DEMO,你可以戳這里:transparent 配合 SVG feMorphology 濾鏡生成不規則邊框 [1]

需求背景,給不規則圖形添加邊框

在我們日常開發中,時常會遇到一些非矩形、非圓形的圖案。類似下面這些:

不規則圖形示例

使用純 CSS,搭配一些技巧,是可以制作出上面的圖形的,當然這只是需求的第一步。

緊接著,可能會有要給上述圖形添加邊框的訴求,這個時候,CSS 就很難辦到了。

嘗試使用 drop-shadow 添加邊框

第一種方法,我們可以嘗試使用 drop-shadow,給不規則的圖形,添加一個外陰影。

我們以一個箭頭圖形為例使用 CSS 簡單實現它的其中一種方式如下:

  1. <div class="arrow-button"></div> 

 

  1. .arrow-button { 
  2.     position: relative
  3.     width: 180px; 
  4.     height: 64px; 
  5.     background: #f49714; 
  6.  
  7.     &::after { 
  8.         content: ""
  9.         position: absolute
  10.         width: 32px; 
  11.         height: 64px; 
  12.         top: 0; 
  13.         right: -32px; 
  14.         background:  
  15.             linear-gradient(-45deg, transparent 0, transparent 22px, #f49714 22px, #f49714 100%), 
  16.             linear-gradient(-135deg, transparent 0, transparent 22px, #f49714 22px, #f49714 100%); 
  17.         background-size: 32px 32px; 
  18.         background-repeat: no-repeat; 
  19.         background-position: 0 bottom, 0 top
  20.     } 

  

不帶邊框的不規則圖形

我們通過給 .arrow-button 添加一個 drop-shadow,可以實現給不規則圖形添加一個陰影,效果如下:

 

  1. .arrow-button { 
  2.     ... 
  3.     filter: drop-shadow(0px 0px 2px #000); 
  4.     ... 

 

drop-shadow 實現的帶陰影邊框的不規則圖形

drop-shadow 方案的局限性

使用 drop-shadow 方案的局限性在于,drop-shadow 只能對不規則圖形生成陰影,無法生成不帶模糊的邊框效果。

上述圖形添加 drop-shadow 的效果如下,與我們想要的實體不帶模糊的邊框還是差了一點:

drop-shadow 實現的帶陰影邊框的不規則圖形

使用 SVG feMorphology 濾鏡添加邊框

我們還可以換個思路,復制一個原圖形,再將其稍微放大一點點改變為邊框的顏色,然后兩個圖形疊加在一起,就能夠生成一個帶邊框的不規則圖形了。

CSS 中也有能夠放大元素的能力 transform: scale(),但是本身實現一個原圖形的代碼可能已經非常復雜了,再疊加一個可能會顯得不太優雅,我們得另辟蹊徑,尋找其他類似的實現方案。

這里,我們嘗試使用 SVG的 feMorphology 濾鏡來實現給不規則圖形添加邊框。

  • 如果你對 SVG 濾鏡還不算太了解,可以簡單看看我的這篇文章入門:有意思!強大的 SVG 濾鏡[2]

簡單介紹下 feMorphology 濾鏡

feMorphology 濾鏡

feMorphology 為形態濾鏡,它的輸入源通常是圖形的 alpha 通道,用來它的兩個操作可以使源圖形腐蝕(變薄)或擴張(加粗)。

使用屬性 operator 確定是要腐蝕效果還是擴張效果。使用屬性 radius 表示效果的程度,可以理解為筆觸的大小。

  • operator:erode 腐蝕模式,dilate 為擴張模式,默認為 erode
  • radius:筆觸的大小,接受一個數字,表示該模式下的效果程度,默認為 0

我們將這個濾鏡簡單的應用到文字上看看效果:

 

  1. <div class="g-text"
  2.     <p>Normal Text</p> 
  3.     <p class="dilate">Normal Text</p> 
  4.     <p class="erode">Normal Text</p> 
  5. </div> 
  6.  
  7. <svg width="0" height="0"
  8.     <filter id="dilate"
  9.         <feMorphology in="SourceAlpha" result="DILATED" operator="dilate" radius="3"></feMorphology> 
  10.     </filter> 
  11.     <filter id="erode"
  12.         <feMorphology in="SourceAlpha" result="ERODE" operator="erode" radius="1"></feMorphology> 
  13.     </filter> 
  14. </svg> 

 

 

  1. p { 
  2.     font-size: 64px; 
  3. .dilate { 
  4.     filter: url(#dilate); 
  5. .erode { 
  6.     filter: url(#erode); 

 

效果如下:最左邊的是正常文字,中間的是擴張的模式,右邊的是腐蝕模式,看看效果,非常好理解:

借用 feMorphology 的擴張能力給不規則圖形添加邊框

利用 feMorphology 的擴張能力,我們可以提前準備好一個 SVG feMorphology 濾鏡,其作用就是上述所說的:

復制一個原圖形,再將其稍微放大一點點改變為邊框的顏色,然后兩個圖形疊加在一起,就能夠生成一個帶邊框的不規則圖形了。

并且 SVG 濾鏡可以非常簡單的通過 CSS Filter 的 url 模式引入到各個不同的圖形當中去,復用性非常的高。

該濾鏡的簡單代碼如下:

  1. <svg width="0" height="0"
  2.     <filter id="outline"
  3.         <feMorphology in="SourceAlpha" result="DILATED" operator="dilate" radius="1"></feMorphology> 
  4.         <feMerge> 
  5.             <feMergeNode in="DILATED" /> 
  6.             <feMergeNode in="SourceGraphic" /> 
  7.         </feMerge> 
  8.     </filter> 
  9. </svg> 

簡單淺析一下這段 SVG 濾鏡代碼:

1.<feMorphology in="SourceAlpha" result="DILATED" operator="dilate" radius="1"></feMorphology>將原圖的不透明部分作為輸入,采用了 dilate 擴張模式且程度為 radius="1",生成了一個比原圖大 1px 的黑色圖塊

2.使用 feMerge 將黑色圖塊和原圖疊加在一起

我們還是給上述的 .arrow-button 添加一個 CSS filter filter: url(#outline),引入我們創建的 SVG 濾鏡:

 

  1. .arrow-button { 
  2.     ... 
  3.     filter: url(#outline); 
  4.     ... 

url 是 CSS 濾鏡屬性的關鍵字之一,url 模式是 CSS 濾鏡提供的能力之一,允許我們引入特定的 SVG 過濾器,這極大的增強 CSS 中濾鏡的能力。

看看效果:

SVG 濾鏡實現的帶邊框的不規則圖形

Wow,這下成功了,通過 feMorphology 濾鏡,我們成功的實現了給不規則的圖形添加了邊框效果,我能可以通過控制濾鏡中的 radius="1" 來控制邊框的大小。

再將上述濾鏡運用在各種不規則圖形下看看效果:

SVG 濾鏡實現的帶邊框的不規則圖形

效果還算可以,就是顏色是黑色的。如果我們希望邊框的顏色是其他顏色,有沒有辦法呢?

輔以 feFlood 和 feComposite 改變邊框顏色

通過 feFlood 和 feComposite 兩個 SVG 濾鏡,可以給生成的圖塊上不同的顏色,代碼如下:

  1. <svg width="0" height="0"
  2.     <filter id="outline"
  3.         <feMorphology in="SourceAlpha" result="DILATED" operator="dilate" radius="1"></feMorphology> 
  4.  
  5.         <feFlood flood-color="green" flood-opacity="1" result="flood"></feFlood> 
  6.         <feComposite in="flood" in2="DILATED" operator="in" result="OUTLINE"></feComposite> 
  7.  
  8.         <feMerge> 
  9.             <feMergeNode in="OUTLINE" /> 
  10.             <feMergeNode in="SourceGraphic" /> 
  11.         </feMerge> 
  12.     </filter> 
  13. </svg> 

通過 feFlood 中的 flood-color="green",即可控制生成的邊框(圖塊)的顏色,這里設置為了綠色。應用到各個圖形上的效果如下:

SVG 濾鏡實現的能改變顏色的帶邊框的不規則圖形

至此,我們實現了通過 SVG 濾鏡實現對不規則圖形添加不同顏色的邊框。

完整的 DEMO,你可以戳這里:transparent 配合 SVG feMorphology 濾鏡生成不規則邊框 [3]

總結一下

簡單的總結一下:

  • 使用 drop-shadow 可以實現給不規則圖形添加陰影,但是無法實現給不規則圖形添加實體不帶模糊的邊框
  • 使用 feMorphology SVG 濾鏡可以實現給給不規則圖形添加邊框效果,通過控制 radius="1" 可以調節邊框的大小
  • 使用 feMorphology 輔以 feFlood 和 feComposite 濾鏡改變邊框顏色
  • 通過 CSS Filter 的 url 模式,可以快速的將 SVG 濾鏡引入 HTML 元素,例如 filter: url(#outline)

值得注意的是,由于圖形高寬不是 1:1 的,并且 feMorphology 的 dilate 模式也不會根據元素的高寬等比例的擴張,所以生成的邊框是不一定在各處的均勻相等的,而 feMorphology 的 radius 屬性可以傳入兩個值,使用空格分離,分別表示橫向與縱向的擴張大小,實際使用的時候可以微調一下。

最后

本文更多的是提供一種不規則邊框的生成方案思路,當然,具體遇到這種情況大部分還是會以切圖為主,不過多了解掌握一種可行方法也不是壞事。

好了,本文到此結束,一個簡單的小技巧,希望對你有幫助 :)

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

參考資料

[1]transparent 配合 SVG feMorphology 濾鏡生成不規則邊框 : https://codepen.io/Chokcoco/pen/ExZPpQq

[2]有意思!強大的 SVG 濾鏡: https://github.com/chokcoco/cnblogsArticle/issues/27

[3]transparent 配合 SVG feMorphology 濾鏡生成不規則邊框 : https://codepen.io/Chokcoco/pen/ExZPpQq

 

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

2017-08-18 13:30:01

前端CSS布局奇技

2020-05-20 19:38:11

前端js調試工具

2022-01-07 14:50:46

VS CodeLinux代碼

2023-06-26 08:05:36

2021-04-12 06:09:38

Spring擴展點應用

2017-10-24 13:42:55

流氓App安卓Google

2020-11-26 11:45:31

Python繪圖代碼

2022-09-30 12:55:14

Linux筆記

2022-04-21 15:00:53

LinuxShell

2023-09-19 08:03:50

rebase?merge

2022-12-22 08:34:22

CSS不規則圖形

2021-05-18 13:05:31

LinuxRust復用器

2015-04-13 13:21:45

JavaScript JavaScript

2021-02-25 09:19:11

LinuxAppimage命令

2021-06-07 12:20:14

LinuxASCII命令

2019-04-25 13:10:04

Java 8Stream API編程語言

2022-04-24 16:00:15

LinuxLinux命令ls命令

2024-11-28 09:21:00

Python字符串代碼

2021-05-31 11:45:37

LinuxRustShell

2021-05-07 13:56:13

Linux器監視服務器
點贊
收藏

51CTO技術棧公眾號

日本一二三不卡| 亚洲精品电影| 欧美自拍偷拍午夜视频| 日韩av高清| 国产露脸国语对白在线| 亚洲高清资源| 一本色道久久综合亚洲精品小说| 一区二区三区四区毛片| av中文在线资源库| 久久婷婷成人综合色| 成人激情视频在线| 丰满少妇乱子伦精品看片| 欧美日韩激情| 亚洲高清一区二| 天天影视综合色| 成全电影大全在线观看| 国产精品白丝在线| 久久精品二区| 亚洲国产视频一区二区三区| 奇米影视一区二区三区| 97精品国产97久久久久久免费| 制服丨自拍丨欧美丨动漫丨| 日韩av中文字幕一区| 欧美人狂配大交3d怪物一区| 亚洲午夜精品久久久久久人妖| 麻豆视频在线| 久久精品网站免费观看| 国产精品视频免费观看| 91精品国产综合久| 日韩综合小视频| 欧美国产日产韩国视频| 亚洲国产123| 精品久久网站| 日韩黄色在线免费观看| 久久av一区二区三| 亚洲一区二区三区久久久| 在线一区二区观看| 92看片淫黄大片一级| 9999在线视频| 亚洲男人的天堂网| 手机福利在线视频| 成年人在线看| 国产视频一区在线播放| 久久99欧美| 天天操天天干天天干| 国产凹凸在线观看一区二区| 亚洲影院在线看| 国产精品久久无码一三区| 美女视频免费一区| 国产日产久久高清欧美一区| 国产精品无码粉嫩小泬| 丝袜美腿亚洲综合| 日韩免费中文字幕| 潘金莲一级淫片aaaaaa播放| 亚洲欧美日韩专区| 欧美一区二区三区免费视| 青青草av在线播放| 亚洲影院免费| 日韩免费精品视频| 做爰无遮挡三级| 蜜臀va亚洲va欧美va天堂| 国产精品美女网站| 亚洲一区二区视频在线播放| 紧缚奴在线一区二区三区| 91久久国产精品| 99er热精品视频| 国产成人av影院| 国产无套精品一区二区| 天堂av中文在线资源库| 久久网站热最新地址| 日本免费高清一区二区| 国自产拍在线网站网址视频| 国产精品麻豆一区二区| 99久re热视频精品98| 七七成人影院| 狠狠色狠狠色综合日日五| 欧美日韩在线免费播放| 婷婷激情成人| 亚洲国产精品久久久久秋霞不卡| 成人手机在线免费视频| 欧美老女人另类| 日韩一级裸体免费视频| 国产一级在线观看视频| 天堂久久久久va久久久久| 国产精品亚洲自拍| 亚洲第一天堂网| 91一区二区三区在线观看| 亚洲高清视频一区二区| 菠萝菠萝蜜在线视频免费观看| 亚洲自拍偷拍网站| 国产极品美女高潮无套久久久| 成人四虎影院| 精品粉嫩aⅴ一区二区三区四区| 男男做爰猛烈叫床爽爽小说| 日韩精品免费一区二区三区| 欧美国产乱视频| 国产又粗又猛又黄视频| 国产成人在线视频网站| 美国av一区二区三区| 成人在线观看亚洲| 欧美日韩综合视频网址| 三级性生活视频| 欧美大胆视频| 精品激情国产视频| 丁香社区五月天| 国产精品一卡二| 午夜欧美性电影| 9999精品成人免费毛片在线看| 欧美少妇一区二区| 一区二区三区少妇| 中文精品电影| 国产精品久久婷婷六月丁香| 免费观看毛片网站| 1024亚洲合集| 国产v亚洲v天堂无码久久久| jizz18欧美18| 久久躁日日躁aaaaxxxx| 波多野结衣视频在线观看| 不卡欧美aaaaa| 国产一二三四区在线观看| 99只有精品| 国产午夜精品全部视频在线播放 | 中文字幕第80页| 红杏aⅴ成人免费视频| 久久精品久久久久| 中文在线最新版天堂| 91女厕偷拍女厕偷拍高清| 国产一级不卡视频| 国产在线不卡一区二区三区| 中文字幕在线国产精品| www毛片com| 91免费视频网址| 131美女爱做视频| 精品综合久久88少妇激情| 久久6精品影院| 国产精品怡红院| 国产精品二三区| 人人干人人干人人| av一区二区在线观看| 日韩av片免费在线观看| 日本高清中文字幕二区在线| 午夜精品一区二区三区电影天堂 | 中文字幕乱码视频| 国产日韩一级二级三级| 欧美日韩在线成人| 久久91麻豆精品一区| 2018国产精品视频| 神马电影在线观看| 日韩欧美黄色动漫| 成人乱码一区二区三区av| 亚洲专区一区| 欧美影视一区二区| 国产成人精品亚洲日本在线观看| 亚洲美女免费精品视频在线观看| 国产成人无码精品久久久久| 91亚洲精华国产精华精华液| 日本日本19xxxⅹhd乱影响| 日韩mv欧美mv国产网站| 欧日韩不卡在线视频| 免费看男男www网站入口在线| 色婷婷av一区二区| 老司机精品免费视频| 久草中文综合在线| 欧美在线观看黄| 国产日韩三级| 国产mv免费观看入口亚洲| 黄色在线网站| 欧美日韩国产另类不卡| 三级av在线免费观看| 成人久久18免费网站麻豆| 国产极品在线视频| 国产一区二区欧美| 成人有码在线视频| 欧美hdxxxxx| 亚洲精品综合精品自拍| 中文字幕av片| 一区二区三区在线观看国产 | 日韩一区欧美一区| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 1024手机在线视频| 99re热视频这里只精品| 精品日韩久久久| 黄色成人在线网站| 欧美成人免费在线| 亚洲欧美综合久久久久久v动漫| 久久成年人免费电影| 欧洲成人一区二区三区| 欧美探花视频资源| 久久精品国产亚洲av香蕉| 国产亚洲短视频| 精品无码av一区二区三区| 日韩激情一区二区| 国产精品久久国产| 波多野结衣的一区二区三区| 99久久99久久| 小明成人免费视频一区| 欧美激情视频网站| av黄色在线观看| 日韩精品欧美国产精品忘忧草 | 四虎精品在线观看| 欧美在线国产精品| 成人av免费| 国产性猛交xxxx免费看久久| 欧美天堂在线视频| 欧美精品123区| www.国产一区二区| 亚洲黄色小说网站| 国产黄色录像片| 久久麻豆一区二区| jjzzjjzz欧美69巨大| 狠狠色丁香婷综合久久| 蜜臀av午夜一区二区三区| 国内自拍一区| 欧美性视频在线播放| 精品国产一区二区三区四区 | 波多野吉衣在线视频| 奇米精品一区二区三区在线观看一| 免费特级黄色片| 天天色综合色| 亚洲国产精品一区二区第一页 | 亚洲精品资源美女情侣酒店| www三级免费| 欧美人牲a欧美精品| 男人天堂视频在线| 欧美午夜精品久久久久久久| 欧美日韩国产精品一区二区三区| 国产精品国产自产拍高清av| 亚洲图片另类小说| 99精品视频一区二区| 年下总裁被打光屁股sp | 午夜综合激情| 国产中文字幕二区| 激情婷婷欧美| 欧美中文字幕在线观看视频| 午夜久久99| 今天免费高清在线观看国语| 欧美激情777| 亚洲精品免费在线看| 第一会所sis001亚洲| 日韩欧美在线电影| 韩日一区二区三区| 神马影院我不卡| 波多野结衣在线播放一区| 欧洲一区二区在线观看| 国产精品一区二区av交换| 日本一区二区三区视频在线观看 | 久久伦理中文字幕| 成人在线一区二区| 国产高清日韩| 亚洲xxxx做受欧美| 亚洲国产视频二区| 国产精品国模大尺度私拍| 97视频一区| 精品国产一区二区三区四区精华 | 电影一区二区| 国产色视频一区| 二区三区精品| 国产91亚洲精品一区二区三区| 91在线一区| 久久国产精品-国产精品| 亚洲婷婷影院| 亚洲7777| 影音先锋日韩精品| 成人免费性视频| 亚洲一区二区动漫| 欧美大尺度做爰床戏| 国产综合色产在线精品| 色哟哟网站在线观看| 91免费小视频| 国产馆在线观看| 亚洲精品视频在线观看免费| 国产午夜精品无码| 在线欧美小视频| 国产精品自拍电影| 亚洲国产高清自拍| 国产大学生校花援交在线播放| 日韩一区视频在线| 激情影院在线| 国产91露脸中文字幕在线| 草莓视频成人appios| 翡翠波斯猫1977年美国| 久久99影视| 黄色污污在线观看| 久久精品一本| 国内精品国产三级国产aⅴ久| 99热在这里有精品免费| 潮喷失禁大喷水aⅴ无码| 亚洲自拍偷拍欧美| 波多野结衣电车痴汉| 欧美va在线播放| 国产精品一区在线看| 久久91精品国产| 日韩欧美一区二区三区在线观看| 亚洲一区亚洲二区亚洲三区| 亚洲国产合集| 久久久久久久久久久久久国产| 久久精品91| zjzjzjzjzj亚洲女人| 国产精品久久久久久久午夜片| 日韩污视频在线观看| 欧美日韩国产精品自在自线| 视频一区 中文字幕| 久久综合88中文色鬼| gogo亚洲高清大胆美女人体| 产国精品偷在线| 久久国产成人午夜av影院宅| 黄色免费观看视频网站| 国产一区二区电影| youjizz亚洲女人| 精品久久久久久久中文字幕| 99热这里只有精品66| 一本大道亚洲视频| 亚洲国产福利| 国产精品免费一区二区三区在线观看 | 在线观看欧美| 日本一区免费| 亚洲欧美日韩国产综合精品二区| 日本久久久久久久久久| 自拍偷拍欧美激情| 久久精品99北条麻妃| 亚洲精品一区二区在线| 精精国产xxxx视频在线播放| www.成人av| 一区二区免费不卡在线| 一道本在线免费视频| 国产欧美日韩卡一| 欧美男人亚洲天堂| 日韩国产在线看| 麻豆免费版在线观看| 国产精品一区免费观看| 欧美三级第一页| 亚洲制服在线观看| 最新热久久免费视频| 中文字幕一区二区三区四区视频| 国产亚洲精品久久| 四虎4545www精品视频| 欧美少妇一区| 久久久青草婷婷精品综合日韩| av网站有哪些| 欧美视频在线视频| 深夜福利视频在线免费观看| 高清在线视频日韩欧美| 老司机成人在线| 奇米精品一区二区三区| 99久久久精品| 中文字幕在线观看视频网站| 日韩精品免费在线| 黑人精品一区| 色综合久久久久久久久五月| 欧美96一区二区免费视频| 国产成人在线网址| 在线电影院国产精品| av片在线观看网站| 高清国语自产拍免费一区二区三区| 黄色成人av网站| 四虎永久免费影院| 欧美性做爰猛烈叫床潮| 日本在线免费播放| 91中文字精品一区二区| 欧美黄色一区二区| 黄色免费视频网站| 色猫猫国产区一区二在线视频| 二区在线视频| 成人免费激情视频| 国产精品v亚洲精品v日韩精品| 国产精品成人无码专区| 色偷偷久久一区二区三区| 视频免费一区| 风间由美一区二区三区| 日日夜夜免费精品| 麻豆一区在线观看| 欧美精品一区二区三区四区| 欧美片第一页| 成年人三级视频| 91视频一区二区| 91福利免费视频| 午夜精品在线视频| 不卡视频在线| 成年人网站av| 黑人巨大精品欧美一区免费视频| 大地资源中文在线观看免费版 | 国产精品毛片视频| chinese少妇国语对白| 亚洲色图第一区| 视频一区二区三区国产| 成人黄色av播放免费| 99在线精品视频在线观看| 快灬快灬一下爽蜜桃在线观看| 日韩免费视频一区二区| 视频二区不卡| 成人小视频在线观看免费| 国产欧美一区二区三区在线老狼| 国产国语亲子伦亲子| 日韩美女主播视频| 欧美成人一区二免费视频软件| 免费黄色在线视频| 欧美一级电影网站| 国产精品字幕| 人人妻人人添人人爽欧美一区| 中文字幕亚洲一区二区va在线|