利用CSS油漆API的力量來召喚生成斑點!本教程探討了使用Houdini家族的一部分CSS Paint API的定制,隨機斑點形狀的創建。我們將建立一個生成的斑點工作點,利用JavaScript和CSS自定義屬性來控制和響應能力。
生成設計引入了機會元素,定義規則並讓隨機性指導結果。將其視為使用郵票和骰子來創建獨特的模式 - 我們將使用代碼使用類似的原理。 CSS Paint API提供了對CSS的低水平訪問權限,從而可以通過JavaScript Worklets創建編程圖像。 Worklet是一個帶有paint()
函數的JavaScript類,可為CSS屬性生成圖像。
我們將構建一個生成的Blob Worklet,接受CSS自定義屬性作為控制其外觀的輸入。這提供了一種表演劑,乾淨的方法,避免了雜物。該工作點在單獨的線程上運行,以防止UI放緩。
這是工作人員功能的預覽:
儘管存在創建斑點的其他方法(例如Blobmaker, border-radius
),但CSS Paint API提供了出色的表現力和性能。它允許通過CSS自定義屬性( --blob-seed
, --blob-num-points
, --blob-variance
, --blob-smoothness
, --blob-fill
)進行精確控制,而不是手動調整。 API的多線程自然可以確保即使具有復雜的生成視覺效果,也可以確保閃耀的性能。
瀏覽器支持和多填充: CSS Paint API享有越來越多的支持,但並不普遍。我們將使用css-paint-polyfill
來確保使用@supports
探索優雅的後備機制。
開發設置:一個簡單的開發環境(使用npm install
和npm run start
在克隆的工作點啟動式存儲庫上),以便於易於開發和實時重新加載。此設置處理HTTPS或Local主機服務,以防止CORS問題。
工作點實施:
Blob
類定義並在registerPaint("blob", Blob)
中註冊。paint()
函數:此功能接收2D圖形上下文( ctx
),元素幾何( geometry
)和自定義屬性( properties
)。inputProperties
Getter定義了工作場所接受的自定義屬性。propToString
, propToNumber
)分析自定義屬性值。mulberry32
PRNG確保基於種子值( --blob-seed
)的一致隨機性。這避免了視覺閃爍的重新租賃。lerp
功能有助於此調整。 spline
函數(來自@georgedoescode/generative-utils
)生成平滑曲線。document.querySelector(".worklet-canvas").style.setProperty("--blob-seed", Math.random() * 10000);
對於每個頁面上的變化斑點形狀。CSS["paintWorklet"]
檢查和@supports
規則為不支持的瀏覽器提供@supports規則提供@supports規則,為多文件加載。該全面的指南使您使用CSS Paint API創建動態和視覺上吸引人的生成斑點。嘗試自定義屬性,以微調斑點的外觀並探索其在UI設計中的不同應用。
以上是與CSS油漆API結合生成斑點的詳細內容。更多資訊請關注PHP中文網其他相關文章!