Blog. Just Blog

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

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Обработка системных цветов на JavaScript
Обработка системных цветов на JavaScript

Еще со времен CSS2 появилась возможность использовать в качестве стиля цвета так называемые системные цвета, то есть значения из текущей цветовой схемы пользователя. Таким образом можно оформлять свои web-приложения, чтобы они не выбивались из привычной пользователю цветовой гаммы.

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

Название цветаПримерОписание
ActiveBorderграница активного окна
ActiveCaptionзаголовок активного окна
AppWorkspaceфоновый цвет интерфейса нескольких документов
Backgroundфоновый цвет рабочего стола
ButtonFaceлицевой цвет трехмерных элементов
ButtonHighlightтемная тень для трехмерных элементов (для краев, обращенных в сторону от источника света)
ButtonShadowцвет тени для трехмерных элементов
ButtonTextтекст на кнопках
CaptionTextтекст в заголовке, поле размера и поле стрелки прокрутки
GrayTextотключенный текст
Highlightвыделенный элемент в элементе управления
HighlightTextвыделенный текст в элементе управления
InactiveBorderграница неактивного окна
InactiveCaptionзаголовок неактивного окна
InactiveCaptionTextцвет текста в неактивном заголовке
InfoBackgroundфоновый цвет для элементов всплывающей подсказки
InfoTextцвет текста для элементов всплывающей подсказки
Menuфоновый цвет меню
MenuTextтекст в меню
Scrollbarсерая область полосы прокрутки
ThreeDDarkShadowтемная тень для трехмерных элементов
ThreeDFaceлицевой цвет трехмерных элементов
ThreeDHighlightцвет выделения для трехмерных элементов
ThreeDLightShadowсветлый цвет для трехмерных элементов (для краев, обращенных к источнику света)
ThreeDShadowтемная тень для трехмерных элементов
Windowфоновый цвет окна
WindowFrameрамка окна
WindowTextтекст в окнах

И вот мы плавно подошли к задаче. Если цвета отличаются на разных устройствах, то каким образом можно определить, чему же соответствует тот или иной системный цвет в текущий момент времени? Сделать это можно при помощи вот такого скрипта на JavaScript:
  1. <script type="text/javascript">
  2. function system_color_to_hex(color_name) {
  3.     var div=document.createElement('div');
  4.     div.style.display='none';
  5.     div.style.color=color_name;
  6.     document.body.appendChild(div);
  7.     var styles=window.getComputedStyle(div);
  8.     for (var hex='',
  9.         color=styles.color.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),
  10.         i=1i<4i++) {
  11.         hex+=('0'+parseInt(color[i]).toString(16)).slice(-2).toUpperCase();
  12.     }
  13.     hex='#'+hex;
  14.     document.body.removeChild(div);
  15.  
  16.     return hex;
  17. }
  18. </script>
В качестве параметра передается название цвета, на выходе значение цвета в традиционном CSS-стиле. Примеры вызова скрипта:
  1. console.log(system_color_to_hex('ButtonHighlight'));
  2. // #F0F0F0 (значение может быть другим)
  3. console.log(system_color_to_hex('rgb(100, 69, 12)'));
  4. // #64450C
  5. console.log(system_color_to_hex('DarkSlateGrey'));
  6. // #2F4F4F
Кроме системных цветов этот скрипт может обрабатывать записи в формате RGB, а также определять цвета по их названию.

Поделиться ссылкой ВКонтакте
Просмотров: 203 | Комментариев: 1

Комментарии

Отзывы посетителей сайта о статье
Лестер Глючный (15.12.2024 в 17:07):
Работает даже в неподдерживаемом Firefox при browser.display.document_color_use=2 & resistFingerprinting=false

Жалко, тысячи (скорее, миллионы) сайтов забили на это, ссылаясь на пользователей Android или iOS.
На некоторых сайтах забыли даже про пару 'ButtonFace'|'ThreeDFace'|'ThreeDLightShadow' + 'ButtonText' — добавили поддержку "высокого контраста" так, что при его включении найти хоть какие-нибудь нужные кнопки становится гораздо труднее :))

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0044 сек.) / Память: 4.5 Mb
Наверх