目錄
強大的混合模式
二維碼中間鏤空
漸層圖案中心鏤空一個圓形
漸變圖案中心鏤空一個矩形
製作一個二維碼染色工具
#最後
首頁 web前端 css教學 聊聊怎麼巧用CSS給一般黑色二維碼添上彩色漸層!

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

Jul 14, 2022 am 10:34 AM
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 class="g-container">
    <img src="qrcode.png">
</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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1592
276
如何更改CSS中的列表樣式 如何更改CSS中的列表樣式 Aug 17, 2025 am 10:04 AM

要更改CSS列表樣式,首先使用list-style-type改變項目符號或編號樣式,1.使用list-style-type設置ul的項目符號為disc、circle或square,ol的編號為decimal、lower-alpha、upper-alpha、lower-roman或upper-roman,2.用list-style:none完全移除標記,3.使用list-style-image:url('bullet.png')替換為自定義圖像,4.通過list-style-position:in

如何使用CSS創建響應性的推薦滑塊 如何使用CSS創建響應性的推薦滑塊 Aug 12, 2025 am 09:42 AM

使用純CSS創建響應式自動輪播的推薦語滑塊是可行的,只需結合HTML結構、Flexbox佈局和CSS動畫。 2.首先構建包含多個推薦語項的語義化HTML容器,每個.item包含引用內容和作者信息。 3.通過設置父容器display:flex、width:300%(三張幻燈片)並應用overflow:hidden實現橫向排列。 4.利用@keyframes定義從0%到-100%的translateX變換,配合animation:scroll15slinearinfinite實現無縫自動滾動。 5.添加媒體

如何在CSS中創建虛線邊框 如何在CSS中創建虛線邊框 Aug 15, 2025 am 04:56 AM

使用CSS創建點狀邊框只需設置border屬性為dotted即可,例如“border:3pxdotted#000”可為元素添加3像素寬的黑色點狀邊框,通過調整border-width可改變點的大小,較寬的邊框產生更大的點,且可單獨為某一邊設置點狀邊框如“border-top:2pxdottedred”,點狀邊框適用於div、input等塊級元素,常用於焦點狀態或可編輯區域以提升可訪問性,需注意顏色對比度,同時區別於dashed的短線樣式,dotted呈現圓形點狀,該特性在所有主流瀏覽器中均被廣泛

如何將CSS梯度用於背景 如何將CSS梯度用於背景 Aug 17, 2025 am 08:39 AM

CSSgradientsprovidesmoothcolortransitionswithoutimages.1.Lineargradientstransitioncolorsalongastraightlineusingdirectionsliketobottomorangleslike45deg,andsupportmultiplecolorstopsforcomplexeffects.2.Radialgradientsradiatefromacentralpointusingcircleo

如何使用CSS創建玻璃塑料效應 如何使用CSS創建玻璃塑料效應 Aug 22, 2025 am 07:54 AM

要創建CSS的玻璃擬態效果,需使用backdrop-filter實現背景模糊,設置半透明背景如rgba(255,255,255,0.1),添加細微邊框和陰影以增強層次感,並確保元素背後有足夠視覺內容;1.使用backdrop-filter:blur(10px)模糊背景內容;2.採用rgba或hsla定義透明背景控制通透程度;3.添加1pxsolidrgba(255,255,255,0.3)邊框及box-shadow提升立體感;4.確保容器具有豐富背景如圖片或紋理以呈現模糊穿透效果;5.為兼容舊瀏

如何更改CSS中的光標 如何更改CSS中的光標 Aug 16, 2025 am 05:00 AM

Usebuilt-incursortypeslikepointer,help,ornot-allowedtoprovideimmediatevisualfeedbackfordifferentinteractiveelements.2.ApplycustomcursorimageswiththecursorpropertyusingaURL,optionallyspecifyingahotspotandalwaysincludingafallbacklikeautoorpointer.3.Fol

如何在CSS中使用網格 - 板序列 如何在CSS中使用網格 - 板序列 Aug 22, 2025 am 07:56 AM

Grid-template-areaspropertyallowsdevelopspocrockearteeintuitive,ReadableLayoutsByDefiningNemedGridareas; everystringrepresentsarowresentsarowandeashwordeachwordaColumnCell,withGrid-areanamesonamesonameSonemaneMeAnemesonChildEllementsMatchingThoseNoseNementsMatchingTheSoseIntheTemplate,suchans'headerheaderheaderheaderheaderheaderheaderheaderheader for for for for for for

如何在CSS中添加盒子陰影 如何在CSS中添加盒子陰影 Aug 18, 2025 am 11:39 AM

要添加盒陰影,使用box-shadow屬性;1.基本語法為box-shadow:水平偏移垂直偏移模糊半徑擴展半徑顏色內陰影;2.前三個值必填,其餘可選;3.使用rgba()或hsla()實現透明效果;4.正擴展半徑擴大陰影,負值縮小;5.可通過逗號分隔添加多個陰影;6.應避免過度使用,確保在不同背景上測試可見性;該屬性瀏覽器支持良好,合理運用可提升設計質感。

See all articles