搜尋
首頁web前端css教學聊聊怎麼巧用CSS給一般黑色二維碼添上彩色漸層!

怎麼巧用 CSS 建立漸層彩色二維碼?以下這篇文章就來跟大家介紹利用CSS為一般黑色二維碼添上彩色漸層的方法,希望對大家有幫助!

聊聊怎麼巧用CSS給一般黑色二維碼添上彩色漸層!

今日,群組有個很有趣的問題,問我如何實作一個彩色的,有漸層的二維碼,像是這樣:

#很有趣的問題,我們在百度谷歌,搜尋qrcode,能搜到非常多在線製作二維碼的工具,它們其中一些也會帶有製作漸變二維碼的功能。但是它們大部分都是 Canvas 或其它程式語言實現的。 【推薦學習:css影片教學

如果我們現在已經有了一張白底黑字的普通二維碼,想把它變成一個漸變色的二維碼?該如何做呢?

本文就將介紹,使用CSS,快速將一個普通黑色二維碼,變成任何我們想要的彩色漸變二維碼

強大的混合模式

有一張原圖,想改變其顏色。在 CSS 中,我們很快可以想到 濾鏡 filter、或是 混合模式 mix-blend-mode

這裡,我們就需要用到 混合模式 mix-blend-mode。混合模式最常見於 photoshop 中,是 PS 中十分強大的功能之一。目前 CSS 已經原生支援了大部分的混合模式。

原理其實非常簡單,我們實作一張漸層圖形,這張圖形透過混合模式中的mix-blend-mode: lighten 與白底黑字的二維碼重疊在一起後,二維碼中的白色區域將保持不變,而二維碼中的黑色區域將展現為漸變圖案中的顏色

聽起來有點繞,透過一個示意圖,一看就懂,我們只需要兩層,原二維碼為一層,然後將漸變圖案疊加在其之上,並且設置mix -blend-mode: lighten 即可:

<div>
    <img  src="/static/imghwm/default1.png" data-src="qrcode.png" class="lazy" alt="聊聊怎麼巧用CSS給一般黑色二維碼添上彩色漸層!" >
</div>
.g-container {
    position: relative;
    width: 200px;
    height: 200px;
    
    &::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        background: linear-gradient(45deg, #673ab7, #ff5722);
        mix-blend-mode: lighten;
    }
}

這裡,我們用父元素的偽元素節省一個標籤,用作漸變圖層,實際的重疊效果,我製作了一個動畫:

這樣,我們可以透過混合模式,將一張黑色的二維碼圖片,變成了漸層色。

二維碼中間鏤空

當然,這還沒完,有的時候,我們的二維碼中間還會有一些圖案,有一張圓形的或是方形的圖片。

如果使用上述方法,會有一些瑕疵:

那麼,我們還需要根據二維碼的樣式,將漸層圖案中間鏤空!

有趣的是,二維碼中間的圖案,還會有圓形矩形兩種,對於這兩種二維碼,處理的方式還不太一樣。

漸層圖案中心鏤空一個圓形

對於中心圖案是圓形的二維碼,我們只需要實現這樣一個漸變再疊加即可:

這個還是比較簡單的,由於原本是線性漸變,中間需要鏤空一個圓形,最好的方式是使用mask

div {
    background: linear-gradient(45deg, rgb(51, 102, 153), rgb(255, 0, 204));
    mask: radial-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 16%, rgb(0, 0, 0) 16%);
}

漸變圖案中心鏤空一個矩形

但是,對於中間是一個矩形的話,就不太好辦了,我們需要基於漸變圖案實現這樣一個圖形:

#方法其實也有很多,譬如我們把中間透明部分想像成一個div 的content  部分,而周圍漸層顏色區域就是邊框區域。

當然,這裡我使用了clip-path,使用它,也是可以非​​常方便的實現鏤空的矩形:

div {
    background: linear-gradient(45deg, rgb(51, 102, 153), rgb(255, 0, 204));
    clip-path: polygon(0% 0%, 0% 100%, 34% 100%, 34% 34%, 66% 34%, 66% 66%, 34% 66%, 34% 100%, 100% 100%, 100% 0%);
}

製作一個二維碼染色工具

基於上面的知識,我們就可以簡單的建構一個漸層彩色二維碼工具了。

這裡我簡單實作了一個:

我們透過上傳一個普通二維碼,透過自訂漸層顏色,選擇是否需要鏤空,鏤空的類型及大小,快速製作一個漸層彩色二維碼。

簡單示範一下:

一個核心利用 CSS 的小工具就完成啦。

完整的程式碼,可以戳這裡:CodePen - Make A Gradient QrCode

https://codepen.io/Chokcoco/pen/XWzPEXW

#最後

總結一下,本文介紹了利用CSS 混合模式得到漸變二維碼的小技巧,並且利用了maskclip-path 鏤空漸變圖形,一些相關知識點如果你還有所疑問,推薦你再看看我的下列文章:

好了,本文到此結束,希望對你有幫助:)

原文網址:https://segmentfault.com/a/1190000041543121

作者:chokcoco

#(學習影片分享:web前端入門

以上是聊聊怎麼巧用CSS給一般黑色二維碼添上彩色漸層!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
引入NetLify分析引入NetLify分析Apr 19, 2025 am 10:07 AM

您在附帶項目上工作一段時間。您認為它很酷!您決定將其釋放到世界上。然後……順利進行。否則進展不順利。等待,

五星級評分的五種方法五星級評分的五種方法Apr 19, 2025 am 10:04 AM

在喜歡和社會統計的世界中,評論是留下反饋的非常重要的方法。用戶通常喜歡以前知道他人的意見

如果您不知道CSS,哪些CSS很棒,這是最有意義的?如果您不知道CSS,哪些CSS很棒,這是最有意義的?Apr 19, 2025 am 09:56 AM

彼得·保羅(Peter-Paul)發布了這個問題:

用剪貼路徑動畫用剪貼路徑動畫Apr 19, 2025 am 09:52 AM

剪輯路徑是我們通常知道在那裡的CSS屬性之一,但出於任何原因可能不會經常到達。從某種意義上說有點令人生畏

將GraphQL操場與Gatsby一起使用將GraphQL操場與Gatsby一起使用Apr 19, 2025 am 09:51 AM

我假設你們中的大多數人已經聽說過蓋茨比,至少很鬆散地知道,這基本上是一個用於React站點的靜態站點生成器。通常

類型或測試:為什麼不呢?類型或測試:為什麼不呢?Apr 19, 2025 am 09:50 AM

時不時地,關於鍵入JavaScript的價值的辯論會引起辯論。 “只寫更多測試!”大喊一些對手。 “用類型替換單位測試!”

GIT的圖形用戶界面GIT的圖形用戶界面Apr 19, 2025 am 09:46 AM

如今,Lemme匯集了Guis的主要參與者。

滾動懶惰的提示滾動懶惰的提示Apr 19, 2025 am 09:44 AM

您可能已經聽到(甚至發出電話)說:“我們可以使用懶惰的加載!”在尋找一種纖細的網頁時,請使用。

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

mPDF

mPDF

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

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器