検索

Building a Color Picker Extension

導入

このブログ投稿では、シンプルかつ強力なカラー ピッカー ブラウザ拡張機能の作成方法を検討します。この拡張機能を使用すると、ユーザーは簡単な操作で画面から色を簡単に選択し、選択した色の履歴を表示し、カラー パレットを管理できます。

プロジェクト概要

カラーピッカー拡張機能は、次のユーザーフレンドリーなインターフェイスを提供します。

  • EyeDropper API を使用して画面から色を選択します。
  • 選択した色の履歴を表示します。
  • カラーコードをクリップボードにコピーします。
  • 選択した色をすべてクリアします。

特徴

  • 色の選択: EyeDropper API を使用して、画面の任意の部分から色を選択します。
  • カラー履歴: 選択した色のリストを簡単にアクセスして管理します。
  • クリップボードのコピー: カラーコードをクリップボードにすばやくコピーします。
  • すべてクリア: ワンクリックで履歴からすべての色を削除します。

使用されている技術

  • HTML: 拡張機能のポップアップのマークアップ。
  • CSS: ポップアップとその要素のスタイル。
  • JavaScript: カラーの選択、カラー履歴の表示、およびクリップボード操作の管理を処理します。
  • EyeDropper API: 画面から色を選択できます。
  • localStorage: 選択したカラーをセッション間で保存します。

プロジェクトの構造

  1. HTML (index.html): カラー ピッカー インターフェイスの構造が含まれています。
  2. CSS (style.css): ポップアップとその要素のスタイルを設定します。
  3. JavaScript (script.js): 色の選択、表示、ローカル ストレージとの対話などの機能を管理します。
  4. マニフェスト (manifest.json): 拡張機能のメタデータと構成を定義します。

インストール

拡張機能をローカルでテストするには:

  1. ファイルをディレクトリに保存します。
  2. Chrome を開き、chrome://extensions/ に移動します。
  3. 「開発者モード」を有効にします (右上のトグル)。
  4. 「解凍してロード」をクリックし、プロジェクト ディレクトリを選択します。

使用法

  1. 拡張機能ポップアップの「カラーを選択」ボタンをクリックして、カラーピッカーをアクティブにします。
  2. 画面上の任意の場所から色を選択します。
  3. ポップアップで選択した色を表示し、任意の色をクリックしてコードをクリップボードにコピーします。
  4. 履歴からすべての色を削除するには、[すべてクリア] をクリックします。

コードの説明

HTML



    <link rel="stylesheet" href="style.css">
    <script src="script.js" defer></script>


    <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>


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 => `
        
  • ${color}
  • `).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: 画面から色を選択する機能を提供します。
    • ポピンズ フォント: ポップアップ内のテキストのスタイルを設定するために使用されます。

    著者

    Abhishek Gurjar は、実用的で機能的な Web アプリケーションの作成に情熱を注ぐ専任の Web 開発者です。 GitHub で彼のプロジェクトをさらにチェックしてください。

    以上がカラーピッカー拡張機能の構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    Google Fontsをタグ付けし、Goofonts.comを作成する方法Google Fontsをタグ付けし、Goofonts.comを作成する方法Apr 12, 2025 pm 12:02 PM

    Goofontsは、開発者妻とデザイナーの夫によって署名されたサイドプロジェクトであり、どちらもタイポグラフィの大ファンです。 Googleにタグを付けています

    時代を超越したWeb開発記事時代を超越したWeb開発記事Apr 12, 2025 am 11:44 AM

    Pavithra Kodmadは、彼らが変化したWeb開発に関する最も時代を超越した記事のいくつかであると考えていることについて、人々に推奨事項を求めました

    セクション要素との取引セクション要素との取引Apr 12, 2025 am 11:39 AM

    2つの記事がまったく同じ日に公開されました。

    graphQlの練習JavaScript APIでクエリをクエリしますgraphQlの練習JavaScript APIでクエリをクエリしますApr 12, 2025 am 11:33 AM

    GraphQL APIの構築方法を学ぶことは非常に挑戦的です。ただし、10分でGraphQL APIを使用する方法を学ぶことができます!そして、それは私が完璧になったことがあります

    コンポーネントレベルのCMSコンポーネントレベルのCMSApr 12, 2025 am 11:09 AM

    コンポーネントがデータが近くに住んでいる環境に住んでいる場合、視覚コンポーネントと

    円にタイプを設定します...オフセットパス付き円にタイプを設定します...オフセットパス付きApr 12, 2025 am 11:00 AM

    ここでは、Yuanchuanからの合法的なCSSの策略があります。このCSSプロパティオフセットパスがあります。むかしむかし、それはモーションパスと呼ばれ、その後改名されました。私

    CSSで「戻る」ことは何をしますか?CSSで「戻る」ことは何をしますか?Apr 12, 2025 am 10:59 AM

    Miriam Suzanneは、このテーマに関するMozilla開発者のビデオで説明しています。

    現代の恋人現代の恋人Apr 12, 2025 am 10:58 AM

    私はこのようなものが大好きです。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

    EditPlus 中国語クラック版

    EditPlus 中国語クラック版

    サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 最新バージョン