SVG <mask>蒙板
使用<mask>可以定義一個蒙版。
<clipPath>裁切路徑和<mask>蒙版非常類似,甚至可以說實現同一型別的效果。
它們之間的主要不同點是:
(1).裁切路徑是可見與不可見的突變,要麼可見要麼不可見。
(2).蒙版則是可見與不可見的漸變,期間可以有過渡效果。
關於裁切路徑的基本用法可以參閱SVG <clipPath>裁切路徑一章節。
蒙板用<mask>元素定義,只需要在渲染物件的mask屬性中引用蒙板即可。
<mask>元素可以包含任何的圖形元素和容器元素(例如<g>)。
蒙板效果基本就是根據蒙板中每個點的顏色和透明度計算出一個最終的透明度,然後在渲染物件的時候,在物件上面罩上這個帶有不同透明度的蒙板層,體現出蒙板效果。對於渲染物件來說,只有在蒙版內的部分會按照蒙板上點的透明度來渲染,不在蒙板內的部分不顯示。程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> svg { width:800px; height:350px; } </style> </head> <body> <svg> <defs> <linearGradient id="Gradient" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="800" y2="0"> <stop offset="0" stop-color="white" stop-opacity="0" /> <stop offset="1" stop-color="white" stop-opacity="1" /> </linearGradient> <mask id="Mask" maskUnits="userSpaceOnUse" x="0" y="0" width="800" height="300"> <rect x="0" y="0" width="800" height="300" fill="url(#Gradient)"/> </mask> <text id="Text" x="400" y="200" font-family="Verdana" font-size="100" text-anchor="middle"> 螞蟻部落歡迎您 </text> </defs> <rect x="0" y="0" width="800" height="300" fill="#ccc" /> <use xlink:href="#Text" fill="blue" mask="url(#Mask)" /> <use xlink:href="#Text" fill="none" stroke="black" stroke-width="2" /> </svg> </body> </html>
下面對程式碼簡單做一下介紹:
(1).蒙版的透明度是可以過渡的。
(2).自行修改蒙版的尺寸,引用蒙版的元素尺寸超過這個尺寸是不可見的。
特別說明:
(1).蒙版僅支援黑或白和透明度。
(2).當顏色為純白色時,蒙版透明度控制蒙版層透明度;當顏色為純黑色時,無論透明度是多少均是透明的。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> svg { width:800px; height:350px; } </style> </head> <body> <svg> <defs> <linearGradient id="Gradient" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="800" y2="0"> <stop offset="0" stop-color="green" stop-opacity="0" /> <stop offset="1" stop-color="green" stop-opacity="1" /> </linearGradient> <mask id="Mask" maskUnits="userSpaceOnUse" x="0" y="0" width="800" height="300"> <rect x="0" y="0" width="800" height="300" fill="url(#Gradient)"/> </mask> </defs> <rect x="0" y="0" width="800" height="300" mask="url(#Mask)" /> </svg> </body> </html>
設定漸變顏色為綠色,但是表現為黑白效果;儘管總是表現黑白,但不同顏色的程度有差別。
當設定顏色為黑色的時候,無論如何設定透明度,始終表現為透明效果。
maskUnits屬性:
具有兩個屬性值:
(1).objectBoundingBox(預設值)表示mask元素座標(x,y)和尺寸(width,height)的座標系統使用引用該蒙板的元素的當前使用者座標系。
(2).userSpaceOnUse表示mask元素座標(x,y)和尺寸(width,height)的座標系統用相對於引用蒙板的元素的包圍盒的相對值。
maskContentUnits屬性:
與上面兩個屬性作用類同,只不過是設定<mask>子元素所採用的座標系,即x, y, width和height的取值方式。
具有兩個屬性值:
(1).userSpaceOnUse(預設值)。
(2).objectBoundingBox,在此屬性值下,x, y, width和height的預設值分別是-10%,-10%,120%,120%。
相關文章
- UI 設計師 SVG 動畫進階篇——蒙版動畫(下)UISVG動畫
- UI設計師SVG動畫進階篇——蒙版動畫(上)UISVG動畫
- 彈層蒙版(mask),ios滾動穿透,我們專案的解決方案iOS穿透
- SVG剪下蒙版屬性clip-path實戰,動態蒙版+動態圖形,動動組合SVG
- Dojo:主題(theme)切換以及Div蒙板覆蓋
- element-ui 的Dialog被蒙板遮住原因及解決辦法UI
- 奇妙的 CSS MASKCSS
- Unity遮罩之Mask、RectMask2D與Sprite Mask適用場景分析Unity遮罩
- 【SVG】SVG的奪命利器——pathSVG
- SVG入門—如何手寫SVGSVG
- SVG designer - boxy-svgSVG
- WPF use SVG via SVG and SharpVectorsSVG
- (React啟蒙)理解React 元件React元件
- Polar mask錯誤總結
- CSS mask 與 切圖藝術CSS
- SVG 動畫SVG動畫
- SVG <pattern>SVG
- SVG 安全SVG
- js SVGJSSVG
- 從零開始 Mask RCNN 實戰:基於 Win10 的 Mask RCNN 環境搭建CNNWin10
- Lumenzia for Mac(PS亮度蒙版工具)Mac
- mask-image實現聚光燈效果
- Keras中Mask的傳遞過程Keras
- svg01——svg簡介及簡單使用SVG
- 線上SVG轉換,支援SVG to PNG、SVG to JPEG、SVG to WEBP 圖片轉換操作-toolfk程式設計師線上工具網SVGWeb程式設計師
- SVG 文字排版SVG
- SVG <tspan>元素SVG
- SVG <switch>元素SVG
- SVG <markers>用法SVG
- 小試SVGSVG
- SVG <image>元素SVG
- SVG 的使用SVG
- SVG SMIL AnimationSVG
- SVG簡介SVG
- SVG的引用SVG
- svg_pathsSVG
- svg畫弧SVG
- SVG animation 動畫SVG動畫