搜尋
首頁web前端css教學CSS-ing糖果幽靈按鈕

CSS-ing糖果幽靈按鈕

最近,我尋求編碼靈感,缺乏藝術才能。我的方法?複製他人的視覺吸引力創作,重點關注清潔,簡潔的代碼。這些糖果幽靈按鈕吸引了我的注意!

它們似乎非常適合快速項目。在十五分鐘內,我在鉻中實現了這一目標:

該技術值得共享。本文詳細介紹了我的過程並探討了替代方法。

初始設置

一個簡單的按鈕元素形成基礎,其中包含了用於表情符號插入的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-boxbackground-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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
模擬鼠標運動模擬鼠標運動Apr 22, 2025 am 11:45 AM

如果您曾經在現場演講或課程中必須顯示一個互動動畫,那麼您可能知道它並不總是那麼容易與您的幻燈片進行互動

通過Astro Action和Fuse.js為搜索提供動力通過Astro Action和Fuse.js為搜索提供動力Apr 22, 2025 am 11:41 AM

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

未定義:第三個布爾值未定義:第三個布爾值Apr 22, 2025 am 11:38 AM

我想在我的一個項目中實現一條通知消息,類似於您在保存文檔時在Google文檔中看到的信息。換句話說,一個

捍衛三元聲明捍衛三元聲明Apr 22, 2025 am 11:25 AM

幾個月前,我正在使用黑客新聞(就像一個人一樣),並且遇到了一篇(現已刪除的)文章,內容涉及不使用if語句。如果您是這個想法的新手(就像我

使用網絡語音API進行多語言翻譯使用網絡語音API進行多語言翻譯Apr 22, 2025 am 11:23 AM

自科幻小說以來,我們就幻想著與我們交談的機器。今天這很普遍。即便如此,製造的技術

JetPack Gutenberg塊JetPack Gutenberg塊Apr 22, 2025 am 11:20 AM

我記得當古騰堡被釋放到核心時,因為那天我在WordCamp我們。現在已經過去了幾個月,所以我想我們越來越多的人

在VUE中創建可重複使用的分頁組件在VUE中創建可重複使用的分頁組件Apr 22, 2025 am 11:17 AM

大多數Web應用程序背後的想法是從數據庫中獲取數據,並以最佳方式將其呈現給用戶。當我們處理數據時

使用'盒子陰影”和剪輯路徑一起使用'盒子陰影”和剪輯路徑一起Apr 22, 2025 am 11:13 AM

讓我們在一個情況下做一些似乎有意義的事情的情況下逐步進行一些逐步,但是您仍然可以用CSS欺騙來完成它。在這個

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

mPDF

mPDF

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

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SecLists

SecLists

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