建立顏色選擇器擴展
介紹
在這篇文章中,我們將探索如何建立一個簡單但功能強大的顏色選擇器瀏覽器擴充功能。此擴充功能允許用戶輕鬆地從螢幕上選擇顏色,查看所選顏色的歷史記錄,並透過簡單的互動來管理他們的調色板。
項目概況
顏色選擇器擴充功能提供了一個使用者友善的介面:
- 使用 EyeDropper API 從螢幕上選取顏色。
- 查看所選顏色的歷史記錄。
- 將顏色代碼複製到剪貼簿。
- 清除所有選取的顏色。
特徵
- 顏色選擇:使用 EyeDropper API 從螢幕的任何部分選擇顏色。
- 顏色歷史記錄:維護易於存取的所選顏色清單。
- 剪貼簿複製:快速將顏色代碼複製到剪貼簿。
- 全部清除:只需單擊即可從歷史記錄中刪除所有顏色。
使用的技術
- HTML:擴充功能彈出視窗的標記。
- CSS:彈出視窗及其元素的樣式。
- JavaScript:處理顏色擷取、顯示顏色歷史記錄、管理剪貼簿操作。
- EyeDropper API:允許從螢幕上選取顏色。
- localStorage:儲存跨會話選擇的顏色。
專案結構
- HTML (index.html):包含顏色選擇器介面的結構。
- CSS (style.css):設定彈出視窗及其元素的樣式。
- JavaScript (script.js):管理諸如選擇顏色、顯示顏色以及與本機儲存互動等功能。
- Manifest (manifest.json):定義擴充的元資料和配置。
安裝
要在本地測試擴充:
- 將檔案儲存到目錄中。
- 開啟 Chrome 並導覽至 chrome://extensions/。
- 啟用「開發者模式」(右上角切換)。
- 點選「載入解壓縮」並選擇您的項目目錄。
用法
- 點擊擴充彈出視窗中的「選擇顏色」按鈕以啟動顏色選擇器。
- 從螢幕上的任意位置選擇一種顏色。
- 在彈出視窗中查看所選顏色,然後按一下任何顏色將其程式碼複製到剪貼簿。
- 按一下「全部清除」可從歷史記錄中刪除所有顏色。
程式碼說明
超文本標記語言
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="style.css"> <script src="script.js" defer></script> </head> <body> <div class="popup"> <div class="picker"> <button id="color-picker">Pick Color</button> </div> <div class="picked-colors hide"> <header> <p class="title">Picked colors</p> <span class="clear-all">Clear All</span> </header> <ul class="all-colors"></ul> </div> </div> </body> </html>
登入後複製
JavaScript
const colorPickerBtn = document.querySelector("#color-picker"); const clearAll = document.querySelector(".clear-all"); const colorList = document.querySelector(".all-colors"); const pickedColors = JSON.parse(localStorage.getItem("picked-colors") || "[]"); const copyColor = (elem) => { elem.innerText = "Copied"; navigator.clipboard.writeText(elem.dataset.color); setTimeout(() => elem.innerText = elem.dataset.color, 1000); } const showColor = () => { if (!pickedColors.length) return; colorList.innerHTML = pickedColors.map(color => ` <li class="color"> <span class="rect" style="background: ${color}; border: 1px solid ${color == "#ffffff" ? "#ccc" : color}"></span> <span class="value hex" data-color="${color}">${color}</span> </li> `).join(""); document.querySelector(".picked-colors").classList.remove("hide"); document.querySelectorAll(".color").forEach(li => { li.addEventListener("click", e => copyColor(e.currentTarget.lastElementChild)); }); } showColor(); const activateEyeDropper = () => { document.body.style.display = "none"; setTimeout(async () => { try { const eyeDropper = new EyeDropper(); const { sRGBHex } = await eyeDropper.open(); navigator.clipboard.writeText(sRGBHex); if (!pickedColors.includes(sRGBHex)) { pickedColors.push(sRGBHex); localStorage.setItem("picked-colors", JSON.stringify(pickedColors)); showColor(); } } catch (error) { alert("Failed to copy the color code!"); } document.body.style.display = "block"; }, 10); } const clearAllColors = () => { pickedColors.length = 0; localStorage.setItem("picked-colors", JSON.stringify(pickedColors)); document.querySelector(".picked-colors").classList.add("hide"); } clearAll.addEventListener("click", clearAllColors); colorPickerBtn.addEventListener("click", activateEyeDropper);
登入後複製
CSS
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; font-family: "Poppins", sans-serif; } .popup { width: 350px; background: #fff; } .popup :where(.picker, header, .all-colors) { display: flex; align-items: center; } .popup .picker { padding: 30px 0; background: #E3F2FD; justify-content: center; } .picker #color-picker { border: none; outline: none; color: #fff; font-size: 1rem; cursor: pointer; padding: 10px 20px; border-radius: 5px; background: #5372F0; transition: 0.3s ease; } #color-picker:hover { background: #2c52ed; } .picked-colors { margin: 10px 15px; } .picked-colors header { justify-content: space-between; } header .title { font-size: 1rem; } header .clear-all { cursor: pointer; font-size: 0.9rem; color: #5372F0; } header .clear-all:hover { color: #143feb; } .picked-colors.hide { display: none; } .picked-colors .all-colors { flex-wrap: wrap; list-style: none; margin: 10px 0 15px; } .all-colors .color { display: flex; cursor: pointer; margin-bottom: 10px; width: calc(100% / 3); } .all-colors .rect { height: 21px; width: 21px; display: block; margin-right: 8px; border-radius: 5px; } .all-colors .color span { font-size: 0.96rem; font-weight: 500; text-transform: uppercase; font-family: "Open sans"; }
登入後複製
現場演示
您可以按照上面的安裝說明在本地測試擴充功能。安裝後,擴充功能的彈出視窗將允許您選擇顏色並管理您的顏色歷史記錄。
結論
此顏色選擇器擴充功能示範如何將 EyeDropper API 整合到瀏覽器擴充功能中,為使用者提供方便的顏色選擇和管理工具。無論您是設計師還是喜歡使用顏色的人,此擴充功能都可以增強您的工作流程。
製作人員
- EyeDropper API:提供從螢幕上選取顏色的功能。
- Poppins 字體:用於設定彈出視窗中文字的樣式。
作者
Abhishek Gurjar 是一位專注的 Web 開發人員,熱衷於創建實用且功能性的 Web 應用程式。在 GitHub 上查看他的更多專案。
以上是建立顏色選擇器擴展的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章
Windows 11 KB5054979中的新功能以及如何解決更新問題
4 週前
By DDD
如何修復KB5055523無法在Windows 11中安裝?
3 週前
By DDD
Inzoi:如何申請學校和大學
1 個月前
By DDD
如何修復KB5055518無法在Windows 10中安裝?
3 週前
By DDD
在哪裡可以找到Atomfall中的站點辦公室鑰匙
4 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

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

Dreamweaver CS6
視覺化網頁開發工具

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