Tworzenie niestandardowej palety kolorów zgodnej z Bootstrap i WCAG
Tworzenie własnej palety kolorystycznej to jedna z najbardziej satysfakcjonujących części projektowania interfejsów. Pozwala nadać projektowi unikalny charakter, zachowując jednocześnie pełną kompatybilność z systemami takimi jak Bootstrap oraz standardami dostępności WCAG. W tym artykule omówimy cały proces — od definicji kolorów bazowych, przez generowanie odcieni, aż po tworzenie dostępnych komponentów.
Dlaczego warto tworzyć własną paletę kolorów?
Standardowa paleta Bootstrapa jest przemyślana, ale ograniczona. Jeśli chcesz nadać swojej aplikacji indywidualny styl lub przygotować kompletny system designu, własne kolory stają się koniecznością. Właśnie dlatego powstała poniższa niestandardowa paleta.
Oto zestaw nowych kolorów bazowych, które uzupełniają, ale nie powielają standardowej palety Bootstrapa:
- Lime — #8bc34a
- Mint — #3ddc97
- Azure — #3f8efc
- Navy — #001f54
- Violet — #9b59b6
- Magenta — #ff2e9d
- Brick — #b22222
- Amber — #ffb300
- Olive — #708238
- Turquoise — #30d5c8
- Slate — #6c7a89
- Brown — #8b4513
A oto CSS:
--bs-lime: #8bc34a;
--bs-mint: #3ddc97;
--bs-azure: #3f8efc;
--bs-navy: #001f54;
--bs-violet: #9b59b6;
--bs-magenta: #ff2e9d;
--bs-brick: #b22222;
--bs-amber: #ffb300;
--bs-olive: #708238;
--bs-turquoise: #30d5c8;
--bs-slate: #6c7a89;
--bs-brown: #8b4513;
Generowanie odcieni: tints i shades
Aby w pełni zintegrować kolory z systemem projektowym, każdy z nich został rozszerzony o odcienie 100–900, zgodnie z metodologią Bootstrapa. Zakres obejmuje delikatne rozjaśnienia (tints) oraz przyciemnienia (shades). Dzięki temu każdy kolor może pełnić różne role: tła, borderów, stanów aktywnych, hoverów i akcentów.
Poniżej znajduje się przykład (dla koloru lime), a pełny zestaw obejmuje wszystkie nowe kolory:
--bs-lime-100: #e8f3db;
--bs-lime-200: #d1e7b7;
--bs-lime-300: #b9db92;
--bs-lime-400: #a2cf6e;
--bs-lime-500: #8bc34a;
--bs-lime-600: #6f9c3b;
--bs-lime-700: #53752c;
--bs-lime-800: #384e1e;
--bs-lime-900: #1c270f;
Analogiczny zestaw odcieni został utworzony dla wszystkich pozostałych kolorów: mint, azure, navy, violet, magenta, brick, amber, olive, turquoise, slate oraz brown.
Tabela odcieni i CSS
| Odcień | Lime | Mint | Azure | Navy | Violet | Magenta | Brick | Amber | Olive | Turquoise | Slate | Brown |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 100 | #e8f3db | #d8f8ea | #d9e8fe | #ccd2dd | #ebdef0 | #ffd5eb | #f0d3d3 | #fff0cc | #e2e6d7 | #d6f7f4 | #e2e4e7 | #e8dad0 |
| 200 | #d1e7b7 | #b1f1d5 | #b2d2fe | #99a5bb | #d7bde2 | #ffabd8 | #e0a7a7 | #ffe199 | #c6cdaf | #aceee9 | #c4cad0 | #d1b5a1 |
| 300 | #b9db92 | #8beac1 | #8cbbfd | #667998 | #c39bd3 | #ff82c4 | #d17a7a | #ffd166 | #a9b488 | #83e6de | #a7afb8 | #b98f71 |
| 400 | #a2cf6e | #64e3ac | #65a5fd | #334c76 | #af7ac5 | #ff58b1 | #c14e4e | #ffc233 | #8d9b60 | #59ddd3 | #8995a1 | #a26a42 |
| 500 | #8bc34a | #3ddc97 | #3f8efc | #001f54 | #9b59b6 | #ff2e9d | #b22222 | #ffb300 | #708238 | #30d5c8 | #6c7a89 | #8b4513 |
| 600 | #6f9c3b | #31b079 | #3272ca | #001943 | #7c4792 | #cc257e | #8e1b1b | #cc8f00 | #5a682d | #26aaa0 | #56626e | #6f370f |
| 700 | #53752c | #25845b | #265597 | #001332 | #5d356d | #991c5e | #6b1414 | #996b00 | #434e22 | #1d8078 | #414952 | #53290b |
| 800 | #384e1e | #18583c | #193965 | #000c22 | #3e2449 | #66123f | #470e0e | #664800 | #2d3416 | #135550 | #2b3137 | #381c08 |
| 900 | #1c270f | #0c2c1e | #0d1c32 | #000611 | #1f1224 | #33091f | #240707 | #332400 | #161a0b | #0a2b28 | #16181b | #1c0e04 |
--bs-lime-100: #e8f3db; --bs-mint-100: #d8f8ea; --bs-azure-100: #d9e8fe; --bs-navy-100: #ccd2dd;
--bs-lime-200: #d1e7b7; --bs-mint-200: #b1f1d5; --bs-azure-200: #b2d2fe; --bs-navy-200: #99a5bb;
--bs-lime-300: #b9db92; --bs-mint-300: #8beac1; --bs-azure-300: #8cbbfd; --bs-navy-300: #667998;
--bs-lime-400: #a2cf6e; --bs-mint-400: #64e3ac; --bs-azure-400: #65a5fd; --bs-navy-400: #334c76;
--bs-lime-500: #8bc34a; --bs-mint-500: #3ddc97; --bs-azure-500: #3f8efc; --bs-navy-500: #001f54;
--bs-lime-600: #6f9c3b; --bs-mint-600: #31b079; --bs-azure-600: #3272ca; --bs-navy-600: #001943;
--bs-lime-700: #53752c; --bs-mint-700: #25845b; --bs-azure-700: #265597; --bs-navy-700: #001332;
--bs-lime-800: #384e1e; --bs-mint-800: #18583c; --bs-azure-800: #193965; --bs-navy-800: #000c22;
--bs-lime-900: #1c270f; --bs-mint-900: #0c2c1e; --bs-azure-900: #0d1c32; --bs-navy-900: #000611;
--bs-violet-100: #ebdef0; --bs-magenta-100: #ffd5eb; --bs-brick-100: #f0d3d3; --bs-amber-100: #fff0cc;
--bs-violet-200: #d7bde2; --bs-magenta-200: #ffabd8; --bs-brick-200: #e0a7a7; --bs-amber-200: #ffe199;
--bs-violet-300: #c39bd3; --bs-magenta-300: #ff82c4; --bs-brick-300: #d17a7a; --bs-amber-300: #ffd166;
--bs-violet-400: #af7ac5; --bs-magenta-400: #ff58b1; --bs-brick-400: #c14e4e; --bs-amber-400: #ffc233;
--bs-violet-500: #9b59b6; --bs-magenta-500: #ff2e9d; --bs-brick-500: #b22222; --bs-amber-500: #ffb300;
--bs-violet-600: #7c4792; --bs-magenta-600: #cc257e; --bs-brick-600: #8e1b1b; --bs-amber-600: #cc8f00;
--bs-violet-700: #5d356d; --bs-magenta-700: #991c5e; --bs-brick-700: #6b1414; --bs-amber-700: #996b00;
--bs-violet-800: #3e2449; --bs-magenta-800: #66123f; --bs-brick-800: #470e0e; --bs-amber-800: #664800;
--bs-violet-900: #1f1224; --bs-magenta-900: #33091f; --bs-brick-900: #240707; --bs-amber-900: #332400;
--bs-olive-100: #e2e6d7; --bs-turquoise-100: #d6f7f4; --bs-slate-100: #e2e4e7; --bs-brown-100: #e8dad0;
--bs-olive-200: #c6cdaf; --bs-turquoise-200: #aceee9; --bs-slate-200: #c4cad0; --bs-brown-200: #d1b5a1;
--bs-olive-300: #a9b488; --bs-turquoise-300: #83e6de; --bs-slate-300: #a7afb8; --bs-brown-300: #b98f71;
--bs-olive-400: #8d9b60; --bs-turquoise-400: #59ddd3; --bs-slate-400: #8995a1; --bs-brown-400: #a26a42;
--bs-olive-500: #708238; --bs-turquoise-500: #30d5c8; --bs-slate-500: #6c7a89; --bs-brown-500: #8b4513;
--bs-olive-600: #5a682d; --bs-turquoise-600: #26aaa0; --bs-slate-600: #56626e; --bs-brown-600: #6f370f;
--bs-olive-700: #434e22; --bs-turquoise-700: #1d8078; --bs-slate-700: #414952; --bs-brown-700: #53290b;
--bs-olive-800: #2d3416; --bs-turquoise-800: #135550; --bs-slate-800: #2b3137; --bs-brown-800: #381c08;
--bs-olive-900: #161a0b; --bs-turquoise-900: #0a2b28; --bs-slate-900: #16181b; --bs-brown-900: #1c0e04;
WCAG: klucz do dostępnych interfejsów
Kolory to nie tylko estetyka — muszą być czytelne. Dlatego każdy kolor i jego odcienie można przetestować pod kątem kontrastu. W projektach interfejsów zasada jest jasna: tekst musi mieć co najmniej poziom kontrastu 4.5:1, aby spełniać normy WCAG AA.
W praktyce oznacza to, że dla każdego koloru dobieramy odpowiedni kolor tekstu (najczęściej #000 lub #fff), testując kontrast. Takie podejście zastosowaliśmy w prezentacji HTML tej palety, w której każdy przycisk automatycznie wskazuje poziom zgodności.
Zastosowanie w Bootstrapie
Aby wprowadzić nowe kolory do własnego motywu Bootstrap, wystarczy dodać zmienne CSS do sekcji :root, a następnie zmapować je do klas utility lub komponentów.
Tekst
Przykładowa integracja, pozostałe kolory podobnie:
.text-lime {
color: #8bc34a;
}
To jest tekst lime
To jest tekst mint
To jest tekst azure
To jest tekst navy
To jest tekst violet
To jest tekst magenta
To jest tekst brick
To jest tekst amber
To jest tekst olive
To jest tekst turquoise
To jest tekst slate
To jest tekst brown
Linki
Przykładowa integracja:
.link-lime {
color: #8bc34a;
-webkit-text-decoration-color: #8bc34a;
text-decoration-color: #8bc34a;
}
.link-lime:hover, .link-lime:focus {
color: #a2cf6e;
-webkit-text-decoration-color: #a2cf6e;
text-decoration-color: #a2cf6e;
}
To jest link lime
To jest link mint
To jest link azure
To jest link navy
To jest link violet
To jest link magenta
To jest link brick
To jest link amber
To jest link olive
To jest link turquoise
To jest link slate
To jest link brown
Badge
Przykładowa integracja:
.text-bg-lime {
background-color: var(--bs-lime);
color: #000000;
}
Lime Mint Azure Navy Violet Magenta Brick Amber Olive Turquoise Slate Brown
Przyciski
Przykładowa integracja:
.btn-lime {
--bs-btn-color: #000;
--bs-btn-bg: #8bc34a;
--bs-btn-border-color: #8bc34a;
--bs-btn-hover-color: #000;
--bs-btn-hover-bg: #9ccc65; /* tint 15% */
--bs-btn-hover-border-color: #97c95c; /* tint 10% */
--bs-btn-focus-shadow-rgb: 118, 166, 63; /* shade 15% */
--bs-btn-active-color: #000;
--bs-btn-active-bg: #a2cf6e; /* tint 20% */
--bs-btn-active-border-color: #97c95c; /* tint 10% */
--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
--bs-btn-disabled-color: #000;
--bs-btn-disabled-bg: #8bc34a;
--bs-btn-disabled-border-color: #8bc34a;
}
Lime Mint Azure Navy Violet Magenta Brick Amber Olive Turquoise Slate Brown
Przyciski outline
Przykładowa integracja:
.btn-outline-lime {
--bs-btn-color: #8bc34a;
--bs-btn-border-color: #8bc34a;
--bs-btn-hover-color: #000;
--bs-btn-hover-bg: #8bc34a;
--bs-btn-hover-border-color: #8bc34a;
--bs-btn-focus-shadow-rgb: 139, 195, 74;
--bs-btn-active-color: #000;
--bs-btn-active-bg: #8bc34a;
--bs-btn-active-border-color: #8bc34a;
--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
--bs-btn-disabled-color: #8bc34a;
--bs-btn-disabled-bg: transparent;
--bs-btn-disabled-border-color: #8bc34a;
--bs-gradient: none;
}
Lime Mint Azure Navy Violet Magenta Brick Amber Olive Turquoise Slate Brown
Alerty
Przykładowa integracja:
:root, [data-bs-theme=light] {
--bs-lime-text-emphasis: #384e1e;
--bs-lime-bg-subtle: #e8f3db;
--bs-lime-border-subtle: #d1e7b7;
}
.alert-lime {
--bs-alert-color: var(--bs-lime-text-emphasis);
--bs-alert-bg: var(--bs-lime-bg-subtle);
--bs-alert-border-color: var(--bs-lime-border-subtle);
--bs-alert-link-color: var(--bs-lime-text-emphasis);
}
Zestawienie kolorów i kontrastów w tabeli
Zestawienie kontrastów i zgodności z WCAG AA (min. 4.5:1) oraz AAA (min. 7.0:1) dla normalnego tekstu.
| Klasa tekstu | bg-white (#ffffff) |
bg-light (#f8f9fa) |
bg-dark (#212529) |
bg-black (#000000) |
|---|---|---|---|---|
lime #8bc34a |
2.1 AA AAA | 1.99 AA AAA | 7.35 AA AAA | 10 AA AAA |
mint #3ddc97 |
1.77 AA AAA | 1.68 AA AAA | 8.73 AA AAA | 11.88 AA AAA |
azure #3f8efc |
3.24 AA AAA | 3.07 AA AAA | 4.76 AA AAA | 6.49 AA AAA |
navy #001f54 |
15.86 AA AAA | 15.05 AA AAA | 1.03 AA AAA | 1.32 AA AAA |
violet #9b59b6 |
4.67 AA AAA | 4.43 AA AAA | 3.3 AA AAA | 4.5 AA AAA |
magenta #ff2e9d |
3.43 AA AAA | 3.25 AA AAA | 4.5 AA AAA | 6.13 AA AAA |
brick #b22222 |
6.68 AA AAA | 6.33 AA AAA | 2.31 AA AAA | 3.14 AA AAA |
amber #ffb300 |
1.79 AA AAA | 1.7 AA AAA | 8.59 AA AAA | 11.7 AA AAA |
olive #708238 |
4.25 AA AAA | 4.03 AA AAA | 3.63 AA AAA | 4.94 AA AAA |
turquoise #30d5c8 |
1.83 AA AAA | 1.74 AA AAA | 8.43 AA AAA | 11.48 AA AAA |
slate #6c7a89 |
4.39 AA AAA | 4.17 AA AAA | 3.51 AA AAA | 4.78 AA AAA |
brown #8b4513 |
7.1 AA AAA | 6.73 AA AAA | 2.17 AA AAA | 2.96 AA AAA |
Zestawienie kontrastów i zgodności z WCAG AA (min. 3.0:1) oraz AAA (min. 4.5:1) dla dużego lub pogrubionego tekstu.
| Klasa tekstu | bg-white (#ffffff) |
bg-light (#f8f9fa) |
bg-dark (#212529) |
bg-black (#000000) |
|---|---|---|---|---|
lime #8bc34a |
2.1 AA AAA | 1.99 AA AAA | 7.35 AA AAA | 10 AA AAA |
mint #3ddc97 |
1.77 AA AAA | 1.68 AA AAA | 8.73 AA AAA | 11.88 AA AAA |
azure #3f8efc |
3.24 AA AAA | 3.07 AA AAA | 4.76 AA AAA | 6.49 AA AAA |
navy #001f54 |
15.86 AA AAA | 15.05 AA AAA | 1.03 AA AAA | 1.32 AA AAA |
violet #9b59b6 |
4.67 AA AAA | 4.43 AA AAA | 3.3 AA AAA | 4.5 AA AAA |
magenta #ff2e9d |
3.43 AA AAA | 3.25 AA AAA | 4.5 AA AAA | 6.13 AA AAA |
brick #b22222 |
6.68 AA AAA | 6.33 AA AAA | 2.31 AA AAA | 3.14 AA AAA |
amber #ffb300 |
1.79 AA AAA | 1.7 AA AAA | 8.59 AA AAA | 11.7 AA AAA |
olive #708238 |
4.25 AA AAA | 4.03 AA AAA | 3.63 AA AAA | 4.94 AA AAA |
turquoise #30d5c8 |
1.83 AA AAA | 1.74 AA AAA | 8.43 AA AAA | 11.48 AA AAA |
slate #6c7a89 |
4.39 AA AAA | 4.17 AA AAA | 3.51 AA AAA | 4.78 AA AAA |
brown #8b4513 |
7.1 AA AAA | 6.73 AA AAA | 2.17 AA AAA | 2.96 AA AAA |
Legenda: spełnione | nie spełnione
Sprawdź kontrast
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed aliquet tincidunt mi a efficitur. Etiam tincidunt tortor eget dignissim maximus. Sed facilisis, risus eget pulvinar mollis, justo turpis aliquam sem, a laoreet elit nibh ac purus. Sed a maximus tellus. Maecenas blandit mattis urna, ut luctus enim rutrum quis. Nullam et fringilla felis. Duis lacinia dapibus risus, a iaculis arcu dictum at. Aenean ligula ipsum, rutrum faucibus turpis vitae, hendrerit ultrices mi. Praesent consectetur convallis ultricies. Duis non sagittis lacus. Sed non efficitur ipsum. Integer placerat maximus nisi, scelerisque consectetur nisi efficitur at. Praesent arcu urna, vehicula et maximus at, feugiat id lectus.
Znaczenie kolorów i zastosowanie w webdesignie
Lime — #8bc34a
Zastosowanie w UI
- Idealny do akcentów i elementów podkreślających energię: etykiety, badge, CTA typu „Rozpocznij”.
- Pasuje do stron ekologicznych, zdrowotnych, technologicznych (szczególnie start-upowych).
Psychologia
- Kojarzy się z świeżością, naturą, optymizmem.
- Ożywia interfejs, ale jest mniej agresywny niż czysta zieleń.
Mint — #3ddc97
Zastosowanie w UI
- Doskonały do sekcji informacyjnych, tła kart, przycisków pomocniczych.
- Dobrze współgra z minimalistycznymi projektami i stronami o tematyce wellness, finansów lub edukacji.
Psychologia
- Zapewnia poczucie lekkości, spokoju i nowoczesności.
- Kolor budzący zaufanie, świeży i przyjazny.
Azure — #3f8efc
Zastosowanie w UI
- Standardowy kolor akcji: CTA, linki, ikonografia.
- Bardzo czytelny na jasnym tle – dobry kontrast.
Psychologia
- Symbolizuje zaufanie, stabilność i profesjonalizm.
- Idealny dla stron firmowych, SaaS, fintech.
Navy — #001f54
Zastosowanie w UI
- Tła headerów, stopki, przyciski premium, elementy o wysokiej hierarchii.
- Elegancki i formalny, świetny do stron korporacyjnych.
Psychologia
- Kojarzy się z autorytetem, powagą i głębią.
- Nadaje ton profesjonalizmu i stabilności.
Violet — #9b59b6
Zastosowanie w UI
- Akcenty kreatywne: tytuły, bannery, elementy dekoracyjne.
- Popularny w branżach beauty, lifestyle, sztuka, edukacja.
Psychologia
- Symbol kreatywności, luksusu i duchowości.
- Przyciąga uwagę, ale jest bardziej subtelny niż magenta.
Magenta — #ff2e9d
Zastosowanie w UI
- Akcentowe CTA, podkreślanie feature’ów, branding młodych marek.
- Dobrze działa w UI skierowanym do młodszego odbiorcy.
Psychologia
- Kolor pasji, energii, zabawy i ekspresji.
- Silnie pobudza, może dominować – stosować jako akcent.
Brick — #b22222
Zastosowanie w UI
- Przyciski ostrzegawcze (alternatywa dla bootstrapowego “danger”), akcenty retro.
- Sprawdza się w projektach z charakterem vintage lub rzemieślniczym.
Psychologia
- Budzi poczucie solidności, ciepła i siły.
- Mniej agresywny niż czysta czerwień, bardziej naturalny.
Amber — #ffb300
Zastosowanie w UI
- Podkreślenia ostrzeżeń, CTA, bannery promocyjne.
- Świetny w e-commerce jako kolor wyróżniający.
Psychologia
- Kojarzy się z energią, optymizmem, pewnością siebie.
- Pobudza do działania, ale nie jest tak alarmujący jak żółć lub czerwień.
Olive — #708238
Zastosowanie w UI
- Tła kart, infoboxy, elementy „eko” lub „natural”.
- Popularny w branżach wellness, ekologicznych, outdoorowych.
Psychologia
- Symbol stabilności, natury, harmonii.
- Neutralny, spokojny i ciepły – dobry do projektów spokojnych, niekrzykliwych.
Turquoise — #30d5c8
Zastosowanie w UI
- Bannery, CTA, grafiki informacyjne, sekcje powitalne.
- Bardzo nowoczesny kolor – dobry do startupów i produktów cyfrowych.
Psychologia
- Kojarzy się z czystością, kreatywnością, jasnością myślenia.
- Relaksujący, ale jednocześnie dynamiczny.
Slate — #6c7a89
Zastosowanie w UI
- Tekst pomocniczy, bordery, elementy UI o niskiej hierarchii.
- Uniwersalne tło dla typografii – bardzo elegancki.
Psychologia
- Kolor neutralny, profesjonalny, wyważony.
- Sugeruje stabilność i nowoczesność.
Brown — #8b4513
Zastosowanie w UI
- Akcenty dla projektów rustykalnych, rzemieślniczych, naturalnych.
- Dobre tło dla produktów spożywczych, kawy, drewna.
Psychologia
- Kolor ziemi, stabilności, ciepła i tradycji.
- Buduje zaufanie i autentyczność.
Podsumowanie
Stworzenie własnej palety kolorów daje ogromną swobodę projektową. Dzięki zdefiniowaniu bazowych kolorów, wygenerowaniu ich odcieni oraz zapewnieniu zgodności z WCAG otrzymujemy kompletny i profesjonalny zestaw, który można łatwo zintegrować z Bootstrapem.