最近,我尋求編碼靈感,缺乏藝術才能。我的方法?複製他人的視覺吸引力創作,重點關注清潔,簡潔的代碼。這些糖果幽靈按鈕吸引了我的注意!
它們似乎非常適合快速項目。在十五分鐘內,我在鉻中實現了這一目標:
該技術值得共享。本文詳細介紹了我的過程並探討了替代方法。
初始設置
一個簡單的按鈕元素形成基礎,其中包含了用於表情符號插入的data-ico
屬性和样式屬性中的停止列表的自--slist
CSS屬性。
<code>boo!</code>
插圖後完成時,我發現了野生動物園的重大剪接到文本限制。它在按鈕元素上失敗, display: flex
(可能是網格)元素和子元素文本。因此,此處描述的技術是不可能的。解決方法涉及築巢<span></span>
在按鈕中,將所有按鈕樣式應用於<span></span>
,並確保它覆蓋父母的邊界盒。對於缺少物理Apple設備訪問的Linux用戶,我建議Epiphany(謝謝,Brian!)。
CSS利用::after
圖標的偽元素和文本/圖標對齊的網格佈局。還應用了邊界,填充,邊界 - 拉迪烏斯,對角線梯度的--slist
列表停止列表和字體樣式。
<code>button { display: grid; grid-auto-flow: column; grid-gap: .5em; border: solid .25em transparent; padding: 1em 1.5em; border-radius: 9em; background: linear-gradient(to right bottom, var(--slist)) border-box; font: 700 1.5em/ 1.25 ubuntu, sans-serif; text-transform: uppercase; &::after { content: attr(data-ico) } }</code>
上述代碼上的澄清: background-origin
background-clip
設置為border-box
。 background-origin
物質將background-position
的S 0,0點定位在指定框的左上角,確定了background-size
參考。 border-box
確保梯度跨越整個邊框盒。默認的padding-box
將導致梯度僅覆蓋填充區域。
鉻特異性溶液(非標準)
該方法採用三個掩碼層和合成。在[鏈接到速成課程]中可以找到蒙版複合的複習。僅在CSS面膜層中alpha通道很重要。 RGB渠道不會影響結果。
我們從兩層開始:一個完全不透明的層覆蓋邊框框(到處都是alpha = 1),一個完全不透明的層,層僅限於填充盒(padding-box中的alpha = 1,室外0)。
將佈局框視為嵌套矩形。底層在邊界盒上完全不透明。頂層在填充框中是不透明的,並且在邊框區域透明。拐角圓形由border-radius
(和填充盒的border-width
)確定。
這些層是使用exclude
操作(或WebKit中的xor
)組合的。結果:填充框中的alpha = 0(兩個層都有alpha = 1),並且在邊框區域(第一層alpha = 1,第二層alpha = 0)中的alpha = 1。
代碼:
<code>button { /* same base styles */ --full: linear-gradient(red 0 0); -webkit-mask: var(--full) padding-box, var(--full); -webkit-mask-composite: xor; mask: var(--full) padding-box exclude, var(--full); }</code>
詳細信息:紅色梯度用於簡潔。由於背景-CLIP的限制,梯度用於兩層。包括標準mask-composite
,非標準版本被覆蓋。
這會產生一個梯度邊界,但缺乏文字。添加第三個掩碼層,僅限於文本(帶有透明的文本),並與先前的結果進行置換,從而添加了文本。但是,由於mask-clip
的非標準text
值,這是鉻特異性的。一個@supports
塊可確保跨瀏覽器兼容性(在非支持瀏覽器中無需文本掩蓋)。
<code>button { /* same base styles */ @supports (-webkit-mask-clip: text) { -webkit-text-fill-color: transparent; --full: linear-gradient(red 0 0); -webkit-mask: var(--full) text, var(--full) padding-box, var(--full); -webkit-mask-composite: xor; } }</code>
這是一種簡單的方法,但它依賴非標準功能限制了其瀏覽器兼容性。讓我們探索替代方案,更廣泛支持的方法。
替代方法:偽元素和邊界圖像解決方案
額外的偽元素解決方案可以通過將背景夾在文本區域並使用絕對位置的梯度邊框來避免掩蓋,並在偽元素::before
添加漸變邊框。邊界圖像解決方案雖然更簡單,但對border-radius
有局限性。這些方法比鉻特異性解決方案提供了更好的跨瀏覽器兼容性。原始文章中提供了這些方法的更多詳細信息和代碼示例。也在原始文章中也描述的混合解決方案提供了另一種方法,但具有有關背景交互的局限性。每種方法都具有其優點和劣勢,具體取決於所需的跨瀏覽器支持和特定設計要求的水平。
以上是CSS-ing糖果幽靈按鈕的詳細內容。更多資訊請關注PHP中文網其他相關文章!

對於Astro,我們可以在構建過程中生成大部分網站,但是有一小部分服務器端代碼可以使用Fuse.js之類的搜索功能來處理搜索功能。在此演示中,我們將使用保險絲搜索一組個人“書籤”


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。