Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Создание функции для генерации противоположного цвета в CSS

Быстрый ответ

Для генерации противоположного цвета в JavaScript используйте следующий код:

JS
Скопировать код
function invertHex(hex) {
  return '#' + (Number(`0x1${hex}`) ^ 0xFFFFFF).toString(16).substr(1).toUpperCase();
}

// Пример использования: получим комплементарный цвет.
const oppositeColor = invertHex('1a2b3c'); // Результат: '#E5D4C3'

С помощью этого кода вы можете инвертировать шестнадцатеричный код цвета, используя операцию XOR со значением 0xFFFFFF. В результате мы получаем комплементарный цвет в шестнадцатеричной форме. Не забывайте исключать # при передаче исходного цвета в функцию.

Кинга Идем в IT: пошаговый план для смены профессии

Техника создания противоположного цвета

Комплементарные цвета находятся на противоположных концах цветового круга: они как Том и Джерри — всегда в противостоянии, но идеально дополняют друг друга, создавая высокий контраст и делая их легко отличимыми. В модели RGB, которая позволяет компьютеру изображать различные цвета путём смешивания красного, зелёного и синего, инвертирование каждого из этих компонентов позволяет создать комплементарный цвет.

Конвертация между форматами hex и RGB

В web-разработке шестнадцатеричые коды широко используются для представления цветов. Hex-коды являются смесью значений красного, зеленого и синего, вместе они формируют множество различных оттенков.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Процесс инвертирования цвета

Чтобы получить противоположный цвет, каждый из компонентов RGB вычитается из максимально возможного значения — 255. Но можно также применить операцию XOR с 0xFFFFFF для быстрой инверсии.

Учет различных цветовых форматов

Цвета могут быть представлены не только в формате hex, но и в RGB. Поэтому важно иметь функции конвертеры, которые могут переводить цвета из формата hex в RGB и обратно.

Дополнение: гвоздики не обязательны

В некоторых случаях после инверсии hex-формат может получиться короче требуемых шести символов. Ваша задача — добавить недостающие нули в начало строки, чтобы сформировать корректный шестнадцатеричный код.

Очки для контрастности: опция "bw"

Если нужен цвет с высокой контрастностью, а не просто противоположный, можно использовать опцию bw, она определяет яркость исходного цвета и выбирает черный или белый для получения наиболее контрастного сочетания.

Работа с динамичными цветами

В сценариях, где требуется поддержание видимости текста на фоне, цвет которого постоянно меняется, желательно использовать обработчики событий. Они позволят отслеживать изменения цвета и своевременно корректировать отображение текста.

Применение CSS для инверсии цвета

CSS также предлагает инструменты для инверсии цветов, например, свойство mix-blend-mode: difference; или filter с параметром invert(1). Этот подход позволяет достичь желаемого эффекта более элегантно и быстро.

Визуализация

Давайте вообразим процесс инвертирования цвета как переключение света:

Markdown
Скопировать код
Исходный цвет: 💡 **[Включен]** – Яркий жёлтый
Комплементарный цвет: 💡 **[Выключен]** – Глубокий синий

В контексте работы с цветами:

  1. Каждый цвет имеет определенный уровень яркости.
  2. При "переключении" вы отправляете цвет "в спячку".
  3. Ваш "Яркий жёлтый" теперь становится "Глубоким синим".
plaintext
Скопировать код
                ________________
               |                |
Яркий жёлтый   | ⚪️ -----> 🔵  |  Глубокий синий
               |________________|
              💡 Переключатель цвета 💡

Как видите, ничего особо сложного. Все операции аналогичны операции переключения света. 💁‍♀️

Лучшие практики и подводные камни

Обеспечение видимости

Осуществляя инверсию цветов, важно гарантировать доступность информации для пользователей с визуальной недостаточностью или при недостаточной контрастности между элементами. С использованием формулы r * 0.299 + g * 0.587 + b * 0.114 можно определить, какой цвет текста лучше всего читается на выбранном фоне.

Поддержание читаемости кода

Делайте свой код чистым, понятным и модульным, избегайте излишеств. Это улучшит читаемость кода и облегчит дальнейшую поддержку проекта.

Совместимость с различными браузерами

Прежде чем использовать свойства CSS mix-blend-mode и filter, проверьте их поддержку браузерами. Тот факт, что эти свойства не поддерживаются во всех браузерах, может привести к некоторым различиям в визуальном отображении.

Завершение

Внедрение кода в продакшн

Вы можете найти готовые решения для переноса инверсии цвета в продакшн на таких ресурсах, как GitHub. Они легко интегрируются и настраиваются для использования в проектах.

Обрабатывать динамические входы цвета

Различные функции должны грамотно работать с разнообразными и динамически изменяющимися цветами, будь то из палитры цветов или созданные алгоритмически.

Важность проверки изображений

Презентация образцов с результатами работы функции инверсии цвета поможет лучше понять, как процесс происходит на практике.

Обработка событий в коде

В небольших web-проектах встроенные обработчики событий могут обеспечивать обратную связь. Однако чрезмерное использование таких обработчиков может усложнить ваш код и нарушить его структуру.

Полезные материалы

  1. MDN Web Docs: <color> – CSS: Каскадные таблицы стилей — всё о значениях цвета в CSS.
  2. W3C: Техники оценки доступности и инструменты восстановления — информация о доступности и контрастности цветов.
  3. Smashing Magazine: Доступность и пользовательский опыт для пользователей с дальтонизмом — как UX воздействует на пользователей с дальтонизмом.
  4. 24 ways:Расчет контрастности цвета — варианты выбора цветовой контрастности для успешного дизайна.
  5. ColorHexa: Цветной гекс — инструмент для работы с цветовой палитрой.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой код используется для инвертирования цвета в JavaScript?
1 / 5